¿Cómo configurar HAProxy con failover?

14

Entiendo que, para obtener la conmutación por error en una configuración de equilibrio de carga HAProxy, necesita dos máquinas que ejecuten HAproxy (y enrutarlo a varias instancias de servidor web). Pero en este caso, digamos abcd.com, ¿cómo dividimos / enrutamos este tráfico a 2 direcciones IP en lugar de una? El DNS generalmente resuelve los nombres de dominio en una sola IP. ¿Cómo hacemos esto al usar herramientas / servicios gratuitos / baratos?

mixdev
fuente
Compruebe esto también serverfault.com/questions/238605/…
mixdev

Respuestas:

20

Si tiene tanta carga que necesita equilibrar la carga en dos instancias de haproxy, entonces DNS round robin no es una mala idea (sin embargo, me sorprendería si tiene esta carga). Sin embargo, DNS round robin no proporcionará una buena conmutación por error.

En Stack Overflow usamos heartbeatpara proporcionar una sola IP virtual, esta IP está activa en un solo host haproxy a la vez (si se cae, la otra se hace cargo de esta IP). Puede usar heartbeat para tener una IP en cada máquina y luego DNS round robin entre las dos. Si uno fallara, el otro tendría ambas IP.

HAProxy está utilizando alrededor de 1-5% de CPU en nuestro servidor físico para equilibrar nuestro tráfico que tiene una sola Intel(R) Xeon(R) CPU E5504 @ 2.00GHz. Por lo tanto, HAProxy generalmente puede manejar mucho tráfico fácilmente.

Kyle Brandt
fuente
1
No. Definitivamente no tengo TAN tipo de tráfico. Es solo un intento de evitar SPOF.
mixdev
2
@mixdev: en ese caso, solo haga que DNS apunte a la única IP virtual proporcionada por heatbeat y debería estar listo. Simplemente deja haproxy ejecutándose en ambas máquinas. Asegúrese de probar la conmutación por error de los latidos del corazón antes de comenzar, por supuesto.
Kyle Brandt
@KyleBrandt: ¿Qué pasaría si el proceso de haproxy muriera? ¿Tiene algo configurado que permita mover la IP virtual en función de eso?
CarpeNoctem
@CarpeNoctem: No tenemos eso cubierto en este momento. Sin embargo, creo que tanto heartbeat como keepalived pueden configurarse para ver procesos. Si sigue esta ruta, recomendaría configurarla para que requiera que el proceso esté inactivo durante un buen período de tiempo (es decir, 1 minuto). Probablemente no desee que el latido se agite en un error de configuración. HAProxy verifica la mayoría de estos con -c, pero podría no detectar cosas como un error de configuración vinculante.
Kyle Brandt
55
Para cualquiera a quien le importe, en Stack nos mudamos a Keepalived bien hace más de un año
Kyle Brandt
24

Como dice Kyle, los latidos pueden usarse para hacer que dos servidores haproxy actúen como un par de conmutación por error. Sin embargo, aunque muchas personas usan los latidos del corazón para el trabajo, Keepalived es sugerido por el autor de haproxy.

Describe los detalles en la lista de correo de haproxy: http://www.formilux.org/archives/haproxy/1003/3259.html

En resumen, es así:

  • Los latidos del corazón están orientados al clúster. Asegura que solo un servidor tenga acceso a un recurso (es decir, almacenamiento SAN)

  • keepalived está orientado a la red. Asegura que al menos un servidor tenga la IP en cuestión.

Cooperativas
fuente
-1

Puede encontrar lo que está buscando aquí: http://blog.haproxy.com/2014/01/17/emulating-activepassing-application-clustering-with-haproxy/

user3595100
fuente
1
Incluya el contenido completo de la receta en su publicación. No somos exactamente un servicio de enlace de blog.
Deer Hunter
1
Además, los blogs a menudo caen o cambian las URL y luego se pierde la información.
Dennis Nolte
Voto negativo porque no tiene nada que ver con la pregunta.
danieljimenez
@danieljimenez, creo que no está totalmente relacionado, solo un malentendido. OP solicitó Activo / Pasivo para el propio HAProxy y el usuario 3595100 interpretó la pregunta como Activo / Pasivo para un backend HAProxy. Sin embargo, publicar un enlace no es una respuesta aceptable en sí misma.
duct_tape_coder