Estoy usando HAProxy 1.4.18 con la siguiente configuración de back-end
backend staging
option httpchk HEAD /check.txt HTTP/1.0
http-check disable-on-404
default-server error-limit 1 on-error mark-down
server staging01 x.x.x.x:80 check observe layer7
server staging02 x.x.x.x:80 check observe layer7
Los servidores ejecutan múltiples aplicaciones en apache / pasajero.
La combinación de httpchk y disable-on-404 permite un apagado elegante y la eliminación de un servidor del lb con bastante facilidad mientras se puede acceder directamente (es decir, para pruebas).
Estoy tratando de configurar Observe para deshabilitar un servidor cuando una aplicación no funciona. He roto la configuración de la aplicación en staging02 por lo que siempre devuelve un 500. Está correctamente marcado DOWN después de los primeros 500 pero luego marcado UP en el siguiente httpchk.
Aquí está el archivo de registro:
Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 2 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 1 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is UP, reason: Layer7 check passed, code: 200, info: "OK", check duration: 0ms. 2 active and 1 backup servers online. 0 sessions requeued, 0 total in queue.
¿Hay alguna forma de combinar esos dos cheques?
Respuestas:
La distinción Ahora entiendo es que /check.txt hace realidad devuelve una respuesta 200, pero todas las peticiones a la aplicación 500. devolver un HAProxy ve el 500 que regresan de las solicitudes de proxy y toma el servidor fuera de la piscina, pero luego inicia su propia comprobar, recibe un 200 y vuelve a poner el servidor en el grupo.
La solución sería hacer uno de:
/check.txt
./check.txt
a una aplicación Ruby que contenga la lógica suficiente para elegir entre una respuesta de 200 y 500 cuando sea apropiado.inter
valor en algo ridículo como 3600. Esto debería darle una hora para hacer su prueba o (si el servidor se averió por sí solo) resolver el problema y volver a activarlo.inter
valor en algo más pequeño como 60 pero establezca elrise
valor en algo más alto como 60. Esto también le daría una hora antes de que el servidor se agregara nuevamente al grupo. (Tenga en cuenta que estos dos se enumeran al final porque probablemente son muy malas ideas).fuente
/check.txt
y apuntar el httpchk a una aplicación. Elcheck.txt
archivo fue útil para eliminar de forma rápida y elegante un servidor de todos los HAProxy (3 de ellos en la configuración de HA, solo uno activo). También parece quedisable server
no persiste entre recargas.