El blog anterior tiene una comprensión detallada de los conceptos básicos, los modelos de producción y consumo y la arquitectura básica de Kafka. Tengo una comprensión general de Kafka. El marco general puede entenderse como la siguiente arquitectura [El líder y seguidor de una partición de partición no Almacenado en un agente]: una vez
que se produce el mensaje, se envía al clúster de Kafka según el tema y el clúster administra el mensaje. El clúster de consumidores extrae el mensaje de forma activa y lo consume [la velocidad de consumo del consumidor se puede determinar por sí mismo, y puede existir El desperdicio del sondeo de conexión larga], el mensaje general y la gestión del clúster son realizados por Zookeeper . Después de comprenderlos, creemos un clúster de Kafka. Como solo tengo una computadora, usaré la construcción de máquinas virtuales para construir el entorno. Luego, primero implemento una máquina virtual de un solo nodo y ejecuto kafka en ella, y luego clono dos máquinas virtuales para formar una Clúster de máquinas virtuales distribuidas .
Instalación de máquina virtual de nodo único
Utilizo la siguiente combinación para construir la máquina virtual: Al preparar el entorno, decidí usar VMware + Centos7 + SecureCRT + AppNode para construir y administrar la máquina virtual. El proceso de construcción detallado no se trata aquí. Puede consultar mi otro artículo [distribución Escriba cluster building one] Configuración de máquina virtual (VMware + Centos7 + SecureCRT + AppNode) , después de construir una máquina virtual de un solo nodo de acuerdo con este artículo, podemos instalar Kafka en ella:
Descargue e instale Kafka
Busque un sitio espejo en el sitio web oficial para descargar Kafka desde el sitio oficial de kafka . Aquí elegimos el sitio espejo de la Universidad de Tsinghua para descargar un Kafka:
Tenga en cuenta que aquí hay un pozo. Si lo tira directamente a centos mediante wget y lo descomprime, se informará un error, por lo que primero lo descargamos en Windows, luego lo cargamos en centos, lo
descomprimimos directamente a través de nuestro AppNode: o usamos el comando : tar -xvf kafka_2.13-2.6.0.tgz
, puede ver después de que se completa la descompresión Vaya al directorio anterior
Modificar el archivo de configuración de Zookeeper
Ingrese el siguiente /kafka/kafka_2.13-2.6.0/config/修改zookeeper.properties
archivo de configuración de ruta
dataDir=/tmp/zookeeper
dataLogDir=/tmp/zookeeper/log
clientPort=2181
maxClientCnxns=0
admin.enableServer=false
tickTime=2000
initLimit=10
syncLimit=5
#设置broker Id的服务地址,这里的0、1、2和brokerid保持一致
server.0=192.168.5.101:2888:3888
server.1=192.168.5.102:2888:3888
server.2=192.168.5.103:2888:3888
Entre ellos, el puerto 2888 es el puerto de comunicación de zookeeper y el puerto 3888 es el puerto de elección. Luego ingrese el directorio /tmp/zookeeper
de dataDir para crear un archivo myid, y escriba el valor específico de server.id (se recomienda que sea consistente con broker.id de kafka)
y complete el número de serie consistente con brokerid y el servidor correspondiente de la ip local en myid:
Modificar el archivo de configuración de Kafka
Ingrese la siguiente ruta /kafka/kafka_2.13-2.6.0/config/
y modifique la configuración de server.properties:
broker.id=0
zookeeper.connect=192.168.5.101:2181,192.168.5.102:2181,192.168.5.103:2181
log.dirs=/kafka/kafka_2.13-2.6.0/data
Clonar un clúster de máquinas virtuales
Para clonar el clúster y administrarlo, consulte mi otro blog: [Distributed Cluster Construction Two] Clone la máquina virtual y configure el clúster . Se utilizan tres máquinas para la configuración del clúster distribuido. Una vez completada la configuración, puede ver que el clúster está funcionando normalmente: por
supuesto Una vez completada la clonación, debemos modificar el archivo de configuración y
Cree un archivo myid para cada máquina
Ingrese el directorio dataDir /tmp/zookeeper
para crear un archivo myid, y escriba el valor específico de server.id, escriba 1 y 2 en los archivos myid de 102 y 103, respectivamente, y manténgalo consistente con server.id y brokerid de cada máquina.
Modificar la configuración de Kafka de cada máquina
Ingrese la siguiente ruta de cada máquina /kafka/kafka_2.13-2.6.0/config/
y modifique la configuración de server.properties
broker.id=0
zookeeper.connect=192.168.5.101:2181,192.168.5.102:2181,192.168.5.103:2181
log.dirs=/kafka/kafka_2.13-2.6.0/data
broker.id=1
zookeeper.connect=192.168.5.101:2181,192.168.5.102:2181,192.168.5.103:2181
log.dirs=/kafka/kafka_2.13-2.6.0/data
broker.id=2
zookeeper.connect=192.168.5.101:2181,192.168.5.102:2181,192.168.5.103:2181
log.dirs=/kafka/kafka_2.13-2.6.0/data
Ejecutar el comando kafka
Una vez completada la modificación, utilicemos Kafka para implementarla.En este momento, use SecureCRT para abrir tres sesiones al mismo tiempo: opere por separado en las tres máquinas como un demonio:
Empezar cuidador del zoológico y Kafka
启动zookeeper bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
启动kafka集群 bin/kafka-server-start.sh -daemon config/server.properties
Crear tema, ver el tema creado, ver los detalles del tema
创建topic bin/kafka-topics.sh --zookeeper 192.168.5.101:2181 --create --replication-factor 3 --partitions 1 --topic tml-second
查看topic列表 bin/kafka-topics.sh --zookeeper 192.168.5.101:2181 --list
查看topic详情 bin/kafka-topics.sh --zookeeper 192.168.5.101:2181 --describe --topic tml-second
Cabe señalar que la cantidad de copias no puede exceder la cantidad de máquinas de clúster. Si dos copias de la misma partición aparecen en la misma máquina, el efecto de partición se perderá, de la siguiente manera:
Al ver los detalles, la primera línea muestra un resumen de todas las particiones. Cada línea a continuación da la información en una partición. Si solo tenemos una partición, solo se muestra una línea.
- El líder es el nodo responsable de leer y escribir entre todos los particiones dados. Cada nodo puede convertirse en el líder. Aquí, el líder es 2, que son 102 máquinas.
- Réplicas muestra la lista de nodos del nodo donde se almacenan todas las réplicas de un partiton determinado, independientemente de si el nodo es el líder o si está vivo o no, aquí están nuestras tres máquinas, 0, 1, 2. Correspondientes a 101, 102, 103 respectivamente.
- El conjunto de nodos cuyas copias de isr se han sincronizado. Todos los nodos de este conjunto están en un estado activo y sincronizados con el líder. Aquí están nuestras tres máquinas, 0, 1, 2. Correspondientes a 101, 102 y 103 respectivamente. Significa que nuestras tres máquinas no están fuera de línea en el clúster.
Usemos un caso complejo para determinar su mecanismo de distribución:
Envía mensajes, consume mensajes
发送消息:bin/kafka-console-producer.sh --broker-list 192.168.5.101:9092 --topic tml-second
消费消息:bin/kafka-console-consumer.sh --bootstrap-server 192.168.5.102:9092 --from-beginning --topic tml-second
消费同一个组的消息:bin/kafka-console-consumer.sh --bootstrap-server 192.168.5.102:9092 --topic tml-second --consumer.config config/consumer.properties
Eliminar tema
bin/kafka-topics.sh --zookeeper 192.168.5.101:2181 --delete --topic tml-kafka
Cerrar el servicio kafka
bin/kafka-server-stop.sh stop
Este blog es un proceso difícil. Dado que Linux no es muy grande, el clúster siempre falla al iniciarse después de que el clúster está configurado. Se necesitaron dos días para descubrir que zookeeper y kafka no se iniciaron como un proceso demonio. CTRL + C eliminó el proceso y provocó el seguimiento. Kafka siempre no puede conectarse con el guardián del zoológico, pero finalmente se ha construido un clúster distribuido y ¡habrá otra aldea!