Do rotacji dodawane są tylko serwery, które przejdą kontrolę stanu. Dzięki temu serwer nie zostanie wybrany do użycia, jeśli nie przejdzie kontroli stanu, co minimalizuje ryzyko przestojów. W tym poście zagłębimy się w zrozumienie, jak działają kontrole stanu w HAProxy i co jest potrzebne do wdrożenia skutecznej kontroli stanu. Zaczynajmy!
Jakie są kontrole stanu w HAProxy
Podczas konfigurowania HAProxy jednym z zadań jest określenie, które serwery zaplecza mają być używane dla Twojej aplikacji. W ten sposób ruch zostanie rozłożony na serwery, aby uniknąć przeciążenia żadnego serwera. Jednak kontrole stanu pomagają upewnić się, że serwer jest wybierany do obsługi ruchu tylko wtedy, gdy wszystko jest w porządku.
Kontrole kondycji są przeprowadzane na każdym serwerze i tylko te, które przeszły pomyślnie, są dodawane do rotacji w celu wykorzystania w równoważeniu obciążenia. Kontrole kondycji są przeprowadzane poprzez wysyłanie żądań, takich jak TCP lub HTTP, do wstępnie zdefiniowanego punktu końcowego na serwerze zaplecza. Wyniki kondycji odsyłane przez serwer zaplecza określają jego stan. Na przykład status serwera może pokazywać UP lub DOWN lub wysłać status OK 200, który potwierdza, że serwer jest zdrowy.
Konfigurując kontrole stanu, upewnij się, że masz wstępnie zdefiniowany punkt końcowy, który będzie używany do kontroli stanu. Istnieją różne opcje, których można użyć do skonfigurowania punktu końcowego. Na przykład możesz zwrócić kod statusu lub wiadomość w zależności od statusu serwera. Wszystkie kontrole stanu są zdefiniowane w sekcji zaplecza pliku konfiguracyjnego HAProxy. Otwórz plik konfiguracyjny i utwórz sekcję frontendu.
$ sudo nano /etc/haproxy/haproxy.cfg
Oto podstawowy przykład sekcji frontendu, która wiąże port 80, ustawia stronę statystyk i określa domyślny backend.
Następnym krokiem jest utworzenie sekcji backendu. Poniżej znajdują się różne przykłady wdrożenia skutecznej kontroli stanu w HAProxy.
Przykład 1: Wdrażanie skutecznych aktywnych kontroli stanu
Prostym sposobem wdrożenia kontroli stanu w HAProxy jest ustawienie aktywnych kontroli stanu. Dzięki tej opcji HAProxy spróbuje połączyć się z serwerem. Jeśli nie zostanie wysłana żadna odpowiedź, serwer zostanie uznany za niesprawny i usunięty z rotacji. Domyślnym sposobem wdrożenia aktywnych kontroli stanu jest dodanie słowa kluczowego „check” na każdej linii serwera, aby HAProxy mógł je wszystkie sprawdzić.
Chociaż ten pierwszy przykład działa, nie jest to najlepszy sposób na wdrożenie kontroli stanu. Poza tym używa ustawień domyślnych. Na przykład odstęp między kontrolami, oznaczony jako inter, jest ustawiony na dwie sekundy. Spadek, czyli dozwolona liczba nieudanych kontroli, wynosi trzy. Aby dostosować te ustawienia, określ preferowany odstęp czasowy i liczbę kontroli, jak pokazano w poniższym przykładzie:
Przykład 2: Implementacja kontroli stanu HTTP
W przypadku kontroli stanu HTTP HAProxy wyśle żądanie HTTP do wszystkich serwerów ze słowem kluczowym „check”. Na podstawie odpowiedzi określa status serwera. Przykłady pomyślnych odpowiedzi serwera mieszczą się w zakresie 2xx lub 3xx. Odpowiedź taka jak 200 OK oznacza, że serwer jest w dobrym stanie.
Na potrzeby tego przykładu dodaj linię „opcja httpchk” do swojego backendu.
Przykład 3: Praca z żądaniem GET
HAProxy wysyła żądanie GET do ścieżki „/” podczas tworzenia żądania HTTP. Jeśli jednak punkt końcowy jest skonfigurowany w innej ścieżce, możesz określić ścieżkę adresu URL, na przykład „/health”, a HAProxy wyśle do niego żądanie GET.
W zależności od punktu końcowego serwer wykorzysta odpowiedź do określenia statusu serwera. Oto jak to wdrożyć:
Przykład 4: Określanie ścieżki żądania GET i statusu odpowiedzi
W przypadku punktu końcowego można określić, jakiej pomyślnej odpowiedzi można oczekiwać od żądania GET punktu końcowego w celu określenia statusu serwera. W tym przykładzie nasza ścieżka żądania GET to „/health” i oczekujemy, że status odpowiedzi 200 potwierdzi, że serwer jest w dobrej kondycji, aby obsłużyć równoważenie obciążenia i inne zadania.
Po zmodyfikowaniu pliku konfiguracyjnego HAProxy uruchom ponownie HAProxy, aby zmiany zaczęły obowiązywać.
Otóż to! Wdrożyłeś skuteczne kontrole stanu swojego HAProxy. Możesz uzyskać dostęp do strony statystyk lub sprawdzić plik dziennika za pomocą następującego polecenia, aby potwierdzić, że kontrole stanu działają zgodnie z oczekiwaniami:
$ tail -f /var/log/haproxy.logWniosek
Możesz wdrożyć skuteczną kontrolę stanu w HAProxy na różne sposoby. Kontrole stanu są zaimplementowane w sekcji zaplecza pliku konfiguracyjnego HAProxy, a w tym poście podano różne przykłady, jak to zrobić. Sprawdź swoją idealną metodę i wygodnie przeprowadź skuteczną kontrolę stanu w HAProxy.