HAProxy + keepalived + múltiples granjas backend/direcciones IP virtuales

HAProxy + keepalived + múltiples granjas backend/direcciones IP virtuales

Tenemos varias granjas de servidores (HTTP, FTP, etc.), básicamente una granja para cada cliente, y estoy a punto de reconstruir nuestra infraestructura de equilibrio de carga, pasando dePiranhaaHAProxy.
Ya que estamos usandovarias granjas de servidores backend diferentes, la configuración de Piranha actualmente se ve así (el ejemplo muestra la granjaservidorweb01, 2da granjaservidorweb02usa la misma configuración, pero diferente IP virtual):

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
}
}

(por ejemplo, el cliente 1 tiene su propia granja de servidores web usando vIP 10.11.11.1:80, el cliente 2 tiene una granja usando vIP 10.11.11.2:80). Tengo curiosidad por saber si una única instancia de HAProxy es capaz de manejar varias granjas del mismo servicio utilizando diferentes direcciones VIP únicas.

La configuración básica se vería así:
2 instancias de HAProxy (con conmutación por error)
4 granjas de servidores HTTP (una para cada cliente)
2 granjas de FTP

Para aclarar las cosas, adjunto mi concepto de ejemplo de configuración HAProxy para 2 granjas de servidores web. Observe las diferentes IP virtuales:

#---------------------------------------------------------------------
# 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

¿Pueden HAProxy y/o keeoalived manejar esto como se muestra? En caso afirmativo, ¿cómo abordaría esto?

Me gustaría utilizarlo keepalivedpara fines de conmutación por error entre las 2 instancias de HAProxy y hacer que realicen el equilibrio de carga para las granjas de backend. Estoy un poco confundido en este momento acerca de las múltiples direcciones IP virtuales que necesito usar, ¡cualquier idea sería muy apreciada!

Respuesta1

Sí, HAproxy hará eso. Solo necesitará configurar keepalived con todas las IP virtuales que utilizará HAproxy. Puede asignar varias IP en el bloque virtual_ipaddress en keepalived.conf:

virtual_ipaddress {
        192.168.0.10
        192.168.0.11
        192.168.0.12
        192.168.0.13
        }

información relacionada