configuration de kafka et description du zookeeper (kafka, zookeeper, akhq, contrôleur de quorum )
Bonjour, c’est un codeshow .
Cette fois, nous allons pratiquer le kafka .
Pour vous entraîner, veuillez clone le repository devcontainers de codeshow github .
Exécutez vscode à partir du dossier kafka .
Exécutez devcontainers .
Attendez que le container s’exécute.
Lorsque le container aura fini de s’exécuter, nous ouvrirons docker desktop.
3 kafka et gardien de zoo AKHQ courent.
Décrivez ces conteneurs :
Le gardien du zoo est le coordinator du system de distribution.
Gérez plusieurs serveurs kafka dans un environnement distribué.
AKHQ fournit une UI web pour gérer facilement kafka .
Il utilise le port 8080.
zookeeper envoie périodiquement un signal de battement de cœur à tous les nœuds kafka . zookeeper fait une ping , Kafka fait une pong . Si un nœud kafka ne répond pas, zookeeper considère que ce nœud kafka a échoué.
Si kafka numéro 3 échoue,
le ping et le pong échouent,
zookeeper supprime kafka numéro 3 du nœud de gestion.
Ensuite, les kafka 1 et 2 restants sont informés de l’échec du nœud 3, et les kafka 1 et 2 ne communiquent plus avec 3.
Pour référence, lorsque kafka3 est recréé, il est enregistré dans zookeeper comme indiqué sur la figure, et kafka 1, 2 et 3 redeviennent des cluster.
Pour référence, en pratique, il n’y a qu’un seul zookeeper,
Comme le montre la figure, dans production , plusieurs nœuds zookeeper sont installés.
Configurez le service pour qu’il fonctionne même si un zookeeper tombe en panne.
En classe, nous n’utiliserons qu’un seul zookeeper car nous n’avons pas besoin d’une haute disponibilité comme l’environnement de production.
Passons au menu Nodes fourni par AKHQ avec browser .
Au total, 3 nœuds kafka s’exécutent à l’écran.
Arrêtez kafka2 dans le desktop docker .
Si vous revenez au menu du nœud d’ AKHQ et actualisez,
Vous pouvez voir que kafka2 a disparu.
Encore une fois, appuyez sur le start dans le desktop docker .
Attendez que kafka se charge et actualise Nodes dans AKHQ .
kafka2 sera de nouveau recherché à l’écran.
Parmi ces nœuds kafka , nous arrêterons le control .
Si le control a précédemment échoué à la check de l’état, vous pouvez voir qu’un autre nœud devient le control .
Dans kafka, zookeeper est responsable de la coordination entre les nœuds dans un environnement distribué.
Étant donné que le paramètre du server admin de zookeeper a été défini sur true dans les paramètres devcontainer,
Nous pouvons vérifier les informations du zookeeper via le port 8081 via le navigateur.
Je vais taper les commands slash localhost deux-points 8081 dans le navigateur comme adresse.
Sur la commands , vous pouvez voir les commandes fournies par zookeeper sous forme de liens.
Sélectionnez le connections .
http://localhost:8081/commands/connections
Grâce aux json récupérées par les connections , vous pouvez vérifier les informations du nœud kafka connecté à zookeeper .
Vérifions si cette adresse IP est le kafka en entrant dans le container docker .
hostname -I
Vous pouvez voir que les zookeeper correspondent à l’adresse IP du nœud kafka .
Vous pouvez vérifier les informations de connexion de trois nœuds kafka dans le connections .
Maintenant, vous pouvez voir qu’un total de 3 nœuds kafka vérifient périodiquement le ping .
Comme expliqué dans la figure précédente,
Lorsque ping ou pong échoue, zookeeper transmet des informations sur le nœud défaillant aux autres nœuds kafka .
Les deux nœuds kafka restants ne communiquent plus avec le nœud défaillant.
Et quand le kafka revient à la vie dans zookeeper et que le ping et le pong réussissent,
Ces informations sont à nouveau propagées aux deux nœuds restants, et ces nœuds kafka communiquent avec le nouveau nœud.
De plus, chaque nœud kafka a essentiellement besoin d’un contrôleur.
Ce nœud de contrôleur est un nœud très important qui gère et contrôle les autres nœuds kafka .
Lors de l’utilisation de zookeeper, un seul nœud kafka peut être un nœud de contrôleur.
Si ce nœud de contrôleur tombe en panne, tous les cluster kafka ne peuvent pas fonctionner.
Ainsi, si le nœud de contrôleur tombe en panne, l’un des autres nœuds kafka doit être élu comme nœud de contrôleur.
À l’heure actuelle, les nœuds sont élus par vote et le zookeeper est impliqué dans ce processus.
Par conséquent, le zookeeper joue un rôle important dans le système distribué kafka .
Pour référence, le reste des nœuds, à l’exception du nœud contrôleur, sont appelés nœuds broker . Le nœud qui stocke les partition, que vous découvrirez dans la prochaine leçon, est en charge du broker . Le nœud de contrôleur gère les broker et stocke diverses métadonnées à utiliser par les broker .
Pour référence, kafka fournit en outre un quorum à partir de la version 2.8.0.
Il gère les métadonnées kafka directement sur le kafka sans utiliser zookeeper via le protocol KRaft sans coordonner kafka avec zookeeper .
Par rapport au zookeeper existant, qui n’a qu’un seul nœud de contrôleur,
Un quorum peut avoir plusieurs nœuds de contrôleur.
Autrement dit, si un nœud de contrôleur tombe en panne, un autre nœud de contrôleur peut être utilisé immédiatement.
Le nœud de contrôleur synchronise toujours les métadonnées.
Le coût existant de la copie des métadonnées de zookeeper est réduit, de sorte que les nœuds de contrôleur peuvent être démarrés très rapidement.
En ce moment, vous avez deux choix : zookeeper et quorum .
À l’avenir, kafka pourrait déconseiller zookeeper.
Cependant, comme il est actuellement en transition, je pense qu’il est bon d’apprendre le zookeeper et le contrôleur de quorum dans l’ordre.
Nous nous exercerons simplement à interroger zookeeper à l’aide de la shell .
Exécutez le shell du container où kafka est installé.
Interrogez tous les kafka via zookeeper .
zookeeper-shell zookeeper:2181 ls /brokers/ids
J’ai confirmé qu’il y a un total de trois cluster 0, 1, 2 dans le tableau.
Regardons la 0ème information kafka avec la get .
zookeeper-shell zookeeper:2181 get /brokers/ids/0
zookeeper-shell zookeeper:2181 get /brokers/ids/1
zookeeper-shell zookeeper:2181 get /brokers/ids/2
Vous pouvez vérifier les informations du broker kafka stockées dans zookeeper .
Grâce à ce qui précède, nous avons appris à stocker et à coordonner diverses informations de kafka dans un environnement distribué avec zookeeper .
Ci-dessus, nous avons examiné les paramètres de l’environnement kafka et le fonctionnement interne.
La prochaine fois, nous en apprendrons davantage sur les topic et les partition.
Les paramètres de notification d’abonnement et de like sont très utiles pour les créateurs de contenu.
merci