Haproxy на маршруте Openshift с завершением SSL возвращает 503

Вопрос или проблема

Мне нужно развернуть haproxy в VM, который будет выполнять обратное проксирование к маршруту Openshift.

Маршрут openshift работает отлично: curl -kvvv https://myocproute.mycompany.net
даже с того же сервера, на котором установлен haproxy.

Я настроил свой haproxy следующим образом

global
  log stdout format raw local0 debug
  daemon
  maxconn 1024

defaults
  log global
  option httplog
  timeout client 60s
  timeout connect 60s
  timeout server 60s

frontend fe_ocp
  mode http
  bind :8443 ssl crt /cert/cert.pem verify none
  default_backend be_ocp

backend be_ocp
  mode http
  http-request set-header Host myocproute.mycompany.net
  server myocproute.mycompany.net myocproute.mycompany.net:443 ssl port 443 verify none sni req.hdr(myocproute.mycompany.net)

Если я выполняю команду curl -kvvv https://localhost:8443, она возвращает 503, что исходит от Openshift. Следовательно, haproxy может перенаправлять трафик на OCP.

Поскольку маршрут на OCP работает (если я обращаюсь к нему напрямую), я подозреваю, что haproxy не отправляет правильный host / sni на openshift, и именно поэтому в приведенной выше конфигурации указаны host и sni в бэкенде, но это не помогло до сих пор.

Вот журнал haproxy

172.18.6.83:36070 [10/Nov/2024:09:35:45.199] fe_ocp~ be_ocp/myocproute.mycompany.net 0/0/9/0/9 503 4266 - - ---- 3/1/0/0/0 0/0 "GET https://localhost:8443/ HTTP/2.0"

Как я могу это исправить?

Ответ или решение

Для решения проблемы с возвратом кода 503 при использовании HAProxy для проксирования к маршруту OpenShift с SSL-терминацией, необходимо тщательно проанализировать конфигурацию и выявить возможные причины возникновения данной ошибки.

Анализ проблемы

Ошибка 503 (Service Unavailable) указывает на то, что сервер не может обработать запрос в данный момент. В данном случае, HAProxy успешно получает запрос, но по какой-то причине не может передать его на OpenShift, либо OpenShift не может выполнить обработку запроса. Поскольку вы подтвердили, что прямой доступ к маршруту OpenShift работает корректно, следует сфокусироваться на конфигурации HAProxy.

Проверка конфигурации HAProxy

Ваша конфигурация HAProxy содержит следующие ключевые элементы:

  1. Frontend: Контролирует входящие запросы на порту 8443 с использованием SSL.
  2. Backend: Указывает, как передавать запросы к OpenShift и как настроить заголовки.

Прежде всего, обратим внимание на настройки в блоке backend:

backend be_ocp
  mode http
  http-request set-header Host myocproute.mycompany.net
  server myocproute.mycompany.net myocproute.mycompany.net:443 ssl port 443 verify none sni req.hdr(myocproute.mycompany.net)

Рекомендации по исправлению

  1. Проверка SNI: Убедитесь, что вы правильно настраиваете SNI. В конфигурации вы используете sni req.hdr(myocproute.mycompany.net), однако, возможно, стоит попробовать просто указывать имя хоста напрямую:

    server myocproute.mycompany.net myocproute.mycompany.net:443 ssl verify none sni myocproute.mycompany.net
  2. Проверка доступности OpenShift: Убедитесь, что HAProxy имеет доступ к OpenShift маршруту. Выполните команду ping или попробуйте curl из HAProxy к OpenShift:

    curl -kv https://myocproute.mycompany.net
  3. Настройки SSL: Убедитесь, что сертификаты корректно прописаны и соответствуют настройкам, используемым в HAProxy. Если у вас самоподписанные сертификаты, попробуйте временно отключить проверку сертификатов, чтобы исключить это как возможную причину проблемы.

    server myocproute.mycompany.net myocproute.mycompany.net:443 ssl verify none
  4. Проверка протоколов: Возможно, стоит уточнить используемый протокол. Попробуйте изменить mode http на mode tcp в backend, что может помочь обеспечить более прозрачную передачу данных:

    backend be_ocp
     mode tcp
     server myocproute.mycompany.net myocproute.mycompany.net:443 ssl verify none
  5. Логи HAProxy: Внимательно просмотрите логи HAProxy на наличие дополнительных указаний. Например, проверьте, присутствуют ли ошибки соединения с OpenShift или ошибки SSL.

Заключение

Корректировка настроек HAProxy и исключение возможных факторов, таких как неправильные заголовки, ошибки в SNI или проблемы с сетевой доступностью, обеспечит успешное проксирование запросов к OpenShift маршруту. Следуя этим рекомендациям, вы сможете устранить ошибку 503 и настроить надежное и безопасное соединение между HAProxy и OpenShift.

Оцените материал
Добавить комментарий

Капча загружается...