ZooKeeper est un projet logiciel d'Apache Software Foundation qui fournit un service de données partagées hautes performances utilisé pour créer des applications distribuées. Il est utilisé par un cluster pour maintenir les données partagées avec des techniques de synchronisation robustes. Il fournit une interface simple pour gérer les informations de configuration, la dénomination, la synchronisation distribuée et le provisionnement des services de groupe.
Dans ce tutoriel, nous allons vous montrer comment installer Apache ZooKeeper sur un serveur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un mot de passe root est configuré sur le serveur.
Installer Java
Apache ZooKeeper est écrit en Java, vous devrez donc installer Java sur votre système. Vous pouvez l'installer avec la commande suivante :
apt-get install default-jdk -y
Après avoir installé Java, vérifiez la version installée de Java avec la commande suivante :
java --version
Vous devriez obtenir le résultat suivant :
openjdk 11.0.8 2020-07-14 OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04) OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
Installer Zookeeper
Avant d'installer Apache zookeeper, vous devrez créer un nouvel utilisateur pour zookeeper. Vous pouvez le créer avec la commande suivante :
useradd zookeeper -m
Ensuite, définissez le mot de passe de cet utilisateur et ajoutez-le au groupe sudo avec la commande suivante :
usermod --shell /bin/bash zookeeper
passwd zookeeper
usermod -aG sudo zookeeper
Ensuite, créez un répertoire de données pour zookeeper et changez le propriétaire de ce répertoire :
mkdir /zookeeper
chown -R zookeeper:zookeeper /zookeeper
Ensuite, vous devrez télécharger la dernière version du zookeeper dans le répertoire /opt. Vous pouvez le télécharger avec la commande suivante :
cd /opt
wget https://mirrors.estointernet.in/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
Une fois le téléchargement terminé, extrayez le fichier téléchargé avec la commande suivante :
tar -xvzf apache-zookeeper-3.6.2-bin.tar.gz
Ensuite, renommez le répertoire extrait en zookeeper avec la commande suivante :
mv apache-zookeeper-3.6.2-bin zookeeper
Ensuite, changez la propriété du répertoire zookeeper avec la commande suivante :
chown -R zookeeper:zookeeper /opt/zookeeper
Configurer ZooKeeper en mode autonome
Ensuite, vous devrez créer un fichier de configuration ZooKeeper pour configurer ZooKeeper en mode autonome. Vous pouvez le créer avec la commande suivante :
nano /opt/zookeeper/conf/zoo.cfg
Ajoutez les lignes suivantes :
tickTime=2500 dataDir=/zookeeper clientPort=2181 maxClientCnxns=80
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, démarrez le service ZooKeeper avec la commande suivante :
cd /opt/zookeeper
bin/zkServer.sh start
Vous devriez obtenir le résultat suivant :
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
Par défaut, ZooKeeper écoute sur le port 2181. Vous pouvez le vérifier avec la commande suivante :
ss -ntpl | grep 2181
Vous devriez obtenir le résultat suivant :
LISTEN 0 50 *:2181 *:* users:(("java",pid=12749,fd=53))
Vous pouvez maintenant vous connecter au serveur local ZooKeeper avec la commande suivante :
bin/zkCli.sh -server 127.0.0.1:2181
Une fois connecté, vous devriez obtenir le résultat suivant :
WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: 127.0.0.1:2181(CONNECTED) 0]
Maintenant, quittez la session avec la commande suivante :
quit
Ensuite, arrêtez le service ZooKeeper avec la commande suivante :
bin/zkServer.sh stop
Vous devriez voir le résultat suivant :
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED
Créer un fichier de service Systemd pour ZooKeeper
Ensuite, vous devrez créer un fichier de service systemd pour gérer le service ZooKeeper. Vous pouvez le créer avec la commande suivante :
nano /etc/systemd/system/zookeeper.service
Ajoutez 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
Enregistrez et fermez le fichier puis rechargez le démon systemd pour appliquer les modifications de configuration :
systemctl daemon-reload
Ensuite, changez la propriété du ZooKeeper et du répertoire de données avec la commande suivante :
chown -R zookeeper:zookeeper /opt/zookeeper
chown -R zookeeper:zookeeper /zookeeper
Ensuite, démarrez le service ZooKeeper et activez-le au redémarrage du système avec la commande suivante :
systemctl start zookeeper
systemctl enable zookeeper
Vous pouvez maintenant vérifier l'état du service ZooKeeper avec la commande suivante :
systemctl status zookeeper
Vous devriez obtenir le résultat suivant :
? zookeeper.service - Zookeeper Daemon Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2020-09-27 06:43:28 UTC; 8s ago Docs: http://zookeeper.apache.org Process: 13915 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS) Main PID: 13946 (java) Tasks: 37 (limit: 4691) Memory: 50.6M CGroup: /system.slice/zookeeper.service ??13946 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-server-ubuntu2004.log -Dzook> Sep 27 06:43:27 ubuntu2004 systemd[1]: Starting Zookeeper Daemon... Sep 27 06:43:27 ubuntu2004 zkServer.sh[13915]: /usr/bin/java Sep 27 06:43:27 ubuntu2004 zkServer.sh[13915]: ZooKeeper JMX enabled by default Sep 27 06:43:27 ubuntu2004 zkServer.sh[13915]: Using config: /opt/zookeeper/conf/zoo.cfg Sep 27 06:43:28 ubuntu2004 zkServer.sh[13915]: Starting zookeeper ... STARTED Sep 27 06:43:28 ubuntu2004 systemd[1]: Started Zookeeper Daemon.
Conclusion
Toutes nos félicitations! vous avez installé et configuré avec succès ZooKeeper sur le serveur Ubuntu 20.04. Vous pouvez désormais créer et déployer facilement l'application distribuée avec ZooKeeper.