Wdrożenie kroczące za load balancerem
Wydawanie zmian bez przestojów, partiami.
Wdrożenie kroczące za load balancerem to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 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 DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Brak przestojów to obietnica
Należy zaktualizować wszystkie węzły web bez utraty choćby jednego żądania. Sposobem jest wdrożenie kroczące: zmiana kilku hostów naraz. 🔄
serial steruje partią
Należy dodać serial do play, aby Ansible przetwarzał hosty w małych partiach zamiast wszystkich jednocześnie.
- hosts: web
serial: 1
tasks:
- import_role:
name: webappProcenty również działają
serial przyjmuje procent lub listę rozmiarów partii, dzięki czemu można stopniowo zwiększać zakres: najpierw canary, a potem większe partie.
serial:
- 1
- 25%
- 50%Wycofaj węzeł przed zmianą
Przed aktualizacją węzła należy usunąć go z puli. Użyj delegate_to, aby poinformować load balancer, że ma przestać kierować do niego ruch.
- name: Drain node
community.general.haproxy:
state: disabled
host: "{{ inventory_hostname }}"
delegate_to: lb1Dlaczego należy użyć delegate_to dla LB
Host web nie może wyłączyć samego siebie w balancerze — musi to zrobić load balancer. delegate_to uruchamia to zadanie na lb1 dla każdego hosta web.
Wdrażanie nowej wersji
Po wycofaniu węzła należy wdrożyć kod, wygenerować konfigurację i pozwolić handlerowi przeładować usługę aplikacji tylko dla tego hosta.
- name: Pull release
ansible.builtin.git:
repo: "{{ app_repo }}"
version: "{{ app_version }}"
dest: /srv/app
notify: Reload appSprawdzanie stanu przed ponownym włączeniem
Przed ponownym skierowaniem użytkowników należy potwierdzić stan węzła za pomocą uri. Nie wolno ponownie dodawać uszkodzonego hosta do puli.
- name: Wait for health
ansible.builtin.uri:
url: http://localhost:8080/health
status_code: 200
retries: 5
delay: 3Ponowne włączanie w balancerze
Po potwierdzeniu poprawnego stanu należy ponownie włączyć węzeł w puli, znów używając delegate_to dla load balancera. Ruch zacznie trafiać do nowej wersji.
- name: Enable node
community.general.haproxy:
state: enabled
host: "{{ inventory_hostname }}"
delegate_to: lb1max_fail_percentage zapewnia ochronę
Należy ustawić max_fail_percentage, aby wdrożenie zatrzymało się po przekroczeniu liczby nieudanych hostów i zapobiegło dalszemu rozpowszechnianiu wadliwej wersji.
- hosts: web
serial: 1
max_fail_percentage: 20run_once dla współdzielonych kroków
Niektóre kroki, takie jak jednorazowa migracja db, powinny zostać wykonane tylko raz. Należy użyć run_once, aby wykonał je tylko jeden host.
- name: Migrate db
ansible.builtin.command: /srv/app/migrate
run_once: trueCała pętla
Dla każdego hosta: wycofanie, wdrożenie, kontrola stanu i ponowne włączenie. serial powtarza tę pętlę w bezpiecznych partiach, aż cała flota zostanie zaktualizowana. ✅
Szybkie sprawdzenie
Jedno słowo kluczowe sprawia, że krok dotyczący LB działa.
Podsumowanie
Zbudowano wdrożenie kroczące: partie serial, wycofywanie i ponowne włączanie za pomocą delegate_to, kontrole stanu oraz zabezpieczenie przed zbyt wieloma błędami. Brak przestojów. 🟢
Często zadawane pytania
Czy lekcja „Wdrożenie kroczące za load balancerem” jest bezpłatna?
Tak — pełny tekst „Wdrożenie kroczące za load balancerem” 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 DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Wdrożenie kroczące za load balancerem”?
Wydawanie zmian bez przestojów, partiami. Ćwiczysz DevOps Bootcamp 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ąć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp 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 3 z 4.
Ile czasu zajmuje lekcja „Wdrożenie kroczące za load balancerem”?
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 DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp 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
- Architektura projektu: role i inventory
- Udostępnianie, wzmacnianie i inicjalizacja hostów
- Wdrożenie kroczące za load balancerem
- Testy smoke, wycofywanie i powiadomienia