Installazione Apache Kafka Server su Ubuntu 18.04
In questo tutorial andremo ad esaminare il prodotto Apache Kafka, sistema di gestione messaggistica distribuita su Ubuntu Server 18.04.
Partiamo da una macchina virtuale Ubuntu 18.04 preinstallata (per l’installazione leggere questo articolo) ed aggiorniamo il sistema
sudo apt update
sudo apt upgrade
Per poter utilizzare Apache Kafka è necessario installare la JDK versione 8 (utilizzeremo la versione open)
sudo apt-get install openjdk-8-jdk
insieme ad Apache Kafka, installeremo Apache ZooKeeper, che non è altro che un software per la gestione di applicazioni distribuite, l’aiuto che ZooKeeper fornisce a Kafka consiste nel coordinamento di consumer e broker
sudo apt-get install zookeeperd
abilitiamo l’avvio automatico al boot di ZooKeeper
sudo systemctl enable zookeeper
infine verifichiamo che il servizio ZooKeeper sia attivo sulla porta standard 2181
ss -a | grep 2181
tcp LISTEN 0 50 *:2181
completata l’installazione del componente ZooKeeper, scarichiamo dal sito ufficiale Apache Kafka
cd
wget http://apache.panu.it/kafka/2.0.0/kafka_2.12-2.0.0.tgz
tar -xvzf kafka_2.12-2.0.0.tgz
sudo mv kafka_2.12-2.0.0/ /opt/
cd /opt
sudo mv kafka_2.12-2.0.0/ apachekafka/
Impostiamo le variabili di ambienti per l’utente che dovrà far partire il server Kafka, per semplicità utilizzo root , ma è consigliato creare un utente apposito
sudo vim /etc/profile
aggiungiamo alla fine del file
export KAFKA_HOME=”/opt/apachekafka/”
export PATH=”$PATH:${KAFKA_HOME}/bin”
sudo reboot
a questo punto avviamo manualmente il server Kafka
cd /opt/apachekafka/bin
sudo ./kafka-server-start.sh ../config/server.properties
quindi il sistema in output inizializzerà il servizio.
Per testare la funzionalità del tutto, simuliamo una comunicazione tra producer e consumer, attraverso gli strumenti offerti da Kafka; creiamo un Topic
cd /opt/apachekafka/bin
sudo ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Created topic “test”.
adesso simuliamo il producer che invia messaggi in tempo reale
sudo ./kafka-console-producer.sh --broker-list localhost:9092 --topic test
viene fornito un prompt per l’invio del messaggio (>) e successivamente simuliamo su un’altra shell il consumer
cd /opt/apachekafka/bin
sudo ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
Per avere evidenza del funzionamento della comunicazione tra producer e consumer scriviamo un messaggio nella finestra del producer e dall’altra parte il consumer la visualizzerà
Per vedere la lista dei topic attivi (vengono creati per non distinguere a chi inviare)
cd /opt/apachekafka/bin
sudo ./kafka-topics.sh --list --zookeeper localhost:2181
test
Per creare il servizio su systemd che avvia automaticamente Apache Kafka, bisogna creare
sudo vim /etc/systemd/system/apachekafka.service
[Unit]
Description=Apache Kafka
After=network.target
[Service]
User=root
ExecStart=/opt/apachekafka/bin/kafka-server-start.sh /opt/apachekafka/config/server.properties
[Install]
WantedBy=multi-user.target
sudo systemctl enable apachekafka.service
sudo systemctl start apachekafka.service