Déployer Apache Kafka avec Docker Compose

Deployer Apache Kafka Avec Docker Compose



Docker est un logiciel de conteneurisation gratuit et open source qui a complètement changé le paysage de la façon dont les développeurs conditionnent et déploient les applications. Docker nous permet de regrouper une application et toutes les dépendances requises dans une seule entité. Cela signifie que nous pouvons distribuer le package et que l'environnement peut être répliqué sur presque toutes les machines sans conflits ni packages manquants.

Dans ce tutoriel, nous allons apprendre comment déployer un cluster Apache Kafka à l'aide du docker. Cela nous permet d'utiliser l'image docker fournie pour lancer rapidement un cluster Kafka dans presque tous les environnements.

Commençons par les bases et discutons de ce qu'est Kafka.







Qu'est-ce qu'Apache Kafka ?

Apache Kafka est un système de messagerie gratuit, open source, hautement évolutif, distribué et tolérant aux pannes. Il est conçu pour gérer un volume élevé, un débit élevé et un flux de données en temps réel, ce qui le rend adapté à de nombreux cas d'utilisation, notamment l'agrégation de journaux, l'analyse en temps réel et les architectures pilotées par les événements.



Kafka est basé sur une architecture distribuée qui lui permet de gérer de grandes quantités de données sur plusieurs serveurs. Il utilise un modèle de publication-abonnement où les producteurs envoient des messages aux sujets et les consommateurs s'y abonnent pour les recevoir. Cela permet une communication découplée entre les producteurs et les consommateurs, offrant une évolutivité et une flexibilité élevées.



Qu'est-ce que la composition Docker

Docker compose fait référence à un plug-in ou à un outil Docker permettant de définir et d'exécuter des applications multi-conteneurs. Docker nous compose pour définir la configuration du conteneur dans un fichier YAML. Le fichier de configuration inclut les spécifications du conteneur telles que les services, les réseaux et les volumes requis par une application.





En utilisant la commande docker-compose, nous pouvons créer et démarrer plusieurs conteneurs avec une seule commande.

Installation de Docker et Docker Compose

La première étape consiste à vous assurer que vous avez installé le docker sur votre ordinateur local. Vous pouvez consulter les ressources suivantes pour en savoir plus :



  • https://linuxhint.com/install_configure_docker_ubuntu/
  • https://linuxhint.com/install-docker-debian/
  • https://linuxhint.com/install_docker_debian_10/
  • https://linuxhint.com/install-docker-ubuntu-22-04/
  • https://linuxhint.com/install-docker-on-pop_os/
  • 0CE485D339926C718DC100EF344BB17AF0132MAUVAIS
  • https://linuxhint.com/install-use-docker-centos-8/
  • https://linuxhint.com/install_docker_on_raspbian_os/

Au moment de la rédaction de ce didacticiel, l'installation de Docker Compose nécessite l'installation du bureau Docker sur votre machine cible. Par conséquent, l'installation de docker compose en tant qu'unité autonome est obsolète.

Une fois que nous avons installé le Docker, nous pouvons configurer le fichier YAML. Ce fichier contient tous les détails dont nous avons besoin pour créer un cluster Kafka à l'aide d'un conteneur docker.

Configuration de Docker-Compose.YAML

Créez le fichier docker-compose.yaml et modifiez-le avec votre éditeur de texte préféré :

$ touch docker-composer.yaml
$ vim docker-composer.yaml

Ensuite, ajoutez le fichier de configuration docker comme indiqué ci-dessous :

version : '3'
prestations de service :
gardien de zoo :
image : bitnami / gardien de zoo : 3.8
ports :
- '2181:2181'
volumes :
- 'données_du_gardien_du_zoo:/bitnami'
environnement :
- ALLOW_ANONYMOUS_LOGIN = Oui
kafka :
image : docker. ce / bitnami / kafka : 3.3
ports :
- '9092:9092'
volumes :
- 'kafka_data:/bitnami'
environnement :
- KAFKA_CFG_ZOOKEEPER_CONNECT = gardien de zoo : 2181
- ALLOW_PLAINTEXT_LISTENER = Oui
dépend de :
- gardien de zoo
volumes :
zookeeper_data :
conducteur : local
kafka_data :
conducteur : local

L'exemple de fichier docker configure un Zookeeper et un cluster Kafka où le cluster Kafka est connecté au service Zookeeper pour la coordination. Le fichier configure également les ports et les variables d'environnement pour chaque service afin de permettre la communication et l'accès aux services.

Nous avons également configuré les volumes nommés pour conserver les données des services même si les conteneurs sont redémarrés ou recréés.

Décomposons le fichier précédent en sections simples :

Nous commençons avec le service Zookeeper en utilisant l'image bitnami/zookeeper:3.8. Cette image mappe ensuite le port 2181 sur la machine hôte au port 2181 sur le conteneur. Nous avons également défini la variable d'environnement ALLOW_ANONYMOUS_LOGIN sur 'yes'. Enfin, nous définissons le volume sur lequel le service stocke les données en tant que volume zookeeper_data.

Le deuxième bloc définit les détails pour configurer le service Kafka. Dans ce cas, nous utilisons l'image docker.io/bitnami/kafka:3.3 qui mappe le port hôte 9092 au port conteneur 9092. De même, nous définissons également la variable d'environnement KAFKA_CFG_ZOOKEEPER_CONNECT et définissons sa valeur sur l'adresse de Zookeeper mappée sur port 2181. La deuxième variable d'environnement que nous définissons dans cette section est la variable d'environnement ALLOW_PLAINTEXT_LISTENER. La définition de la valeur de cette variable d'environnement sur 'oui' autorise le trafic non sécurisé vers le cluster Kafka.

Enfin, nous fournissons le volume sur lequel le service Kafka stocke ses données.

Pour s'assurer que le docker configure les volumes pour Zookeeper et Kafka, nous devons les définir comme indiqué dans la section volumes. Cela configure les volumes zookeeper_data et kafka_data. Les deux volumes utilisent le pilote local, ce qui signifie que les données sont stockées sur la machine hôte.

Voilà! Un fichier de configuration simple qui vous permet de faire tourner un conteneur Kafka à l'aide de docker en quelques étapes simples.

Exécution du conteneur

Pour s'assurer que le docker est en cours d'exécution, nous pouvons exécuter le conteneur à partir du fichier YAML avec la commande suivante :

$ sudo docker composer

La commande doit localiser le fichier de configuration YAML et exécuter le conteneur avec les valeurs spécifiées :

Conclusion

Vous avez maintenant appris comment configurer et exécuter Apache Kafka à partir d'un fichier de configuration YAML composé par Docker.