Load-Balancer-Drain und erneute Aktivierung
Nehmen Sie Nodes sicher aus dem Dienst und wieder auf.
Load-Balancer-Drain und erneute Aktivierung ist eine kostenlose Ansible Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ansible Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ansible Academy-Kurs umfasst insgesamt 4 Lektionen.
Live-Traffic zu aktualisieren ist riskant
Wenn Sie einen Server aktualisieren, während Benutzer ihn erreichen, schlagen Anfragen fehl. Die Lösung besteht darin, den Knoten zuerst aus dem Load-Balancer zu drainen. 🚦
Was Drainen bedeutet
Einen Knoten zu drainen bedeutet, keinen neuen Traffic mehr an ihn zu senden, während laufende Anfragen abgeschlossen werden. Danach kann er sicher aktualisiert werden.
Der Zyklus aus Drainen, Aktualisieren und Wiederaktivieren
Das sichere Muster besteht aus drei Schritten: den Knoten drainen, die Änderung bereitstellen und ihn anschließend im Load-Balancer wieder aktivieren.
Einen Knoten in HAProxy deaktivieren
Das Modul community.general.haproxy setzt einen Backend-Knoten auf deaktiviert und weist HAProxy damit an, keinen Traffic mehr an ihn weiterzuleiten.
- name: Drain web node
community.general.haproxy:
state: disabled
host: "{{ inventory_hostname }}"
socket: /var/run/haproxy.sockDie LB-Aufgabe auf dem LB ausführen
Der HAProxy-Socket befindet sich auf dem Load-Balancer. Delegieren Sie daher mit delegate_to an den LB-Host, während Sie weiterhin den Webknoten angeben, der drained wird.
delegate_to: lb01Warten, bis Verbindungen abgebaut sind
Geben Sie aktiven Anfragen Zeit, abgeschlossen zu werden. Verwenden Sie wait_for oder eine kurze Pause, damit Benutzer nicht mitten in einer Anfrage getrennt werden.
- name: Let traffic drain
ansible.builtin.wait_for:
timeout: 30
delegate_to: localhostJetzt sicher bereitstellen
Nachdem der Knoten aus der Rotation genommen wurde, führen Sie Ihre Aktualisierungsaufgaben aus: Pakete installieren, Konfiguration verteilen und die App neu starten. Der Live-Traffic bleibt unbeeinträchtigt. 🔧
Den Knoten wieder aktivieren
Setzen Sie den Knoten nach der Aktualisierung wieder auf enabled, damit HAProxy den Traffic erneut an Ihren frisch bereitgestellten Server weiterleitet.
- name: Re-enable web node
community.general.haproxy:
state: enabled
host: "{{ inventory_hostname }}"
socket: /var/run/haproxy.sock
delegate_to: lb01Vor der Wiederaktivierung einen Health-Check durchführen
Bestätigen Sie, dass die App tatsächlich läuft, bevor Sie sie wieder hinzufügen. Ein wait_for- oder uri-Check am Health-Endpunkt verhindert, dass ein fehlerhafter Knoten Traffic erhält.
- ansible.builtin.uri:
url: http://localhost:8080/health
status_code: 200
retries: 5
delay: 3Immer nur einen Knoten bearbeiten
Kombinieren Sie diesen Zyklus mit serial, damit jeweils nur ein oder zwei Knoten gleichzeitig drained werden. Die übrigen bedienen weiterhin Anfragen und ermöglichen so keine Ausfallzeit.
- hosts: web
serial: 1Auch bei Fehlern immer wieder aktivieren
Schließen Sie die Bereitstellung in einen block mit always ein, damit ein fehlgeschlagenes Update den Knoten trotzdem wieder in die Rotation aufnimmt, statt ihn dort zurückzulassen.
Kurze Überprüfung
Überprüfen wir das sichere Rollout-Muster.
Zusammenfassung
Für eine Bereitstellung ohne Ausfallzeit: drainen Sie einen Knoten, stellen Sie die Änderung bereit, führen Sie einen Health-Check durch und aktivieren Sie ihn anschließend wieder – mit serial und einem always-Block jeweils für einen Knoten. ✅
Häufig gestellte Fragen
Ist die Lektion „Load-Balancer-Drain und erneute Aktivierung“ kostenlos?
Ja — der vollständige Text von „Load-Balancer-Drain und erneute Aktivierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ansible Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ansible Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Load-Balancer-Drain und erneute Aktivierung“?
Nehmen Sie Nodes sicher aus dem Dienst und wieder auf. Du übst Ansible Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Ansible Academy zu starten?
Keine Vorkenntnisse erforderlich. Ansible Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Load-Balancer-Drain und erneute Aktivierung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Ansible Academy-Lektion Code schreiben und ausführen?
Ja. Jede Ansible Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Netzwerkgeräte mit cli_command automatisieren
- delegate_to und run_once für Orchestrierung
- Web-, App- und Datenbankebenen koordinieren
- Load-Balancer-Drain und erneute Aktivierung