ACL-списки HAProxy на внешнем интерфейсе отправляются на другой сервер - PullRequest
1 голос
/ 09 мая 2019

У меня настроен балансировщик нагрузки HAProxy с высокой доступностью и настроен keepalived.

В моем интерфейсе я хотел бы настроить различные ACL, которые смотрят на путь URI, отправляемый в HAProxy, и я хотел бы отправить запрос определенному бэкэнду на основе пути.

Причина в том, что у меня есть 4 разные пары веб-приложений, которые я хотел бы сделать доступными через HAProxy VIP.

Мне удалось сделать эту работу для одного из веб-приложений, но добавление других не работает.

Если перейти к http://haproxy_ip:port/pulse, загружается веб-приложение из импульса бэкэнда.

Если я перейду к http://haproxy_ip:port/pulse_tim, я получу ошибку 404. Не найдено.

Все веб-приложения, настроенные в бэкэнде, доступны через http://ip:port/pulse.

frontend http_front
bind haproxy_ip:port
stats uri /haproxy?stats
acl is_pulse_uri path_beg /pulse
acl is_pulse_uri_tim path_beg /pulse_tim
use_backend pulse if is_pulse_uri
use_backend pulse_tim if is_pulse_uri_tim
default_backend http_back

backend http_back
balance roundrobin
hash-type consistent djb2
stick-table type string len 32 size 1M peers LB
stick on req.cook(JSESSIONID)
stick store-response res.cook(JSESSIONID)
server host1 xx.xx.xx.xx:xxxx check cookie host1
server host2 xx.xx.xx.xx:xxxx check cookie host2

backend pulse
server pulse ip:port check
server pulse ip:port check backup

backend pulse_tim
server pulse_tim ip:port check
server pulse_tim ip:port check backup

Это на самом деле не работает, потому что мое веб-приложение находится в http://ip:port/pulse, и когда я пытаюсь сопоставить URI / pulse_tim, тогда haproxy перенаправляет это на внутренний сервер, как http://pulse_tim_ip:port/pulse_tim вместо http://pulse_tim:port/pulse?

Если да, как я могу найти URI в ACL и переписать, как запрос перенаправляется на сервер?

Спасибо!

...