Configuración de kafka y descripción del zookeeper (kafka, zookeeper, akhq, controlador de quorum )

Hola, esto es codeshow .
Esta vez practicaremos kafka .

Para practicar, clone el repository devcontainers de codeshow github .
Ejecute vscode desde la carpeta kafka .
Ejecute devcontainers .
Espere hasta que el container se ejecute.
Cuando el container termine de ejecutarse, abriremos docker desktop.
3 kafka y el cuidador del zoológico AKHQ se están postulando.

Describa estos contenedores:
El cuidador del zoológico es el coordinator del system de distribution .
Administre múltiples servidores kafka en un entorno distribuido.

AKHQ proporciona una UI web para administrar kafka de manera conveniente.
Utiliza el port 8080.

zookeeper envía periódicamente una señal de latido del corazón a todos los nodos kafka . zookeeper hace una ping , Kafka hace una pong . Si algún nodo kafka no responde, zookeeper considera que ese nodo kafka ha fallado.

Si el kafka número 3 falla,
ping y pong fallan,
zookeeper elimina kafka número 3 del nodo de gestión.
Luego, se notifica a los kafka 1 y 2 restantes sobre la falla del nodo 3, y kafka 1 y 2 ya no se comunican con 3.
Como referencia, cuando se recrea kafka3, se registra en zookeeper como se muestra en la figura, y kafka 1, 2 y 3 vuelven a convertirse en cluster.

Como referencia, en la práctica, solo hay un zookeeper,
Como se muestra en la figura, en el production se instalan varios nodos zookeeper .
Configure el servicio para que funcione incluso si un zookeeper deja de funcionar.
En clase, usaremos solo 1 zookeeper porque no necesitamos una alta disponibilidad como el entorno de producción.

Vayamos al menú de Nodes proporcionado por AKHQ con el browser .
Un total de 3 nodos kafka se están ejecutando en la pantalla.

Detenga kafka2 en el desktop docker .
Si regresa al menú de nodos de AKHQ y actualiza,
Puedes ver que kafka2 se ha ido.
Nuevamente, presione el start en el desktop docker .
Espere a que kafka se cargue y actualice la Nodes en AKHQ .
kafka2 se buscará en la pantalla nuevamente.
Entre estos nodos kafka , detendremos el control .
Si el control falló previamente en la check de estado, puede ver que otro nodo se convierte en el control .

En kafka, zookeeper es responsable de la coordinación entre nodos en un entorno distribuido.
Dado que la configuración del server de admin de zookeeper se estableció en verdadero en la configuración de devcontainer,
Puedo verificar la información del zookeeper a través del port 8081 a través del navegador.

Escribiré los commands de slash localhost colon 8081 en el navegador como la dirección.

En la página de commands , puede ver los comandos proporcionados por zookeeper como enlaces.
Seleccione el connections .

http://localhost:8081/commands/connections

A través de los json recuperados por las connections , puede consultar la información del nodo kafka conectado a zookeeper .

Verifiquemos si esta IP es el kafka ingresando al container docker .

hostname -I

Puede ver que la zookeeper coincide con la IP del nodo kafka .
Puede verificar la información de conexión de tres nodos kafka en la connections .
Ahora, puede ver que un total de 3 nodos kafka están haciendo ping periódicamente.
Como se explica en la figura anterior,
Cuando falla ping o pong , zookeeper transmite información sobre el nodo fallido a otros nodos kafka .
Los dos nodos kafka restantes ya no se comunican con el nodo fallido.
Y cuando el kafka vuelve a la vida en zookeeper y ping and pong tiene éxito,
Esta información se propaga nuevamente a los dos nodos restantes, y estos nodos kafka se comunican con el nuevo nodo.

Además, cada nodo kafka esencialmente necesita un controlador.
Este nodo controlador es un nodo muy importante que administra y controla otros nodos kafka .
Cuando se usa zookeeper, solo un nodo kafka puede ser un nodo controlador.
Si este nodo del controlador falla, todos los cluster de kafka no pueden funcionar.
Entonces, si el nodo controlador falla, uno de los otros nodos kafka debe elegirse como nodo controlador.
En este momento, los nodos se eligen mediante votación y el zookeeper está involucrado en este proceso.
Por lo tanto, zookeeper juega un papel importante en el sistema distribuido kafka .
Como referencia, el resto de los nodos, excepto el nodo controlador, se denominan nodos broker . El nodo que almacena las partition, del que aprenderá en la próxima lección, está a cargo del nodo broker . El nodo controlador gestiona los broker y almacena varios metadatos para que los utilicen los broker .

Como referencia, kafka también proporciona un quorum a partir de la versión 2.8.0.
Gestiona los metadatos kafka directamente en el kafka sin usar zookeeper a través del protocol KRaft sin coordinar kafka con zookeeper .
En comparación con el zookeeper existente, que solo tiene un nodo controlador,
Un quorum puede tener varios nodos de controlador.
Es decir, si falla un nodo de controlador, se puede usar otro nodo de controlador inmediatamente.
El nodo controlador siempre sincroniza los metadatos.
Se reduce el costo existente de copiar metadatos de zookeeper, por lo que los nodos de controlador se pueden iniciar muy rápidamente.
En este momento tienes dos opciones: zookeeper y quorum .
En el futuro, kafka puede desaprobar a zookeeper.
Sin embargo, dado que actualmente se encuentra en transición, creo que es bueno aprender a zookeeper y al controlador de quorum en orden.

Practicaremos simplemente consultando a zookeeper usando el shell .
Ejecute el shell del container donde está instalado kafka .

Consulta todo kafka a través de zookeeper .

zookeeper-shell zookeeper:2181 ls /brokers/ids

Confirmé que hay un total de tres 0, 1, 2 cluster en la matriz.

Veamos la información de kafka 0th con el 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

Puede consultar la información del broker kafka almacenada en zookeeper .
A través de lo anterior, aprendimos cómo almacenar y coordinar información diversa de kafka en un entorno distribuido con zookeeper .

Arriba, analizamos la configuración del entorno kafka y el funcionamiento interno.
La próxima vez, aprenderemos sobre topic y partition.

La configuración de notificación de suscripción y me gusta es muy útil para los creadores de contenido.

gracias