Я использую haproxy для балансировки нагрузки на несколько виртуальных машин (веб-сервисов). Каждая виртуальная машина имеет несколько IP-адресов.
Как лучше всего настроить это на haproxy? Прямо сейчас моя конфигурация такова, что каждый IP-адрес виртуальной машины имеет запись «прослушивание» на haproxy с соответствующими двумя реальными серверами.
Могу я спросить, можно ли его пересмотреть, например, несколько "слушающих" и только два бэкэнд-сервера. Потому что весь "прослушиваемый IP" перенаправляется только на одну и ту же виртуальную машину.
global
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
stats socket /var/run/haproxy.stat mode 666
maxconn 4096
user haproxy
group haproxy
daemon
defaults
mode http
log global
log 127.0.0.1 local0 notice
option dontlognull
option redispatch
timeout connect 10000 # default 10 second time out if a backend is not foun
timeout client 300000
timeout server 300000
maxconn 60000
retries 3
listen stats
bind xx.xxx.xxx.xxx:8888
stats uri /
stats realm Haproxy\ Statistics
stats auth user:pass
stats refresh 20
listen server 66.xxx.xxx.36:80
mode http
balance roundrobin
cookie SERVERID insert nocache indirect
option http-server-close
option forwardfor
option httplog
server server1 66.xxx.xxx.66:80 cookie sv1 check inter 5s rise 2 fall 5
server server2 66.xxx.xxx.68:80 cookie sv2 check inter 5s rise 2 fall 5
listen app 66.xxx.xxx.36:80
mode http
balance roundrobin
cookie SERVERID insert nocache indirect
option http-server-close
option forwardfor
option httplog
server app1 66.xxx.xxx.66:80 cookie ap1 check inter 5s rise 2 fall 5
server app2 66.xxx.xxx.68:80 cookie ap2 check inter 5s rise 2 fall 5
вы можете сделать две вещи. Во-первых, вы можете иметь столько «привязанных» строк, сколько хотите в разделе «прослушивание» или «интерфейс». Так что если единственное, что меняется, - это IP-адрес, то это лучше всего сделать. Во-вторых, если у вас есть причина применять различную обработку для каждого IP-адреса (например, разные ACL или правила перезаписи), тогда вам следует использовать «интерфейс» + «бэкэнд» вместо «слушать». Раздел "прослушивания" - это в точности интерфейс и серверная часть, оба находятся в одном разделе. Имея несколько внешних интерфейсов, вы можете определить, какой тип обработки вы хотите использовать для каждого IP-адреса, и заставить их всех использовать один и тот же внутренний интерфейс (с помощью правила default_backend). И все ваши серверы будут размещены только в этом единственном бэкэнде с тем же именем cookie, тем же алгоритмом LB, одинаковыми проверками состояния и т. Д.
Надеясь, что это поможет, Вилли