У меня настроен балансировщик нагрузки 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 и переписать, как запрос перенаправляется на сервер?
Спасибо!