Назад | Перейти на главную страницу

Балансировка нагрузки с задержкой + отказоустойчивое решение

Я ищу решение для балансировки нагрузки с задержкой (или географией) в сочетании с динамической отработкой отказа.

Инфраструктура базируется на 3 выделенных серверах от OVH. Серверы расположены в 3 разных географических точках (Канада, Франция и Австралия).

Я пытаюсь достичь нескольких вещей:

  1. Клиент, обращающийся к службе, перенаправляется на ближайший сервер, поэтому ответ будет быстрым.
  2. Если один сервер не работает, запрос перейдет на другой сервер, и в конечном итоге пользователь получит ответ.
  3. В условиях аварийного переключения более важно, чтобы пользователь получил ответ, а не быстро.
  4. Мне нужно время от времени перезагружать сервер для обновления или чего-то еще. Так что магия должна быть вне основных серверов.
  5. Трафик проходит через HTTPS, но HTTP должен перенаправлять на HTTPS.

Маленькая иллюстрация проблемы

Меня интересует только 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