Comment installer Apache ZooKeeper sur Debian 10

Apache Zookeeper est un service gratuit et open-source pour les systèmes distribués qui t’aide à gérer un grand ensemble d’hôtes. C’est un service centralisé utilisé pour maintenir les informations de configuration, les services de nommage et de groupe. Il est écrit en Java et permet aux développeurs de se concentrer sur la création de fonctionnalités logicielles sans se soucier de la nature distribuée de l’application. Apache ZooKeeper est le plus souvent utilisé dans les charges de travail « à prédominance de lecture » où les lectures sont beaucoup plus fréquentes que les écritures. Il est livré avec un riche ensemble de fonctionnalités, notamment la synchronisation, les messages ordonnés, la sérialisation, la fiabilité, l’atomicité, le traitement rapide et bien d’autres encore. Il dispose d’un mécanisme de verrouillage et de synchronisation qui t’aide à récupérer automatiquement les pannes lorsque tu connectes d’autres applications distribuées. Le projet Zookeeper est l’un des projets les plus réussis de la fondation Apache. De nombreuses entreprises ont adopté Zookeeper pour créer des systèmes distribués hautement disponibles à grande échelle.

Dans ce tutoriel, nous allons te montrer comment configurer un cluster Apache Zookeeper à un seul nœud sur un serveur Debian 10.

Conditions préalables

  • Un serveur fonctionnant sous Debian 10 avec 2 Go de RAM.
  • Un mot de passe root est configuré sur ton serveur.

Démarrage

Avant de commencer, il est recommandé de mettre à jour ton serveur avec la dernière version. Tu peux le mettre à jour en utilisant la commande suivante :

apt-get update -y
apt-get upgrade -y

Une fois que ton serveur est mis à jour, redémarre-le pour appliquer les changements.

Installer Java

Apache Zookeeper est écrit en langage Java. Tu dois donc installer Java dans ton système. Par défaut, la dernière version de Java est disponible dans le référentiel par défaut de Debian 10. Tu peux l’installer en exécutant la commande suivante :

apt-get install default-jdk -y

Après avoir installé Java, vérifie la version installée de Java à l’aide de la commande suivante :

java --version

Tu devrais obtenir la sortie suivante :

openjdk 11.0.5 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Debian-1deb10u1, mixed mode, sharing)

Une fois que tu as terminé, tu peux procéder à la création d’un utilisateur système pour Zookeeper.

Créer un utilisateur système pour Zookeeper

C’est une bonne idée de créer un utilisateur dédié pour exécuter le service Zookeeper. Cela améliorera ta sécurité et ta facilité de gestion.

Tout d’abord, exécute la commande suivante pour créer un utilisateur zookeeper avec un répertoire personnel :

useradd zookeeper -m

Ensuite, définis le shell par défaut pour l’utilisateur zookeeper à l’aide de la commande suivante :

usermod --shell /bin/bash zookeeper

Ensuite, définis un mot de passe pour l’utilisateur zookeeper à l’aide de la commande suivante: :

passwd zookeeper

Ensuite, ajoute l’utilisateur zookeeper au groupe sudo :

usermod -aG sudo zookeeper

À ce stade, tu as créé et configuré l’utilisateur Zookeeper. Tu peux maintenant procéder au téléchargement de Zookeeper.

Télécharger Zookeeper

Tout d’abord, tu dois télécharger la dernière version de Apache Zookeeper depuis son site officiel. Au moment de la rédaction de cet article, la dernière version d’Apache Zookeeper est 3.5.6.

Pour la télécharger, change le répertoire en /opt et exécute la commande suivante :

cd /opt
wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.6-bin.tar.gz

Une fois le téléchargement terminé, extrais le fichier téléchargé avec la commande suivante :

tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz

Ensuite, renomme le répertoire extrait en zookeeper et donne les permissions appropriées :

mv apache-zookeeper-3.5.6-bin zookeeper
chown -R zookeeper:zookeeper /opt/zookeeper

Ensuite, tu devras créer un répertoire de données pour Zookeeper afin de stocker toutes les données de configuration et d’état. Tu peux le créer sur le système de fichiers local ou sur le système de fichiers distant selon tes besoins.

Tu peux créer un répertoire de données à l’aide de la commande suivante :

mkdir -p /data/zookeeper

Ensuite, change la propriété du répertoire de données en utilisateur zookeeper :

chown -R zookeeper:zookeeper /data/zookeeper

À ce stade, tu as téléchargé Zookeeper et créé un répertoire de données pour lui. Tu peux maintenant passer à la configuration de Zookeeper.

Configurer Zookeeper

Tous les fichiers de configuration de Zookeeper se trouvent dans le répertoire /opt/zookeeper/conf/. Tu peux créer un fichier de configuration Zookeeper à l’intérieur du répertoire /opt/zookeeper/conf/ en utilisant la commande suivante :

nano /opt/zookeeper/conf/zoo.cfg

