Назад | Перейти на главную страницу

haproxy с несколькими IP на одном сервере

Я использую 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, одинаковыми проверками состояния и т. Д.

Надеясь, что это поможет, Вилли