Я ищу решение для балансировки нагрузки с задержкой (или географией) в сочетании с динамической отработкой отказа.
Инфраструктура базируется на 3 выделенных серверах от OVH. Серверы расположены в 3 разных географических точках (Канада, Франция и Австралия).
Я пытаюсь достичь нескольких вещей:
Маленькая иллюстрация проблемы
Меня интересует только HTTP-трафик. Каждый запрос должен идти на сервер, ничего нельзя кэшировать, поскольку ответ очень динамичный.
Я уже посмотрел на AWS Route 53, это здорово, но это всего лишь DNS, поэтому он не решит проблему переключения при отказе.
В OVH есть балансировка IP-нагрузки, но я не могу заставить ее работать, и я не нашел варианта решения проблемы 1.
Меня интересуют любые подсказки или решения, включая использование сторонних сервисов.
Я также рассматриваю возможность купить 3 небольших сервера VPS в каждом месте (рядом с каждым из основных серверов), которые будут выступать в качестве шлюза. В таком решении я могу использовать AWS Route 53 для балансировки нагрузки с задержкой для серверов VPS, и серверы будут обрабатывать отказоустойчивость. По определению они будут активны 100% времени, в то время как основные серверы будут перезагружены без простоя службы.
Чтобы обновить свой ответ - все это необязательно. Кеширование можно отключить, чтобы разрешить динамические ответы. и трафик может обслуживаться через HTTP только при желании.
Одно из решений, которое мне очень нравится, - Cloudflare. Он в значительной степени отвечает на все ваши проблемы, если вы используете HTTP / HTTPS и никакой другой протокол, не упомянутый в вашем исходном вопросе.
Решение проблемы обслуживания контента на основе геолокации -
CF в основном может направлять трафик, который вы отправляете через него, с помощью своего диспетчера трафика. Это найдет самый быстрый маршрут к одному из ваших исходных серверов и поддержит его. Однако, если что-то не удалось, и вам нужно было передать контент из другого места - CF также может либо балансировать нагрузку на несколько серверов в одном месте, либо обслуживать со следующего ближайшего сервера.
Решение проблемы аварийного переключения -
CF, как упоминалось ранее, отлично справляется с проверкой связи с исходными серверами для обновления статуса и проверки их соответствия назначению. Но чтобы немного расширить это, CF также кэширует определенные типы активов, которые проходят через его прокси. Это их функция «всегда в сети», когда даже если исходный сервер находится в автономном режиме, он будет пытаться передать этот контент на сервер независимо.
Решение проблемы обновления серверов -
Лично я проектирую все свои среды вокруг контейнерного дизайна Docker, который позволяет мне делать «скользящие обновления». Таким образом, я могу обновлять, уничтожать, делать все, что в разумных пределах, с образом моего приложения и знать, что он будет распространяться безопасным образом. Очевидно, что при необходимости это также можно откатить. Но опять же, если это невозможно, CF может позволить вам развернуть дополнительную виртуальную машину в этом географическом местоположении для обновления образа и эффективно заменить DNS.
Решение проблемы перезаписи HTTP -> HTTPS -
CF также позволяет применять правила к трафику. Одно из этих средств означает, что вы можете переписать с помощью HTTP-ответа 301 весь HTTP-трафик на HTTPS (хотя можете настроить, как хотите).
(Предполагается, что все ваши записи DNS, относящиеся к этому, проходят через DNS CF и имеют «оранжевый цвет»).
Также несколько полезных ресурсов, которые укажут вам правильное направление - Cloudflare Traffic Manager