В моем сценарии я должен переключить серверы на основе содержащей строки URL-адреса &mode=edit
или &mode=create
между моими серверами, чтобы сбалансировать нагрузку. Моя конфигурация создается с помощью скрипта примерно из 100 разных URL / IP. Мой текущий способ с одним интерфейсом и двумя бэкэндами довольно длинный, и огромное количество проверок работоспособности не подходит для моих серверов ...
Как мне собрать все это в один listen
вместо того frontend
? Я не могу понять, как использовать ACL при прослушивании, чтобы определить, какой сервер использовать.
frontend myFrontend
bind 127.0.0.1:80
bind 127.0.0.1:443 ssl crt /etc/haproxy/ssl/myFrontend/myFrontend.pem
redirect scheme https if !{ ssl_fc }
use_backend myBackend-edit if { url_sub &mode=edit } or { url_sub &mode=create }
default_backend myBackend
backend myBackend
server srv1 1.1.1.1:10201 cookie srv1 ssl check
server srv2 2.2.2.2:10201 cookie srv1 ssl check backup
server srv3 3.3.3.3:10201 cookie srv1 ssl check backup
backend myBackend-edit
server srv1 1.1.1.1:10201 cookie srv1 ssl check backup
server srv2 2.2.2.2:10201 cookie srv1 ssl check backup
server srv3 3.3.3.3:10201 cookie srv1 ssl check
правильное ключевое слово use-server
(обратите внимание, что это тире, а не подчеркивание, например use_backend
. Теперь моя нагрузка уменьшилась, а конфиги стали меньше. Я искал только что-то вроде use_server...
Итак, это мой рабочий пример:
listen myFrontend
bind 127.0.1.1:80
bind 127.0.1.1:443 ssl crt /etc/haproxy/ssl/myFrontend/myFrontend.pem
redirect scheme https if !{ ssl_fc }
use-server srv2 if { url_sub &mode=edit } or { url_sub &mode=create }
server srv1 1.1.1.1:10201 cookie srv1 ssl check
server srv2 2.2.2.2:10201 cookie srv1 ssl check backup
server srv3 3.3.3.3:10201 cookie srv1 ssl check backup
вы также можете использовать балансировку нагрузки и придерживаться файлов cookie, если хотите.
источник: man-страница haproxy | или используйте красивую :)