Tengo una situación extraña en la que las solicitudes a mi HAProxy vuelven con un 503. Los registros de HAProxy muestran que devuelve un error NOSRV:
Mar 26 19:47:01 localhost haproxy[23910]: 10.0.0.30:34261
[26/Mar/2013:19:46:48.579] fe v2/<NOSRV> 12801/-1/-1/-1/12801 503
212 - - SC-- 0/0/0/0/0 0/0 "GET /path/v2/ HTTP/1.1"
Durante este tiempo, el servidor de fondo se confirmó y estaba recibiendo tráfico de un equilibrador de carga interno. Esto sucedió espontáneamente sin ninguna configuración u otros cambios en HAProxy. Reiniciar el HAProxy solucionó esto.
¿Alguien sabe si este es un problema conocido? Gracias por su ayuda / visión.
Gracias.
Mi configuración se ve así:
global
maxconn 1000 # Total Max Connections. This is dependent on ulimit
daemon
nbproc 1 # Number of processing cores. Dual Dual-core Opteron is 4 cores for example.
log 127.0.0.1 local1
defaults
mode http
clitimeout 60000
timeout server 300000
contimeout 4000
option httpclose # Disable Keepalive
backend v2
server v2Elb internal-xxx.us-west-1.elb.amazonaws.com:80 weight 1 maxconn 512 check
backend v2e
server v2eElb 10.0.1.28:80 weight 1 maxconn 512 check
frontend fe
bind :80
option httpchk
option forwardfor # This sets X-Forwarded-For
option httplog
log global
acl v2e path_beg /path/v2e
acl v2 path_beg /path/v2
redirect location https://my.domain.com/path/v2/ if !v2e !v2
use_backend v2e if v2e
use_backend v2 if v2
Respuestas:
¿De la configuración dada me doy cuenta de que se está ejecutando delante de un equilibrador de carga AWS ELB
v2
y supongo que esov2e
apunta directamente a un servidor de aplicaciones (que de lo contrario estaría detrás de ELB)?Si es así, esto me sugerirá que, junto con el error 503, la conexión entre su instancia de HAProxy y ELB está llegando a un tiempo de espera, ya sea el
contimeout
tiempo de espera de 4 segundos o elserver
tiempo de espera de 300 segundos . El más probable es el de 4 segundoscontimeout
y la esporádicaidad del error confirma aún más que es probable que sea un problema de red entre HAProxy y ELB.Intentaría aumentar el
contimeout
valor y monitorear la latencia entre HAProxy y ELB.fuente