Ajoute les lignes suivantes :

tickTime=2500
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=80

Sauvegarde et ferme le fichier lorsque tu as terminé.

Où :

  • tickTime: Cette option définit la durée d’un tick en millisecondes.
  • dataDir: Spécifie le répertoire de données pour stocker les données de Zookeeper.
  • clientPort: Spécifie le port utilisé pour écouter les connexions des clients.
  • maxClientCnxns: Sert à limiter le nombre maximum de connexions client.

Remarque: Les paramètres ci-dessus sont destinés au développement et aux tests. Tu peux les modifier en fonction de tes besoins.

À ce stade, tu as configuré Zookeeper. Tu peux maintenant être prêt à démarrer le serveur Zookeeper.

Démarrer et tester le serveur Zookeeper

Tu peux démarrer le serveur Zookeeper à l’aide de la commande suivante :

/opt/zookeeper/bin/zkServer.sh start

Tu devrais obtenir la sortie suivante :

/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

Ensuite, tu peux te connecter au serveur Zookeeper sur le port 2181 en utilisant la commande suivante :

/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181

Une fois connecté, tu devrais voir la sortie suivante :

[zk: 127.0.0.1:2181(CONNECTED) 0]

Ensuite, exécute la commande help pour obtenir une liste des commandes que tu peux exécuter depuis le client.

[zk: 127.0.0.1:2181(CONNECTED) 0] help

Tu devrais voir la sortie suivante :

ZooKeeper -server host:port cmd args
	addauth scheme auth
	close 
	config [-c] [-w] [-s]
	connect host:port
	create [-s] [-e] [-c] [-t ttl] path [data] [acl]
	delete [-v version] path
	deleteall path
	delquota [-n|-b] path
	get [-s] [-w] path
	getAcl [-s] path
	history 
	listquota path
	ls [-s] [-w] [-R] path
	ls2 path [watch]
	printwatches on|off
	quit 
	reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
	redo cmdno
	removewatches path [-c|-d|-a] [-l]
	rmr path
	set [-s] [-v version] path data
	setAcl [-s] [-v version] [-R] path acl
	setquota -n|-b val path
	stat [-w] path
	sync path

Après avoir testé, quitte la session client à l’aide de la commande quit :

[zk: 127.0.0.1:2181(CONNECTED) 0] quit

Tu peux maintenant arrêter le service Zookeeper avec la commande suivante :

/opt/zookeeper/bin/zkServer.sh stop

Tu devrais voir la commande suivante :

/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

À ce stade, tu as réussi à démarrer et à tester le serveur Zookeeper.

Créer un fichier de service Systemd pour Zookeeper

Ensuite, tu devras créer un fichier de service systemd pour gérer le service Zookeeper à l’aide de systemd.

Tu peux le créer avec la commande suivante :

nano /etc/systemd/system/zookeeper.service

Ajoute les lignes suivantes :

[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target

[Service]    
Type=forking
WorkingDirectory=/opt/zookeeper
User=zookeeper
Group=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure

[Install]
WantedBy=default.target

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, recharge le démon systemd avec la commande suivante :

systemctl daemon-reload

Ensuite, démarre le service Zookeeper et active-le pour qu’il démarre après le redémarrage du système à l’aide de la commande suivante :

systemctl start zookeeper
systemctl enable zookeeper

Tu peux maintenant vérifier l’état de Zookeeper à l’aide de la commande suivante :

systemctl status zookeeper

Tu devrais voir la sortie suivante :

? zookeeper.service - Zookeeper Daemon
   Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-12-29 15:12:39 UTC; 8min ago
     Docs: http://zookeeper.apache.org
  Process: 9229 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS)
 Main PID: 9245 (java)
    Tasks: 29 (limit: 2359)
   Memory: 49.7M
   CGroup: /system.slice/zookeeper.service
           ??9245 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-server-debian10.log -Dzookeeper.

Dec 29 15:12:38 debian10 systemd[1]: Starting Zookeeper Daemon...
Dec 29 15:12:38 debian10 zkServer.sh[9229]: /usr/bin/java
Dec 29 15:12:38 debian10 zkServer.sh[9229]: ZooKeeper JMX enabled by default
Dec 29 15:12:38 debian10 zkServer.sh[9229]: Using config: /opt/zookeeper/conf/zoo.cfg
Dec 29 15:12:39 debian10 zkServer.sh[9229]: Starting zookeeper ... STARTED
Dec 29 15:12:39 debian10 systemd[1]: Started Zookeeper Daemon.

Maintenant, tu peux facilement gérer le service Zookeeper avec systemd.

Conclusion

Félicitations ! Tu as réussi à installer et à configurer un cluster Zookeeper à un seul nœud sur un serveur Debian 10. Cette configuration est très utile pour les environnements de développement et de test. J’espère que tu as maintenant suffisamment de connaissances pour configurer un cluster Zookeeper à nœud unique. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...