у нас есть несколько серверных ферм (HTTP, FTP и т. д.), в основном по одной ферме для каждого клиента, и я собираюсь перестроить нашу инфраструктуру балансировки нагрузки, перейдя от Piranha
к HAProxy
.
Поскольку мы используем несколько разных серверных ферм, конфигурация Piranha в настоящее время выглядит так (пример показывает ферму webserv01, 2-я ферма webserv02 использует ту же конфигурацию, но другой виртуальный 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 для двух ферм веб-серверов. Обратите внимание на разные виртуальные 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-адресов, которые мне нужно использовать, любое понимание будет очень признательно!
Да, 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
}