0Pricing
DevOps Bootcamp · Lekcja

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: webapp

Procenty 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: lb1

Dlaczego 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 app

Sprawdzanie 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: 3

Ponowne 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: lb1

max_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: 20

run_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: true

Cał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

  1. Architektura projektu: role i inventory
  2. Udostępnianie, wzmacnianie i inicjalizacja hostów
  3. Wdrożenie kroczące za load balancerem
  4. Testy smoke, wycofywanie i powiadomienia
← Powrót do DevOps Bootcamp