Ich habe eine seltsame Situation, in der Anfragen an mein HAProxy mit einem 503 zurückgegeben werden. HAProxy-Protokolle zeigen, dass ein NOSRV-Fehler zurückgegeben wird:
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"
Während dieser Zeit wurde der Backend-Server bestätigt und empfing Datenverkehr von einem internen Load Balancer. Dies geschah spontan ohne Konfiguration oder andere Änderungen in HAProxy. Ein Neustart des HAProxy hat dies behoben.
Weiß jemand, ob dies ein bekanntes Problem ist? Vielen Dank für Ihre Hilfe / Einsicht.
Vielen Dank.
Meine Konfiguration sieht folgendermaßen aus:
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
Antworten:
Ich stelle anhand der angegebenen Konfiguration fest, dass Sie vor einem AWS ELB-Load-Balancer ausgeführt werden,
v2
und ich vermute, dass diesv2e
direkt auf einen App-Server verweist (der sonst hinter ELB stehen würde).Wenn ja, deutet dies darauf hin, dass die Verbindung zwischen Ihrer HAProxy-Instanz und ELB zusammen mit dem 503-Fehler ein Timeout aufweist, entweder das 4-Sekunden-
contimeout
Timeout oder das 300-Sekunden-server
Timeout. Je wahrscheinlicher die 4 Sekunden sind,contimeout
und die Sporadizität des Fehlers bestätigt weiter, dass es sich wahrscheinlich um ein Netzwerkproblem zwischen HAProxy und ELB handelt.Ich würde versuchen, den
contimeout
Wert zu erhöhen und die Latenz zwischen HAProxy und ELB zu überwachen.quelle