ZooKeeper es un proyecto de software de Apache Software Foundation que proporciona un servicio de datos compartidos de alto rendimiento que se utiliza para crear aplicaciones distribuidas. Es utilizado por un clúster para mantener datos compartidos con técnicas de sincronización sólidas. Proporciona una interfaz sencilla para gestionar la información de configuración, la asignación de nombres, la sincronización distribuida y el aprovisionamiento de servicios de grupo.
En este tutorial, le mostraremos cómo instalar Apache ZooKeeper en un servidor Ubuntu 20.04.
Requisitos
- Un servidor con Ubuntu 20.04.
- Se configura una contraseña de root en el servidor.
Instalar Java
Apache ZooKeeper está escrito en Java, por lo que deberá instalar Java en su sistema. Puede instalarlo con el siguiente comando:
apt-get install default-jdk -y
Después de instalar Java, verifique la versión instalada de Java con el siguiente comando:
java --version
Deberías obtener el siguiente resultado:
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)
Instalar Zookeeper
Antes de instalar Apache zookeeper, deberá crear un nuevo usuario para zookeeper. Puedes crearlo con el siguiente comando:
useradd zookeeper -m
A continuación, establezca la contraseña para este usuario y agréguelo al grupo sudo con el siguiente comando:
usermod --shell /bin/bash zookeeper
passwd zookeeper
usermod -aG sudo zookeeper
A continuación, cree un directorio de datos para zookeeper y cambie la propiedad de este directorio:
mkdir /zookeeper
chown -R zookeeper:zookeeper /zookeeper
A continuación, deberá descargar la última versión de zookeeper en el directorio /opt. Puedes descargarlo con el siguiente comando:
cd /opt
wget https://mirrors.estointernet.in/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
Una vez que se complete la descarga, extraiga el archivo descargado con el siguiente comando:
tar -xvzf apache-zookeeper-3.6.2-bin.tar.gz
A continuación, cambie el nombre del directorio extraído a zookeeper con el siguiente comando:
mv apache-zookeeper-3.6.2-bin zookeeper
A continuación, cambie la propiedad del directorio zookeeper con el siguiente comando:
chown -R zookeeper:zookeeper /opt/zookeeper
Configurar ZooKeeper en modo independiente
A continuación, deberá crear un archivo de configuración de ZooKeeper para configurar ZooKeeper en modo independiente. Puedes crearlo con el siguiente comando:
nano /opt/zookeeper/conf/zoo.cfg
Agregue las siguientes líneas:
tickTime=2500 dataDir=/zookeeper clientPort=2181 maxClientCnxns=80
Guarde y cierre el archivo cuando haya terminado. Luego, inicie el servicio ZooKeeper con el siguiente comando:
cd /opt/zookeeper
bin/zkServer.sh start
Deberías obtener el siguiente resultado:
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
De forma predeterminada, ZooKeeper escucha en el puerto 2181. Puede verificarlo con el siguiente comando:
ss -ntpl | grep 2181
Deberías obtener el siguiente resultado:
LISTEN 0 50 *:2181 *:* users:(("java",pid=12749,fd=53))
Ahora puede conectarse al servidor local de ZooKeeper con el siguiente comando:
bin/zkCli.sh -server 127.0.0.1:2181
Una vez conectado, debería obtener el siguiente resultado:
WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: 127.0.0.1:2181(CONNECTED) 0]
Ahora, sal de la sesión con el siguiente comando:
quit
A continuación, detenga el servicio ZooKeeper con el siguiente comando:
bin/zkServer.sh stop
Debería ver el siguiente resultado:
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED
Crear un archivo de servicio Systemd para ZooKeeper
A continuación, deberá crear un archivo de servicio systemd para administrar el servicio ZooKeeper. Puedes crearlo con el siguiente comando:
nano /etc/systemd/system/zookeeper.service
Agregue las siguientes líneas:
[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
Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd para aplicar los cambios de configuración:
systemctl daemon-reload
A continuación, cambie la propiedad del ZooKeeper y el directorio de datos con el siguiente comando:
chown -R zookeeper:zookeeper /opt/zookeeper
chown -R zookeeper:zookeeper /zookeeper
A continuación, inicie el servicio ZooKeeper y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start zookeeper
systemctl enable zookeeper
Ahora puede verificar el estado del servicio ZooKeeper con el siguiente comando:
systemctl status zookeeper
Deberías obtener el siguiente resultado:
? 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.
Conclusión
¡Felicidades! Ha instalado y configurado con éxito ZooKeeper en el servidor Ubuntu 20.04. Ahora puede crear e implementar fácilmente la aplicación distribuida con ZooKeeper.