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 dePiranha
aHAProxy
.
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 keepalived
para 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
}