kafka Konfiguration und zookeeper Beschreibung (kafka, zookeeper, akhq, quorum Controller)
Hallo, das ist codeshow .
Diesmal werden wir kafka üben.
clone zu Übungszwecken bitte das devcontainers repository von codeshow github .
Führen Sie vscode aus dem kafka -Ordner aus.
Führen Sie devcontainers aus.
Warten Sie, bis der container ausgeführt wird.
Wenn der container fertig ausgeführt wird, öffnen wir docker desktop.
3 kafka und Tierpfleger AKHQ laufen.
Beschreiben Sie diese Container:
Der Tierpfleger ist der distribution .
Verwalten Sie mehrere kafka Server in einer verteilten Umgebung.
AKHQ bietet eine web UI zur bequemen Verwaltung von kafka .
Es verwendet port 8080.
zookeeper sendet regelmäßig ein Herzschlagsignal an alle kafka Knoten. zookeeper macht eine ping Anfrage, Kafka gibt eine pong Antwort. Wenn ein kafka Knoten nicht antwortet, betrachtet zookeeper diesen kafka Knoten als ausgefallen.
Wenn kafka Nummer 3 fehlschlägt,
ping und pong versagen,
zookeeper löscht kafka Nummer 3 aus dem Verwaltungsknoten.
Dann werden die verbleibenden kafka 1 und 2 über den Ausfall von Knoten 3 benachrichtigt, und kafka 1 und 2 kommunizieren nicht mehr mit 3.
Als Referenz: Wenn kafka3 neu erstellt wird, wird es wie in der Abbildung gezeigt in zookeeper registriert, und kafka 1, 2 und 3 werden wieder zu cluster.
Als Referenz gibt es in der Praxis nur einen zookeeper.
Wie in der Abbildung gezeigt, werden in der production mehrere zookeeper Knoten installiert.
Konfigurieren Sie den Dienst so, dass er auch dann funktioniert, wenn ein zookeeper ausfällt.
Im Unterricht verwenden wir nur 1 zookeeper, da wir keine hohe Verfügbarkeit wie in der Produktionsumgebung benötigen.
Gehen wir zum Nodes -Menü, das von AKHQ mit browser bereitgestellt wird.
Auf dem Bildschirm laufen insgesamt 3 kafka Knoten.
Stoppen Sie kafka2 im docker desktop.
Wenn Sie zum Knotenmenü von AKHQ zurückkehren und aktualisieren,
Sie können sehen, dass kafka2 weg ist.
Drücken Sie erneut die start Schaltfläche im docker desktop .
Warten Sie, bis kafka den Nodes Bildschirm in AKHQ geladen und aktualisiert hat.
kafka2 wird erneut auf dem Bildschirm nachgeschlagen.
Unter diesen kafka Knoten werden wir den control stoppen.
Wenn der control zuvor die health check bestanden hat, können Sie sehen, dass ein anderer Knoten zum control wird.
In kafka ist zookeeper für die Koordination zwischen Knoten in einer verteilten Umgebung verantwortlich.
Da die admin server Einstellung von zookeeper in den devcontainer-Einstellungen auf true gesetzt wurde,
Wir können zookeeper über den port 8081 über den Browser überprüfen.
Ich gebe localhost Doppelpunkt 8081 slash commands im Browser als Adresse ein.
Auf der commands sehen Sie Befehle, die von zookeeper als Links bereitgestellt werden.
Wählen Sie den connections aus.
http://localhost:8081/commands/connections
Durch die von connections abgerufenen JSON-Daten können Sie die Informationen des mit zookeeper verbundenen kafka Knotens überprüfen.
Lassen Sie uns überprüfen, ob diese IP der kafka Knoten ist, indem Sie den docker container eingeben.
hostname -I
Sie können sehen, dass die zookeeper Verbindungsinformationen mit der IP des kafka Knotens übereinstimmen.
Sie können die Verbindungsinformationen von drei kafka Knoten im connections überprüfen.
Jetzt können Sie sehen, dass insgesamt 3 kafka Knoten regelmäßig ping Prüfungen durchführen.
Wie in der vorherigen Abbildung erläutert,
Wenn ping oder pong fehlschlagen, überträgt zookeeper Informationen über den ausgefallenen Knoten an andere kafka Knoten.
Die beiden verbleibenden kafka Knoten kommunizieren nicht mehr mit dem ausgefallenen Knoten.
Und wenn der kafka Knoten im zookeeper wieder zum Leben erwacht und ping und pong erfolgreich sind,
Diese Informationen werden erneut an die verbleibenden zwei Knoten weitergegeben, und diese kafka Knoten kommunizieren mit dem neuen Knoten.
Darüber hinaus benötigt jeder kafka Knoten im Wesentlichen einen Controller.
Dieser Controller-Knoten ist ein sehr wichtiger Knoten, der andere kafka Knoten verwaltet und steuert.
Bei Verwendung von zookeeper kann nur ein kafka Knoten ein Controller-Knoten sein.
Wenn dieser eine Controller-Knoten ausfällt, können alle kafka cluster nicht funktionieren.
Wenn also der Controller-Knoten ausfällt, sollte einer der anderen kafka Knoten als Controller-Knoten ausgewählt werden.
Zu diesem Zeitpunkt werden die Knoten durch Abstimmung gewählt, und der zookeeper ist an diesem Prozess beteiligt.
Daher spielt zookeeper eine wichtige Rolle im verteilten System von kafka .
Als Referenz werden die restlichen Knoten mit Ausnahme des Controller-Knotens broker Knoten genannt. Der Knoten, der partition, was Sie in der nächsten Lektion lernen werden, ist für den broker Knoten verantwortlich. Der Controller-Knoten verwaltet die broker Knoten und speichert verschiedene Metadaten zur Verwendung durch die broker Knoten.
Als Referenz stellt kafka ab Version 2.8.0 zusätzlich einen quorum Controller zur Verfügung.
Es verwaltet kafka Metadaten direkt auf dem kafka Knoten, ohne zookeeper über das KRaft protocol zu verwenden, ohne kafka mit zookeeper zu koordinieren.
Im Vergleich zum bestehenden zookeeper, der nur einen Controller-Knoten hat,
Ein quorum Controller kann mehrere Controller-Knoten haben.
Das heißt, wenn ein Controller-Knoten ausfällt, kann sofort ein anderer Controller-Knoten verwendet werden.
Der Controller Node synchronisiert immer Metadaten.
Die bestehenden Kosten für das Kopieren von Metadaten von zookeeper werden reduziert, sodass Controller-Knoten sehr schnell gestartet werden können.
Im Moment haben Sie zwei Möglichkeiten: zookeeper und quorum .
In Zukunft könnte kafka zookeeper ablehnen.
Da es aber gerade im Umbruch ist, finde ich es gut, zookeeper und quorum der Reihe nach zu lernen.
Wir üben das einfache Abfragen von zookeeper mit dem shell Befehl.
Führen Sie die shell des container aus, in dem kafka installiert ist.
Fragen Sie alle kafka über zookeeper ab.
zookeeper-shell zookeeper:2181 ls /brokers/ids
Ich habe bestätigt, dass es insgesamt drei 0, 1, 2- cluster im Array gibt.
Schauen wir uns die 0. kafka Informationen mit dem get Befehl an.
zookeeper-shell zookeeper:2181 get /brokers/ids/0
zookeeper-shell zookeeper:2181 get /brokers/ids/1
zookeeper-shell zookeeper:2181 get /brokers/ids/2
Sie können die in zookeeper gespeicherten Kafka- broker überprüfen.
Durch das Obige haben wir gelernt, wie man verschiedene Informationen von kafka in einer verteilten Umgebung mit zookeeper speichert und koordiniert.
Oben haben wir uns die kafka Umgebungseinstellungen und den internen Betrieb angesehen.
Beim nächsten Mal werden wir über topic und partition lernen.
Benachrichtigungseinstellungen für Abonnieren und Liken sind sehr hilfreich für Inhaltsersteller.
Danke