
Estamos utilizando el proxy HA en una instancia de Amazon EC2 para enrutar ciertas solicitudes a dos balanceadores de carga internos diferentes que son ELB (Elastic Load Balancers) de EC2.
Aquí está la configuración del proxy HA:
defaults
mode http
log global
no option redispatch
retries 25
timeout connect 10000 # default 10 second time out if a backend is not found
timeout client 30000
timeout server 30000
maxconn 20000
stats uri /haproxy?stats
option http-server-close
timeout http-request 100s
timeout http-keep-alive 124s
backend main-service-backend
option httpchk GET /ping
server main-service internal-main-service:80 check inter 5s fall 10
backend micro-service-backend
option httpchk GET /ping
server micro-service internal-micro-service:80 check inter 5s fall 10
frontend shared-frontend *:80
acl is-micro-service-url path_reg ^/(/rest/user/.*/?)
use_backend micro-service-backend if is-micro-service-url
default_backend main-service-backend
Normalmente, si apago uno de los servidores por un tiempo, el proxy HA se recuperará. Sin embargo, parece que se está produciendo algún error de red/enrutamiento y el proxy HA no se recupera.
Estos son los registros del proxy HA:
Server micro-service-backend/micro-service is DOWN, reason: Layer4 connection problem, info: "No route to host", check duration: 998ms. 0 active and 0 backup servers left. 1 sessions active, 0 requeued, 0 remaining in queue.
backend micro-service-backend has no server available!
El proxy HA deja de comprobar el servidor y sigue marcándolo como ABAJO. Sin embargo, puedo realizar con éxito la verificación de estado http desde el cuadro de proxy HA al balanceador de carga interno:
curl -i http://internal-micro-service:80/ping
HTTP/1.1 200 OK
Content-Type: text/plain;charset=UTF-8
Date: Fri, 12 Jun 2015 23:08:29 GMT
Server: Apache-Coyote/1.1
Content-Length: 2
Connection: keep-alive
UP
¿Alguna idea de qué podría estar mal? ¿Qué más debo investigar?
Respuesta1
Después de buscar en Google, descubrí que el proxy HA solo resuelve DNS al inicio. Los ELB de EC2 pueden cambiar aleatoriamente las direcciones IP, lo que hace que las comprobaciones de estado fallen, ya que el proxy HA no realiza la resolución de DNS antes de realizar la verificación de estado.
Los balanceadores de carga elásticos cambian las direcciones IP