Apache Kafka è un'applicazione software open source per l'elaborazione di flussi e broker di messaggi che consente di elaborare flussi di dati tramite una piattaforma di streaming distribuita. Funziona come un sistema di messaggistica tra il mittente e il destinatario. Apache Kafka si basa su un'architettura distribuita, quindi offre un'elevata tolleranza ai guasti e capacità di scalabilità. È stato originariamente sviluppato da LinkedIn, ma ora è un progetto di Apache Software Foundation. Apache Kafka fornisce un'interfaccia per leggere e scrivere dati nei cluster Kafka o per importare ed esportare dati da e verso sistemi di terze parti.
In questo post spiegheremo come installare Apache Kafka su Rocky Linux 8.
Prerequisiti
- Un server che esegue RockyLinux 8 sulla piattaforma Atlantic.Net Cloud
- Una password di root configurata sul tuo server
Fase 1:crea un server cloud Atlantic.Net
Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Rocky Linux 8 come sistema operativo con almeno 2 GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.
Una volta effettuato l'accesso al server, eseguire il comando seguente per aggiornare il sistema di base con gli ultimi pacchetti disponibili.
dnf update -y
Fase 2 – Installa Java
Apache Kafka è un'applicazione basata su Java, quindi Java deve essere installato sul tuo server. Se non è installato, puoi installarlo usando il seguente comando:
dnf install java-11-openjdk-devel -y
Una volta installato Java, verifica l'installazione di Java utilizzando il seguente comando:
java --version
Otterrai la versione Java nel seguente output:
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)
Fase 3 – Installa Apache Kafka su Rocky Linux 8
Per prima cosa, vai al sito Web ufficiale di Apache e scarica l'ultima versione di Apache Kafka usando il comando wget:
wget https://dlcdn.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz
Una volta completato il download, estrai il file scaricato utilizzando il seguente comando:
tar -xvzf kafka_2.13-3.0.0.tgz
Una volta estratto il file scaricato, sposta la directory estratta nella directory /usr/local:
mv kafka_2.13-3.0.0/ /usr/local/kafka
Una volta terminato, puoi procedere al passaggio successivo.
Fase 4:crea un file di servizio Systemd per Zookeeper e Kafka
Per l'ambiente di produzione, si consiglia di creare un file di servizio systemd per eseguire Zookeeper e Kafka in background.
Innanzitutto, crea un file di servizio systemd per Zookeeper con il seguente comando:
nano /etc/systemd/system/zookeeper.service
Aggiungi le seguenti righe:
[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
Salva e chiudi il file, quindi crea un file di servizio systemd per Kafka utilizzando il seguente comando:
nano /etc/systemd/system/kafka.service
Aggiungi le seguenti righe:
[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
Salva e chiudi il file, quindi ricarica il demone systemd con il seguente comando:
systemctl daemon-reload
Quindi, avvia entrambi i servizi Zookeeper e Kafka e consenti loro di avviarsi al riavvio del sistema:
systemctl start zookeeper systemctl start kafka systemctl enable zookeeper systemctl enable kafka
Puoi anche controllare entrambi i servizi usando il seguente comando:
systemctl status zookeeper kafka
Otterrai il seguente output:
● 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.
Fase 5:crea un argomento su Kafka
Per testare Apache Kafka, dovrai creare almeno un argomento sul server.
Cambia la directory in Apache Kafka e crea un argomento di prova chiamato topic1 con il seguente comando:
cd /usr/local/kafka/ bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic topic1
Ora puoi verificare l'argomento creato utilizzando il seguente comando:
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
Otterrai il seguente output:
topic1
Kafka fornisce due API:Producer e Consumer. Il Produttore è responsabile della creazione degli eventi e il Consumatore li visualizza sullo schermo:
Innanzitutto, esegui il comando seguente per creare un evento denominato evento1 utilizzando il comando seguente:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic event1
Digita del testo che desideri trasmettere in streaming e visualizzare sul consumatore.
>Hi, this is my first event
Esempio di output:
[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)
Apri un altro terminale ed esegui il comando seguente per visualizzare i dati dell'evento generato in tempo reale:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic event1 --from-beginning
Otterrai il seguente output:
Hi, this is my first event
Conclusione
Nella guida sopra, hai imparato come installare Apache Kafka su Rocky Linux 8. Per ulteriori informazioni, puoi visitare la pagina della documentazione di Apache Kafka. Inizia con Apache Kafka sull'hosting VPS da Atlantic.Net!