Какова хорошая стратегия держать мой сайт в сети, когда S3 выходит из сети?
Если S3 US East 1 переходит в автономный режим, как мне настроить / структурировать мое приложение, чтобы не переводить весь сайт в автономный режим?
Каковы лучшие стратегии для диверсификации в такой ситуации?
amazon-web-services
amazon-s3
jcolebrand
источник
источник
Ответы:
В марте 2015 года Amazon AWS объявила о поддержке репликации S3 в разных регионах. Когда определенный регион в S3 переходит в автономный режим, вы можете обслуживать файлы с вашего зеркала в другом регионе.
источник: https://aws.amazon.com/blogs/aws/new-cross-region-replication-for-amazon-s3/
Практика поддержания вашей инфраструктуры в сети путем переключения на другой регион является сложной, но S3 является относительно небольшим и простым компонентом. У Netflix есть отличная статья об их опыте с Chaos Gorilla.
Это также относится к ухудшению качества обслуживания, например, к увеличению задержки. Не только когда служба, от которой вы зависите, полностью отключена. Netflix также имеет статью на эту тему: Chaos Engineering Upgraded .
источник
То, что вы просите, это, в основном, высокая доступность. Для обеспечения высокой доступности системы вам необходимы три вещи:
Устранить отдельные точки отказа
В случае S3, точка № 1 адресована, как указал Евгений, межрегиональной репликацией S3 .
Репликация, однако, не является мгновенной, и вы захотите проверить, хотите ли вы знать о репликации вашего приложения или нет. В случае сбоя, возможно, что то, что было записано в исходную корзину, еще не было (не реплицировано) в целевую корзину. Вы должны подумать, как приложение будет обрабатывать такой сценарий. Это действительно зависит от типа данных, что делается с ними и (потенциально) конечных пользователей или ожиданий руководства.
Механизм переключения с конечной точки на другую
Для S3 это означает, что в случае сбоя вы хотите, чтобы приложение прекратило чтение и запись из / в корзину A и использовало вместо нее B.
Насколько я знаю, пока это зависит от вас. Некоторые другие сервисы AWS предлагают полностью прозрачные средства отработки отказа, но в данный момент я не знаю об этом для S3.
Есть разные способы достичь этого. Одним из примеров является использование прокси, который будет направлять трафик к соответствующему сегменту. Во время сбоя вы должны обновить / изменить прокси-сервер для маршрутизации трафика в корзину, на которую не влияет сбой. Другим примером может быть динамическая конфигурация вашего приложения и сохранение ее в хранилище значений ключей. Если приложение считывает хранилище KV для обновленных свойств достаточно часто, вы можете переключаться между тем, где вы читаете и записываете (например, Spring Cloud поддерживает прослушиватель «EnvironmentChange»).
Способ обнаружения сбоев
Ну, это легко, я думаю. Просто установите цикл записи + чтения и предупредите, как только что-то не так :)
Закрытие заметок
источник