Веб-сервис — обработка трафика в зависимости от региона

Я нахожусь в процессе создания веб-службы RESTful, которая будет работать на AWS с использованием балансировщиков нагрузки, автоматического масштабирования и т. д.

Однако в рамках службы мне необходимо обеспечить минимальную задержку клиентских запросов. Поэтому я хочу, чтобы потенциальные пользователи в США получили доступ к инстансам EC2 в США, а пользователи в Европе — к серверам в Европе.

Какова наилучшая практика для достижения этого? Предполагая, что клиенты просто получают доступ к какой-либо конечной точке API (например, с помощью curl), как мне направить трафик?

Это настройка DNS, которая принадлежит моему провайдеру доменных имен?

Или у меня есть первоначальный балансировщик нагрузки, который может перенаправлять на соответствующий региональный балансировщик нагрузки? (вроде поражения цели?!)

Или мне нужно будет реализовать какую-то логику на стороне клиента?

Спасибо!


person fatlog    schedule 07.01.2016    source источник


Ответы (1)


Первоначальный балансировщик нагрузки, который выполняет перенаправления, будет очень медленным - по сути, каждый запрос должен быть повторен, и будут задействованы два разных SSL-соединения... и логика на стороне клиента будет головной болью при обслуживании и не обеспечивает прямого аварийного переключения. механизм.

Маршрутизация на основе задержки

Если ваше приложение размещено на инстансах Amazon EC2 в нескольких регионах Amazon EC2, вы можете уменьшить задержку для своих пользователей, обслуживая их запросы из региона Amazon EC2, для которого сетевая задержка наименьшая. Маршрутизация на основе задержки Amazon Route 53 позволяет использовать DNS для маршрутизации пользовательских запросов в регион Amazon EC2, что обеспечит вашим пользователям самый быстрый ответ.

http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latency

Кроме того, вы можете интегрировать проверки работоспособности HTTP в микс, так что, если, например, британские серверы не пройдут проверку работоспособности, Route 53 исключит их из микса и вернет ответы тем клиентам, которые отправят их на другой регион, пока ближайший регион не вернется в сеть.

При необходимости использование CloudFront (с отключенным кэшированием, если это необходимо) на внешнем интерфейсе и маршрутизация на основе задержки к вашим кластерам серверов на внутреннем уровне поможет устранить некоторые подводные камни балансировки нагрузки, строго основанной на DNS, а именно: некоторые http-библиотеки неуместно кэшируют ответы DNS слишком долго — иногда разрешая адреса по первому запросу и сохраняя это начальное значение на неопределенный срок (до перезапуска). Это неправильное поведение, но удачи вам в том, чтобы объяснить пользователю вашего сервиса, что проблема в нем, а не в вас. CloudFront в значительной степени убирает это за вас, потому что клиенты будут маршрутизироваться к ближайшему краю CloudFront, который затем перенаправит запрос по сети AWS в ближайший (к этому краю CloudFront) кластер на основе текущих ответов DNS. Маршрут 53 был предоставление.

person Michael - sqlbot    schedule 08.01.2016