Apache Kafka es una aplicación de software de intermediario de mensajes y procesamiento de secuencias de código abierto que le permite procesar secuencias de datos a través de una plataforma de transmisión distribuida. Actúa como un sistema de mensajería entre el remitente y el destinatario. Apache Kafka se basa en una arquitectura distribuida, por lo que proporciona una alta tolerancia a errores y capacidades de escalabilidad. Originalmente fue desarrollado por LinkedIn, pero ahora es un proyecto de Apache Software Foundation. Apache Kafka proporciona una interfaz para leer y escribir datos en clústeres de Kafka o para importar y exportar datos hacia y desde sistemas de terceros.
En esta publicación, explicaremos cómo instalar Apache Kafka en Rocky Linux 8.
Requisitos
- Un servidor que ejecuta RockyLinux 8 en Atlantic.Net Cloud Platform
- Una contraseña de root configurada en su servidor
Paso 1:crear el servidor en la nube de Atlantic.Net
Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo Rocky Linux 8 como sistema operativo con al menos 2 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.
Una vez que haya iniciado sesión en su servidor, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.
dnf update -y
Paso 2:instalar Java
Apache Kafka es una aplicación basada en Java, por lo que Java debe estar instalado en su servidor. Si no está instalado, puede instalarlo usando el siguiente comando:
dnf install java-11-openjdk-devel -y
Una vez que Java esté instalado, verifique la instalación de Java usando el siguiente comando:
java --version
Obtendrá la versión de Java en el siguiente resultado:
openjdk 11.0.13 2021-10-19 LTS OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)
Paso 3:instale Apache Kafka en Rocky Linux 8
Primero, vaya al sitio web oficial de Apache y descargue la última versión de Apache Kafka usando el comando wget:
wget https://dlcdn.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz
Una vez que se complete la descarga, extraiga el archivo descargado usando el siguiente comando:
tar -xvzf kafka_2.13-3.0.0.tgz
Una vez extraído el archivo descargado, mueva el directorio extraído a /usr/directorio local:
mv kafka_2.13-3.0.0/ /usr/local/kafka
Una vez que haya terminado, puede continuar con el siguiente paso.
Paso 4:crear un archivo de servicio de Systemd para Zookeeper y Kafka
Para el entorno de producción, se recomienda crear un archivo de servicio systemd para ejecutar tanto Zookeeper como Kafka en segundo plano.
Primero, cree un archivo de servicio systemd para Zookeeper con el siguiente comando:
nano /etc/systemd/system/zookeeper.service
Agregue las siguientes líneas:
[Unit] Description=Apache Zookeeper server Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple ExecStart=/usr/bin/bash /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties ExecStop=/usr/bin/bash /usr/local/kafka/bin/zookeeper-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target
Guarde y cierre el archivo, luego cree un archivo de servicio systemd para Kafka usando el siguiente comando:
nano /etc/systemd/system/kafka.service
Agregue las siguientes líneas:
[Unit] Description=Apache Kafka Server Documentation=http://kafka.apache.org/documentation.html Requires=zookeeper.service [Service] Type=simple Environment="JAVA_HOME=/usr/lib/jvm/jre-11-openjdk" ExecStart=/usr/bin/bash /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties ExecStop=/usr/bin/bash /usr/local/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target
Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd con el siguiente comando:
systemctl daemon-reload
A continuación, inicie los servicios Zookeeper y Kafka y habilítelos para que se inicien al reiniciar el sistema:
systemctl start zookeeper systemctl start kafka systemctl enable zookeeper systemctl enable kafka
También puede verificar ambos servicios usando el siguiente comando:
systemctl status zookeeper kafka
Obtendrá el siguiente resultado:
● zookeeper.service - Apache Zookeeper server Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-10-22 07:51:56 UTC; 42s ago Docs: http://zookeeper.apache.org Main PID: 33802 (java) Tasks: 28 (limit: 11411) Memory: 91.4M CGroup: /system.slice/zookeeper.service └─33802 java -Xmx512M -Xms512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCIn> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,676] INFO zookeeper.snapshot.compression.method = CHECKED (org.apache.zookeeper.> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,676] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapshot.0 (org.apache.z> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,679] INFO Snapshot loaded in 22 ms, highest zxid is 0x0, digest is 1371985504 (o> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,679] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapshot.0 (org.apache.z> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,683] INFO Snapshot taken in 3 ms (org.apache.zookeeper.server.ZooKeeperServer) Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,703] INFO zookeeper.request_throttler.shutdownTimeout = 10000 (org.apache.zookee> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,741] INFO PrepRequestProcessor (sid:0) started, reconfigEnabled=false (org.apach> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,764] INFO Using checkIntervalMs=60000 maxPerMinute=10000 maxNeverUsedIntervalMs=> Oct 22 07:51:58 RockyLinux8 bash[33802]: [2021-10-22 07:51:58,765] INFO ZooKeeper audit is disabled. (org.apache.zookeeper.audit.ZKAuditProvid> Oct 22 07:52:12 RockyLinux8 bash[33802]: [2021-10-22 07:52:12,102] INFO Creating new log file: log.1 (org.apache.zookeeper.server.persistence.> ● kafka.service - Apache Kafka Server Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-10-22 07:52:09 UTC; 29s ago Docs: http://kafka.apache.org/documentation.html Main PID: 34147 (java) Tasks: 69 (limit: 11411) Memory: 331.6M CGroup: /system.slice/kafka.service └─34147 /usr/lib/jvm/jre-11-openjdk/bin/java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancy> Oct 22 07:52:14 RockyLinux8 bash[34147]: [2021-10-22 07:52:14,881] INFO [/config/changes-event-process-thread]: Starting (kafka.common.ZkNodeC> Oct 22 07:52:14 RockyLinux8 bash[34147]: [2021-10-22 07:52:14,899] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Starting socket server> Oct 22 07:52:14 RockyLinux8 bash[34147]: [2021-10-22 07:52:14,981] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Started data-plane acc> Oct 22 07:52:14 RockyLinux8 bash[34147]: [2021-10-22 07:52:14,988] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Started socket server > Oct 22 07:52:15 RockyLinux8 bash[34147]: [2021-10-22 07:52:15,069] INFO Kafka version: 3.0.0 (org.apache.kafka.common.utils.AppInfoParser) Oct 22 07:52:15 RockyLinux8 bash[34147]: [2021-10-22 07:52:15,069] INFO Kafka commitId: 8cb0a5e9d3441962 (org.apache.kafka.common.utils.AppInf> Oct 22 07:52:15 RockyLinux8 bash[34147]: [2021-10-22 07:52:15,069] INFO Kafka startTimeMs: 1634889134988 (org.apache.kafka.
Paso 5:crea un tema en Kafka
Para probar Apache Kafka, deberá crear al menos un tema en el servidor.
Cambie el directorio a Apache Kafka y cree un tema de prueba llamado tema1 con el siguiente comando:
cd /usr/local/kafka/ bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic topic1
Ahora puede verificar su tema creado usando el siguiente comando:
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
Obtendrá el siguiente resultado:
topic1
Kafka proporciona dos API:Producer y Consumer. El Productor es responsable de crear eventos y el Consumidor los muestra en la pantalla:
Primero, ejecute el siguiente comando para crear un evento llamado event1 usando el siguiente comando:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic event1
Escriba algún texto que desee transmitir y mostrar en el Consumidor.
>Hi, this is my first event
Salida de muestra:
[2021-10-22 07:58:05,318] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 3 : {event1=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
Abra otra terminal y ejecute el siguiente comando para mostrar los datos de eventos generados en tiempo real:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic event1 --from-beginning
Obtendrá el siguiente resultado:
Hi, this is my first event
Conclusión
En la guía anterior, aprendiste cómo instalar Apache Kafka en Rocky Linux 8. Para obtener más información, puedes visitar la página de documentación de Apache Kafka. ¡Empiece a utilizar Apache Kafka en alojamiento VPS de Atlantic.Net!