Cómo instalar Apache ZooKeeper en Ubuntu 20.04
ZooKeeper es un proyecto de software de la Fundación del Software Apache que proporciona un servicio de datos compartidos de alto rendimiento utilizado para construir aplicaciones distribuidas. Lo utiliza un clúster para mantener los datos compartidos con técnicas de sincronización robustas. 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, te mostraremos cómo instalar Apache ZooKeeper en un servidor Ubuntu 20.04.
Requisitos previos
- Un servidor con Ubuntu 20.04.
- Una contraseña de root configurada el servidor.
Instalar Java
Apache ZooKeeper está escrito en Java, por lo que necesitarás instalar Java en tu sistema. Puedes instalarlo con el siguiente comando:
apt-get install default-jdk -y
Después de instalar Java, verifica la versión instalada de Java con el siguiente comando:
java --version
Deberías obtener la siguiente salida:
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, tendrás que crear un nuevo usuario para zookeeper. Puedes crearlo con el siguiente comando:
useradd zookeeper -m
A continuación, establece la contraseña para este usuario y añádelo al grupo sudo con el siguiente comando:
usermod --shell /bin/bash zookeeper
passwd zookeeper
usermod -aG sudo zookeeper
A continuación, crea un directorio de datos para zookeeper y cambia la propiedad de este directorio:
mkdir /zookeeper
chown -R zookeeper:zookeeper /zookeeper
A continuación, tendrás que descargar la última versión de zookeeper en el directorio /opt. Puedes descargarla 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 completada la descarga, extrae el archivo descargado con el siguiente comando:
tar -xvzf apache-zookeeper-3.6.2-bin.tar.gz
A continuación, cambia el nombre del directorio extraído a zookeeper con el siguiente comando:
mv apache-zookeeper-3.6.2-bin zookeeper
A continuación, cambia la propiedad del directorio zookeeper con el siguiente comando:
chown -R zookeeper:zookeeper /opt/zookeeper
Configurar ZooKeeper en modo autónomo
A continuación, tendrás que crear un archivo de configuración de ZooKeeper para configurar ZooKeeper en modo autónomo. Puedes crearlo con el siguiente comando:
nano /opt/zookeeper/conf/zoo.cfg
Añade las siguientes líneas:
tickTime=2500 dataDir=/zookeeper clientPort=2181 maxClientCnxns=80
Guarda y cierra el archivo cuando hayas terminado. A continuación, inicia el servicio ZooKeeper con el siguiente comando:
cd /opt/zookeeper
bin/zkServer.sh start
Deberías obtener la siguiente salida:
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
Por defecto, ZooKeeper está escuchando en el puerto 2181. Puedes comprobarlo con el siguiente comando:
ss -ntpl | grep 2181
Deberías obtener la siguiente salida:
LISTEN 0 50 *:2181 *:* users:(("java",pid=12749,fd=53))
Ahora puedes conectarte al servidor local de ZooKeeper con el siguiente comando:
bin/zkCli.sh -server 127.0.0.1:2181
Una vez conectado, deberías obtener la siguiente salida:
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, detén el servicio ZooKeeper con el siguiente comando:
bin/zkServer.sh stop
Deberías ver la siguiente salida:
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, tendrás que crear un archivo de servicio systemd para gestionar el servicio ZooKeeper. Puedes crearlo con el siguiente comando:
nano /etc/systemd/system/zookeeper.service
Añade 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
Guarda y cierra el archivo y luego recarga el demonio systemd para aplicar los cambios de configuración:
systemctl daemon-reload
A continuación, cambia la propiedad del directorio de ZooKeeper y de los datos con el siguiente comando:
chown -R zookeeper:zookeeper /opt/zookeeper
chown -R zookeeper:zookeeper /zookeeper
A continuación, inicia el servicio ZooKeeper y permite que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start zookeeper
systemctl enable zookeeper
Ahora puedes comprobar el estado del servicio ZooKeeper con el siguiente comando:
systemctl status zookeeper
Deberías obtener la siguiente salida:
? 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
Enhorabuena! has instalado y configurado con éxito ZooKeeper en el servidor Ubuntu 20.04. Ahora puedes construir y desplegar fácilmente la aplicación distribuida con ZooKeeper.