HAProxy odpowiada za pomocą NOSRV, gdy backend jest włączony

11

Mam dziwną sytuację, w której żądania do mojego HAProxy zwracają się z 503. Dzienniki HAProxy pokazują, że zwraca błąd 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"

W tym czasie serwer zaplecza został potwierdzony i odbierał ruch z wewnętrznego modułu równoważenia obciążenia. To wydarzyło się spontanicznie bez żadnej konfiguracji ani innych zmian w HAProxy. Ponowne uruchomienie HAProxy naprawiło to.

Czy ktoś wie, czy jest to znany problem? Dzięki za pomoc / wgląd.

Dzięki.

Moja konfiguracja wygląda następująco:

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
Raj
źródło
Mam ten sam problem. Czy udało Ci się to rozwiązać lub po prostu co jakiś czas restartujesz usługę?
Atifm,
byłeś w stanie to rozwiązać? Ten sam problem, nawet z dynamiczną rozdzielczością hosta
Paulius Dragunas
Przepraszam ludzi. Przeszedłem od tego i nie próbowałem rozwiązać.
Raj

Odpowiedzi:

2

Zauważam z podanej konfiguracji, że działasz przed modułem równoważenia obciążenia AWS ELB v2i domyślam się, że v2ewskazuje to bezpośrednio na serwer aplikacji (który w przeciwnym razie byłby za ELB)?

Jeśli tak, to zasugeruje mi, że wraz z błędem 503, połączenie między twoją instancją HAProxy a ELB osiąga limit czasu, albo contimeoutlimit 4 sekund, albo limit 300 sekund server. Bardziej prawdopodobny jest czas 4 sekund, contimeouta sporadyczność błędu dodatkowo potwierdza, że ​​prawdopodobnie jest to problem sieciowy między HAProxy i ELB.

contimeoutSpróbowałbym zwiększyć wartość, a także monitorować opóźnienie między HAProxy i ELB.

Jamescun
źródło