Cómo instalar Apache ZooKeeper en Debian 10
Apache Zookeeper es un servicio gratuito y de código abierto para sistemas distribuidos que lo ayuda a administrar un gran conjunto de hosts. Es un servicio centralizado utilizado para mantener información de configuración, nombres y servicios de grupo. Está escrito en Java y permite a los desarrolladores concentrarse en crear funciones de software sin preocuparse por la naturaleza distribuida de la aplicación. Apache ZooKeeper se usa más comúnmente en cargas de trabajo «dominantes de lectura» donde las lecturas son mucho más comunes que las escrituras. Viene con un amplio conjunto de características que incluyen sincronización, mensajes ordenados, serialización, confiabilidad, atomicidad, procesamiento rápido y muchas más. Tiene un mecanismo de bloqueo y sincronización que lo ayuda en la recuperación automática de fallas mientras conecta otras aplicaciones distribuidas. El proyecto Zookeeper es uno de los proyectos más exitosos de la fundación Apache. Muchas empresas adoptaron Zookeeper para crear sistemas distribuidos de alta disponibilidad a gran escala.
En este tutorial, le mostraremos cómo configurar un clúster Apache Zookeeper de un solo nodo en el servidor Debian 10.
requisitos previos
- Un servidor que ejecuta Debian 10 con 2 GB de RAM.
- Una contraseña de root está configurada en su servidor.
Empezando
Antes de comenzar, se recomienda actualizar su servidor con la última versión. Puedes actualizarlo usando el siguiente comando:
apt-get update -y apt-get upgrade -y
Una vez que su servidor esté actualizado, reinícielo para implementar los cambios.
Instalar Java
Apache Zookeeper está escrito en lenguaje Java. Por lo tanto, deberá instalar Java en su sistema. De forma predeterminada, la última versión de Java está disponible en el repositorio predeterminado de Debian 10. Puede instalarlo ejecutando el siguiente comando:
apt-get install default-jdk -y
Después de instalar Java, verifique la versión instalada de Java usando el siguiente comando:
java --version
Deberías obtener el siguiente resultado:
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)
Una vez que haya terminado, puede proceder a crear un usuario del sistema para Zookeeper.
Crear un usuario del sistema para Zookeeper
Es una buena idea crear un usuario dedicado para ejecutar el servicio Zookeeper. Esto mejorará su seguridad y manejabilidad.
Primero, ejecute el siguiente comando para crear un usuario de zookeeper con el directorio de inicio:
useradd zookeeper -m
A continuación, configure el shell predeterminado para el usuario del cuidador del zoológico con el siguiente comando:
usermod --shell /bin/bash zookeeper
A continuación, establezca una contraseña para el usuario del cuidador del zoológico con el siguiente comando:
passwd zookeeper
A continuación, agregue el usuario zookeeper al grupo sudo:
usermod -aG sudo zookeeper
En este punto, ha creado y configurado el usuario de Zookeeper. Ahora puede proceder a descargar Zookeeper.
Descargar Zookeeper
Primero, deberá descargar la última versión de Apache Zookeeper desde su sitio web oficial. Al momento de escribir este artículo, la última versión de Apache Zookeeper es la 3.5.6.
Para descargarlo, cambie el directorio a /opt y ejecute el siguiente comando:
cd /opt wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.6-bin.tar.gz
Una vez que se complete la descarga, extraiga el archivo descargado con el siguiente comando:
tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz
A continuación, cambie el nombre del directorio extraído a zookeeper y otorgue los permisos adecuados:
mv apache-zookeeper-3.5.6-bin zookeeper chown -R zookeeper:zookeeper /opt/zookeeper
A continuación, deberá crear un directorio de datos para que Zookeeper almacene todos los datos de configuración y estado. Puede crear en el sistema de archivos local o en el sistema de archivos remoto según sus necesidades.
Puede crear un directorio de datos usando el siguiente comando:
mkdir -p /data/zookeeper
A continuación, cambie la propiedad del directorio de datos al usuario zookeeper:
chown -R zookeeper:zookeeper /data/zookeeper
En este punto, ha descargado Zookeeper y ha creado un directorio de datos para él. Ahora puede proceder a configurar Zookeeper.
Configurar Zookeeper
Todos los archivos de configuración de Zookeeper se encuentran dentro del directorio /opt/zookeeper/conf/. Puede crear un archivo de configuración de Zookeeper dentro del directorio /opt/zookeeper/conf/ usando el siguiente comando:
nano /opt/zookeeper/conf/zoo.cfg
Agregue las siguientes líneas:
tickTime=2500 dataDir=/data/zookeeper clientPort=2181 maxClientCnxns=80
Guarde y cierre el archivo cuando haya terminado.
Dónde:
- marcaTiempo : esta opción establece la duración de un tick en milisegundos.
- dirección de datos : especifique el directorio de datos para almacenar los datos de Zookeeper.
- puertocliente : especifique el puerto utilizado para escuchar las conexiones de los clientes.
- maxClientCnxns : Se utiliza para limitar el número máximo de conexiones de clientes.
Nota : Los parámetros anteriores son para desarrollo y prueba. Puedes cambiarlos según tu necesidad.
En este punto, ha configurado Zookeeper. Ahora puede estar listo para iniciar el servidor Zookeeper.
Iniciar y probar el servidor Zookeeper
Puede iniciar el servidor Zookeeper con el siguiente comando:
/opt/zookeeper/bin/zkServer.sh start
Deberías obtener el siguiente resultado:
/usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
A continuación, puede conectarse al servidor de Zookeeper en el puerto 2181 con el siguiente comando:
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
Una vez conectado, debería ver el siguiente resultado:
[zk: 127.0.0.1:2181(CONNECTED) 0]
A continuación, ejecute el comando de ayuda para obtener una lista de comandos que puede ejecutar desde el cliente.
[zk: 127.0.0.1:2181(CONNECTED) 0] help
Debería ver el siguiente resultado:
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
Después de la prueba, salga de la sesión del cliente usando el comando quit:
[zk: 127.0.0.1:2181(CONNECTED) 0] quit
Ahora puede detener el servicio Zookeeper con el siguiente comando:
/opt/zookeeper/bin/zkServer.sh stop
Deberías ver el siguiente comando:
/usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED
En este punto, ha iniciado y probado con éxito el servidor Zookeeper.
Crear un archivo de servicio de Systemd para Zookeeper
A continuación, deberá crear un archivo de servicio systemd para administrar el servicio Zookeeper mediante systemd.
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 cuando haya terminado. Luego, vuelva a cargar el demonio systemd con el siguiente comando:
systemctl daemon-reload
A continuación, inicie el servicio Zookeeper y habilítelo para que se inicie después de reiniciar el sistema con el siguiente comando:
systemctl start zookeeper systemctl enable zookeeper
Ahora puede verificar el estado de Zookeeper con el siguiente comando:
systemctl status zookeeper
Debería ver el siguiente resultado:
? 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.
Ahora, puede administrar fácilmente el servicio Zookeeper con systemd.
Conclusión
¡Felicidades! Ha instalado y configurado correctamente un clúster de Zookeeper de un solo nodo en el servidor Debian 10. Esta configuración es muy útil para entornos de desarrollo y pruebas. Espero que ahora tenga suficiente conocimiento para configurar un clúster de Zookeeper de un solo nodo. No dude en preguntarme si tiene alguna pregunta.