Рейтинг:0

503 Служба недоступна, когда балансировщик нагрузки активен

флаг in

У нас есть два облачных сервера от Hetzner. Веб-сервер Nginx. Оба сервера идентичны (аппаратное обеспечение, программное обеспечение и наше веб-приложение).

Сертификат LetsEncrypt установлен на обоих серверах. Nginx настроен на перенаправление http к https.

DNS-сервер — Cloudflare. Мы переключаем IP-адрес записи A нашего домена вручную с сервера A на сервер B или наоборот.

Теперь мы создали балансировщик нагрузки в Hetzer с нашими двумя серверами и одним сервисом: https 443 -> 443.

Как только мы меняем IP-адрес записи A нашего домена на IP-адрес LB, мы получаем сервис 503 недоступен.

Пожалуйста помогите.

флаг in
Читайте файлы журналов на вашем веб-сервере и балансировщике нагрузки.
Saïmonn avatar
флаг in
Если вы используете управляемый балансировщик нагрузки Hetzner, где-то в их веб-интерфейсе должен быть какой-то способ получить журналы и/или статус внутренних подключений (к серверам A и B). Кроме того, обычно балансировщик нагрузки выполняет завершение SSL, поэтому вам может потребоваться настроить там сертификат let'encrypt. https://community.hetzner.com/tutorials/configure-lb-cert-with-external-domain
Omid Shojaee avatar
флаг in
@ Saïmonn Спасибо. Судя по всему лога нет, а сертификат уже настроен. Я думаю, что нам не следует устанавливать SSL-сертификаты на сервер, и мы должны позволить LB справиться с этим, иначе я не понимаю, зачем LB нужен ЦС и КЛЮЧ моего сертификата.
Saïmonn avatar
флаг in
@OmidShojaee, в этом случае ваш балансировщик нагрузки должен быть настроен на использование serverA и serverB в качестве HTTP-сервера на порту 80, а не 443.
Omid Shojaee avatar
флаг in
@ Saïmonn Итак, LB для http 80 -> 80, а Nginx обрабатывает 80 -> 443, верно?
Рейтинг:0
флаг in

Если вы хотите использовать балансировщик нагрузки для терминации SSL, ваш nginx не должен прослушивать tcp-порт 443 и иметь сертификат. nginx должен прослушивать только порт 80, а балансировщик нагрузки должен:

Для управления перенаправлением http на https, если балансировщики нагрузки могут это сделать, это лучший вариант. Если нет, то на стороне nginx вам нужно будет определить, подключается ли клиент через https или http (иногда балансировщик нагрузки может установить заголовок с этой информацией), и перенаправить, если это открытый текст http.

Omid Shojaee avatar
флаг in
Спасибо. Это тип ответа, который я искал.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.