Installation et configuration de ZooKeeper
Pour exécuter Kafka, une instance de ZooKeeper est nécessaire, car Kafka s'appuie sur ce service pour la gestion des métadonnées du cluster. Voici les étapes à suivre pour installer ZooKeeper sur un système CentOS.
Téléchargement et extraction
Commencez par télécharger une version stable de ZooKeeper depuis un miroir Apache :
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
Extrayez l'archive dans le répertoire courant :
tar -zxvf zookeeper-3.4.14.tar.gz
mv zookeeper-3.4.14 /usr/local/
Configuration initiale
Copiez le fichier de configuration par défaut :
cd /usr/local/zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cfg
Créez un répertoire dédié au stockage des données :
mkdir /usr/local/zookeeper-3.4.14/data
Modifiez le fichier zoo.cfg pour y inclure le chemin du répertoire de données :
dataDir=/usr/local/zookeeper-3.4.14/data
Lancement du service
Démarrez ZooKeeper à l’aide du script fourni :
/usr/local/zookeeper-3.4.14/bin/zkServer.sh start
Vérifiez son statut :
/usr/local/zookeeper-3.4.14/bin/zkServer.sh status
Le mode standalone indique que ZooKeeper fonctionne en mode autonome. Le port par défaut utilisé est le 2181.
Installation de Kafka
Kafka nécessite d’abord que ZooKeeper soit opérationnel. Procédez ensuite à l’installation du broker Kafka.
Téléchargement et déploiement
Téléchargez la distribution binaire de Kafka :
wget https://archive.apache.org/dist/kafka/2.2.2/kafka_2.11-2.2.2.tgz
tar -zxvf kafka_2.11-2.2.2.tgz
mv kafka_2.11-2.2.2 /usr/local/
Configuration du serveur Kafka
Accédez au répertoire de configuration et modifiez le fichier server.properties :
vim /usr/local/kafka_2.11-2.2.2/config/server.properties
Assurez-vous que la ligne suivante est correctement définie pour spécifier l'emplacement des logs :
log.dirs=/usr/local/kafka_2.11-2.2.2/kafka-logs
Démarrage du broker Kafka
Avant de démarrer Kafka, vérifiez que ZooKeeper est actif. Ensuite, lancez le serveur Kafka :
/usr/local/kafka_2.11-2.2.2/bin/kafka-server-start.sh config/server.properties
En cas de succès, vous verrez des messages indiquant que KafkaServer a démarré correctement. Le processus écoute par défaut sur le port 9092.
Vérification du déploiement
Utilisez la commande jps pour confirmer que les deux processus sont en cours d’exécution :
jps
Vous devriez observer les processus QuorumPeerMain (ZooKeeper) et Kafka.
Vérifiez également l’écoute réseau :
netstat -tulnp | grep 9092
Gestion des topics
Créez un topic nommé demo avec une seule partition et un facteur de réplication unitaire :
/usr/local/kafka_2.11-2.2.2/bin/kafka-topics.sh --create --topic demo --partitions 1 --replication-factor 1 --zookeeper localhost:2181
Listez les topics existants :
/usr/local/kafka_2.11-2.2.2/bin/kafka-topics.sh --list --zookeeper localhost:2181
Affichez les détails d’un topic spécifique :
/usr/local/kafka_2.11-2.2.2/bin/kafka-topics.sh --describe --topic demo --zookeeper localhost:2181
Production et consommation de messages
Ouvrez un terminal pour lancer un producteur en ligne de commande :
/usr/local/kafka_2.11-2.2.2/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic demo
Saisissez quelques messages comme Hello Kafka.
Dans un autre terminal, démarez un consommateur :
/usr/local/kafka_2.11-2.2.2/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic demo --from-beginning
Les messages envoyés par le producteur apparaîtront immédiatement dans la console du consommateur.
Arrêt des services
Pour arrêter proprement Kafka :
/usr/local/kafka_2.11-2.2.2/bin/kafka-server-stop.sh config/server.properties
Et pour arrêter ZooKeeper :
/usr/local/zookeeper-3.4.14/bin/zkServer.sh stop
Suppression d’un topic
Pour supprimer un topic, utilisez la commande suivante :
/usr/local/kafka_2.11-2.2.2/bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic demo
Notez que cette opération nécessite que l’option delete.topic.enable=true soit activée dans server.properties, faute de quoi la suppression sera seulement marquée sans effet réel.