Błędy 502 podczas pracy w trybie gorącej gotowości Apache mod_proxy (lub odpowiednik)


Czy ktoś wie, jak skonfigurować funkcję gorącej gotowości mod_proxy (+ H), aby przełączenie nastąpiło natychmiast (bez błędu 502) podczas wyłączania?
Nie dążymy do rzeczywistego równoważenia obciążenia, po prostu chcemy, aby serwer pomocniczy przejął kontrolę i wyłączymy serwer podstawowy.
Problem polega na tym, że za każdym razem, gdy podstawowa zawiedzie, mogę przegapić jedno nieprawidłowe żądanie, co powoduje błąd HTTP 502 docierający do użytkownika końcowego, zanim druga faktycznie przejmie kontrolę.
Listen 80
<VirtualHost 127.0.0.1:80>
ServerName domain.com
ProxyPass/balancer://balance/ <Proxy balancer://balance/>
BalancerMember [url=http://primary_ip:80]http://primary_ip:80[/url]
BalancerMember [url=http://secondary_ip:80]http://secondary_ip:80[/url] status=+H
</Proxy>
</VirtualHost>

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli najpierw wyraźnie wyłączysz podstawowy balanser (przed wyłączeniem głównego serwera), Apache z radością przekaże żądanie do drugiego balansera. Wchłanianie następuje natychmiast.
Aby to zrobić, najpierw włącz menedżera równoważenia za pomocą config:
<Location/lb>
SetHandler balancer-manager
</Location>

Następnie możesz interaktywnie lub programowo włączyć/wyłączyć element równoważący, otwierając/lb.
W przeciwieństwie do komentarza karmawhore, ta konfiguracja trybu gotowości nie ma nic wspólnego z kontrolą stanu.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Myślę, że można użyć dyrektywy ErrorDocument. Jeśli podasz kod błędu, którego szukasz, i zamiast strony statycznej (takiej jak/missing.html), możesz określić stronę PHP, która może obsłużyć przekierowanie za Ciebie. Raczej:
ErrorDocument 502/redir.php

Następnie w redir.php jest coś takiego:
<?php
header("Location: ...page that was asked for...");
?>
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Apache nie obsługuje wymaganych do tego kontroli stanu. Nawet w przypadku kontroli stanu między kontrolami istnieje okno, w którym żądania mogą być nieprawidłowe.
Możesz napisać coś, co wielokrotnie testowało mały plik statyczny, aby zmusić serwer proxy do rozpoznania awarii modułu równoważenia obciążenia.
Przypomniałem sobie stare rozwiązanie mod_perl:
http://search.cpan.org/~mgrego ... ck.pm
http://search.cpan.org/~mgrego ... ck.pm

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się