Wyłączanie i ponowne włączanie węzłów w load balancerze
Bezpieczne wycofywanie węzłów i przywracanie ich do ruchu.
Wyłączanie i ponowne włączanie węzłów w load balancerze to bezpłatna lekcja Ansible Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ansible Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ansible Academy zawiera 4 lekcji w sumie.
Aktualizowanie ruchu na żywo jest ryzykowne
Jeśli serwer zostanie zaktualizowany, gdy użytkownicy z niego korzystają, żądania zakończą się błędem. Rozwiązaniem jest najpierw wycofanie węzła z load balancera. 🚦
Co oznacza wycofanie węzła z ruchu
Wycofać węzeł z ruchu oznacza przestać wysyłać do niego nowe żądania, jednocześnie pozwalając na dokończenie żądań już przetwarzanych. Dopiero wtedy można bezpiecznie przeprowadzić aktualizację.
Cykl: wycofanie, aktualizacja i ponowne włączenie
Bezpieczny schemat składa się z trzech kroków: wycofać węzeł z ruchu, wdrożyć zmianę, a następnie ponownie włączyć węzeł w load balancerze.
Wyłączanie węzła w HAProxy
Moduł community.general.haproxy ustawia węzeł backendu jako wyłączony, informując HAProxy, aby przestał kierować do niego ruch.
- name: Drain web node
community.general.haproxy:
state: disabled
host: "{{ inventory_hostname }}"
socket: /var/run/haproxy.sockUruchamianie zadania LB z poziomu LB
Gniazdo HAProxy znajduje się na load balancerze, dlatego należy użyć delegate_to dla hosta LB, jednocześnie wskazując wycofywany węzeł web.
delegate_to: lb01Oczekiwanie na zakończenie połączeń
Należy dać aktywnym żądaniom czas na zakończenie. W tym celu można użyć wait_for lub krótkiej pauzy, aby nie odcinać użytkowników w trakcie obsługi żądania.
- name: Let traffic drain
ansible.builtin.wait_for:
timeout: 30
delegate_to: localhostBezpieczne wdrażanie
Po wycofaniu węzła z puli należy wykonać zadania aktualizacji: zainstalować pakiety, wysłać konfigurację i zrestartować aplikację. Nie wpłynie to na ruch obsługiwany na żywo. 🔧
Ponowne włączanie węzła
Po aktualizacji należy ustawić węzeł z powrotem jako włączony, aby HAProxy wznowił kierowanie ruchu do świeżo wdrożonego serwera.
- name: Re-enable web node
community.general.haproxy:
state: enabled
host: "{{ inventory_hostname }}"
socket: /var/run/haproxy.sock
delegate_to: lb01Sprawdzanie stanu przed ponownym włączeniem
Przed ponownym dodaniem węzła należy potwierdzić, że aplikacja rzeczywiście działa. Sprawdzenie za pomocą wait_for lub uri na punkcie końcowym kontroli stanu zapobiega udostępnieniu uszkodzonego węzła.
- ansible.builtin.uri:
url: http://localhost:8080/health
status_code: 200
retries: 5
delay: 3Jeden węzeł naraz
Należy połączyć ten cykl z serial, aby jednocześnie wycofywać tylko jeden lub dwa węzły. Pozostałe nadal obsługują ruch, co zapewnia brak przestojów.
- hosts: web
serial: 1Zawsze włączaj ponownie, nawet po błędzie
Wdrożenie należy umieścić w block z always, aby nieudana aktualizacja również przywracała węzeł do puli zamiast pozostawiać go odłączonego.
Szybkie sprawdzenie
Sprawdźmy bezpieczny schemat wdrażania.
Podsumowanie
Aby uniknąć przestojów, należy wycofać węzeł z ruchu, wdrożyć zmianę, sprawdzić stan, a następnie ponownie go włączyć — jeden węzeł naraz, z użyciem serial i bloku always. ✅
Często zadawane pytania
Czy lekcja „Wyłączanie i ponowne włączanie węzłów w load balancerze” jest bezpłatna?
Tak — pełny tekst „Wyłączanie i ponowne włączanie węzłów w load balancerze” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ansible Academy, przejdź na CoddyKit PRO. Kurs Ansible Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wyłączanie i ponowne włączanie węzłów w load balancerze”?
Bezpieczne wycofywanie węzłów i przywracanie ich do ruchu. Ćwiczysz Ansible Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Ansible Academy?
Nie wymagamy żadnego doświadczenia. Ansible Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Wyłączanie i ponowne włączanie węzłów w load balancerze”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Ansible Academy?
Tak. Każda lekcja Ansible Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Automatyzacja urządzeń sieciowych za pomocą cli_command
- delegate_to i run_once do orkiestracji
- Koordynowanie warstw Web, App i DB
- Wyłączanie i ponowne włączanie węzłów w load balancerze