Używam HAProxy 1.4.18 z następującą konfiguracją zaplecza
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
Na serwerach działa wiele aplikacji na serwerze Apache / pasażer.
Kombinacja httpchk i disable-on-404 pozwala na płynne zamknięcie i usunięcie serwera z funta dość łatwo, wciąż będąc w stanie uzyskać bezpośredni dostęp (tj. Do testowania).
Usiłuję skonfigurować obserwować, aby wyłączyć serwer, gdy aplikacja nie działa. Zerwałem konfigurację aplikacji na staging02, więc zawsze zwraca 500. Jest poprawnie oznaczona jako DOWN po pierwszych 500, a następnie oznaczona jako UP przy następnym httpchk.
Oto plik dziennika:
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.
Czy istnieje sposób na połączenie tych dwóch czeków?
Odpowiedzi:
Rozróżnienie Rozumiem teraz, że /check.txt ma rzeczywiście zwróci odpowiedź 200, ale wszystkie żądania do stosowania powrót do 500. HAProxy widzi 500S wracając z serwer proxy żądań i wykonuje serwer z basenu ale potem inicjuje własne sprawdza, otrzymuje 200 i ponownie umieszcza serwer w puli.
Rozwiązaniem byłoby wykonanie jednego z:
/check.txt
./check.txt
się w aplikację Ruby, która zawiera logikę wystarczającą do wybrania odpowiednio między 200 a 500 odpowiedzi.inter
wartość na coś niedorzecznego, na przykład 3600. To powinno dać ci godzinę na przetestowanie lub (jeśli serwer sam upadł), rozwiąż problem i przywróć go.inter
wartość na coś mniejszego, jak 60, ale ustawrise
wartość na coś wyższego, np. 60. Dałoby to również godzinę przed ponownym dodaniem serwera do puli. (Uwaga: te dwa są wymienione na końcu, ponieważ są to prawdopodobnie bardzo złe pomysły).źródło
/check.txt
i skierować httpchk do jednej aplikacji.check.txt
Plik był przydatny, aby szybko i bezpiecznie usunąć serwer z wszystkimi HAProxy (3 z nich w konfiguracji HA, tylko jeden aktywny). Wydaje się również, żedisable server
nie utrzymuje się między przeładowaniem.