HAProxy + keepalived + несколько внутренних ферм / виртуальных IP-адресов

HAProxy + keepalived + несколько внутренних ферм / виртуальных IP-адресов

у нас есть несколько внутренних ферм (HTTP, FTP и т. д.), по сути, по одной ферме для каждого клиента, и я собираюсь перестроить нашу инфраструктуру балансировки нагрузки, перейдя сPiranhaкHAProxy.
Так как мы используемнесколько различных ферм внутренних серверов, конфигурация Piranha в настоящее время выглядит следующим образом (пример показывает фермувебсервер01, 2-я фермавебсервер02использует ту же конфигурацию, но другой виртуальный IP):

virtual webserv01 {
active = 1
address = 10.11.11.1 eth2:30
vip_nmask = 255.255.255.0
port = 80
send = "GET / HTTP/1.0\r\n\r\n"
expect = "HTTP"
use_regex = 0
load_monitor = none
scheduler = rr
protocol = tcp
timeout = 6
reentry = 15
quiesce_server = 0
server webserv01v {
address = 192.168.101.64
active = 1
port = 80
weight = 1
}
server webserv02v {
address = 192.168.102.64
active = 1
port = 80
weight = 1
}
server webserv05v {
address = 192.168.101.65
active = 1
port = 80
weight = 1
}
server webserv06v {
address = 192.168.102.65
active = 1
port = 80
weight = 1
}
}

(например, у клиента 1 есть собственная ферма веб-серверов, использующая vIP 10.11.11.1:80, у клиента 2 есть ферма, использующая vIP 10.11.11.2:80). Мне интересно, способен ли один экземпляр HAProxy обрабатывать несколько ферм одной и той же службы, используя разные уникальные адреса vIP.

Базовая настройка будет выглядеть так:
2 экземпляра HAProxy (с отказоустойчивостью)
4 фермы HTTP-бэкэнда (по одной для каждого клиента)
2 фермы FTP

Чтобы все было понятнее, пожалуйста, найдите прикрепленный пример конфигурации HAProxy для 2 ферм веб-серверов. Обратите внимание на разные виртуальные IP-адреса:

#---------------------------------------------------------------------
# LB: VIRTUAL WEBSERVER POOL #01
#---------------------------------------------------------------------
frontend vWEB-LB-01
bind    10.11.11.1:80
mode    http
default_backend vWEB-Pool-01

backend vWEB-Pool-01
mode    http
balance roundrobin
server  webserv01v  192.168.101.64:80   check   weight 100  inter 1000
server  webserv02v  192.168.102.64:80   check   weight 100  inter 1000
server  webserv05v  192.168.101.65:80   check   weight 100  inter 1000
server  webserv06v  192.168.102.65:80   check   weight 100  inter 1000

#---------------------------------------------------------------------
# LB: VIRTUAL WEBSERVER POOL #02
#---------------------------------------------------------------------
frontend vWEB-LB-02
bind    10.11.11.2:80
mode    http
default_backend vWEB-Pool-02

backend vWEB-Pool-02
mode    http
balance roundrobin
server  webserv01v  192.168.101.75:80   check   weight 100  inter 1000
server  webserv02v  192.168.101.76:80   check   weight 100  inter 1000
server  webserv05v  192.168.101.68:80   check   weight 100  inter 1000
server  webserv06v  192.168.101.69:80   check   weight 100  inter 1000

Могут ли HAProxy и/или keeoalived справиться с этим так, как показано? Если да, как мне подойти к этому?

Я хотел бы использовать keepalivedдля отказоустойчивости между двумя экземплярами HAProxy и заставить их выполнять балансировку нагрузки для внутренних ферм. Сейчас немного запутался в нескольких виртуальных IP-адресах, которые мне нужно использовать, любые соображения были бы очень признательны!

решение1

Да, HAproxy сделает это. Вам просто нужно настроить keepalived со всеми виртуальными IP-адресами, которые будет использовать HAproxy. Вы можете назначить несколько IP-адресов в блоке virtual_ipaddress в keepalived.conf:

virtual_ipaddress {
        192.168.0.10
        192.168.0.11
        192.168.0.12
        192.168.0.13
        }

Связанный контент