Рейтинг:0

Несколько бэкендов HAProxy Режим TCP/HTTP работает только для одного бэкэнда

флаг ru
слушать mqtt-ssl
    bind *:8883 ssl no-sslv3 crt ​​/my.pem проверить требуемый ca-файл /my/pem/all_cas.pem crl-file /my/pem/all_crls.pem
    режим TCP
    опция tcplog
    журнал глобальный
    максконн 50000
    tcp-запрос проверка-задержка 30 с
    use_backend pki, если только { req.payload(0,0),mqtt_is_valid}
    default_backend emqx_k8s_svc

бэкенд pki
    режим http
    сервер pki.my.domain someIP: 443 ssl проверить нет

серверная часть emqx_k8s_svc
    режим TCP
    журнал глобальный
    сервер emqx1 emqx-ee.emqx:1883 проверить между 30s downinter 30s падение 1 повышение 1

Учитывая приведенный выше фрагмент haproxy.cfg, я подтверждаю следующую проблему:

Когда я делаю curl/wget на адресе прослушивания, запрос обычно перенаправляется на бэкенд pki , как это должно. Но, в то же время, при попытке подключения к серверная часть emqx_k8s_svc клиент Mosquitto остается заблокированным при «отправке CONNECT», и соединение не устанавливается.

Как я могу иметь условие, что если полезная нагрузка запроса имеет тип MQTT, то перенаправить ее в default_backend, и если соединение НЕ MQTT (скажем, http-клиент), переадресовать его на бэкенд pki .

Я также пробовал следующее, без разрешения:

tcp-запрос проверка-задержка 30 с
use_backend pki, если !{req.payload(0,0),mqtt_is_valid}
use_backend emqx_k8s_svc, если {req.payload(0,0),mqtt_is_valid}
default_backend emqx_k8s_svc
------------------------------
tcp-запрос проверка-задержка 10 с
use_backend pki, если { ssl_fc }
use_backend emqx_k8s_svc, если {req.payload(0,0),mqtt_is_valid}
default_backend emqx_k8s_svc

ПРИМЕЧАНИЕ: все работает в среде Kubernetes, за исключением бэкенд pki который находится в другом месте (но доступен) - версия HAProxy: 2.5

флаг jp
а ваша версия `haproxy` есть?
Eos Antigen avatar
флаг ru
@AlexD извините, я только что отредактировал сообщение, это 2.5

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

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