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.

También te podría gustar...