Introducción
Guardián del zoológico es un proyecto de Apache Software Foundation diseñado para simplificar la supervisión y gestión de servicios de grupo. Utiliza una interfaz simple para su servicio de coordinación centralizado que gestiona la configuración, la información, la asignación de nombres, la sincronización distribuida y el aprovisionamiento.
En este tutorial, aprenda a instalar y configurar Apache ZooKeeper en Ubuntu 18.04 o 20.04.
Requisitos previos
- Un sistema Linux con Ubuntu 20.04 o 18.04
- Acceso a una ventana de terminal/línea de comando (Buscar > Terminal )
- Una cuenta de usuario con sudo o raíz privilegios
Instalación de Apache ZooKeeper en Ubuntu
Paso 1:Instalación de Java
ZooKeeper está escrito en Java y requiere este lenguaje de programación para funcionar. Para verificar si Java ya está instalado, ejecute el comando:
java --version
Si el resultado muestra una versión de Java en ejecución, puede pasar al siguiente paso. Si el sistema dice que no such file or directory
, debe instalar Java antes de pasar a ZooKeeper.
Hay diferentes paquetes Java de código abierto disponibles para Ubuntu. Encuentre cuál es mejor para usted y su guía de instalación en Cómo instalar Java en Ubuntu. Las instrucciones se aplican a Ubuntu 18.04 y Ubuntu 20.04.
Paso 2:Creación de un usuario para ZooKeeper
1. Cree un usuario independiente para el servicio ZooKeeper escribiendo:
useradd zookeeper -m
El -m
flag crea un directorio de inicio para el usuario. En este caso, será /home/zookeeper
. Para nombrar al usuario de manera diferente, reemplace zookeeper
con el nombre de tu elección.
2. A continuación, configure bash
como shell predeterminado para el nuevo usuario con el comando:
usermod --shell /bin/bash zookeeper
3. Establezca una contraseña para el usuario:
passwd zookeeper
Escriba y vuelva a escribir una contraseña segura para el usuario de ZooKeeper.
4. Luego, agregue el usuario al grupo sudoers para que tenga privilegios sudo:
usermod -aG sudo zookeeper
5. Verifique que el usuario ahora sea un superusuario enumerando las cuentas en el grupo sudoers:
sudo getent group sudo
El resultado debe mostrar el usuario que creó.
Paso 3:crear un directorio de datos de ZooKeeper
Antes de instalar ZooKeeper, cree una estructura de directorios donde pueda almacenar datos de configuración y estado (en un disco local o almacenamiento remoto).
Para almacenar los datos en la máquina local, primero cree un nuevo directorio de ZooKeeper ejecutando:
sudo mkdir -p /data/zookeeper
Luego, asigne al usuario de ZooKeeper la propiedad de ese directorio:
chown -R zookeeper:zookeeper /data/zookeeper
Paso 4:Descarga e instalación de ZooKeeper
1. Abra un navegador web de su elección y vaya a la página de descarga de Apache ZooKeeper. La última versión estable aparece en la parte superior de la página. Haga clic en la versión que desea instalar para abrir los espejos de descarga de Apache.
2. Copie la dirección HTTP del sitio espejo sugerido.
3. Regrese a la línea de comando y vaya a /opt
directorio:
cd /opt
4. Usa el wget
comando para descargar el .tar expediente. Pegue el enlace copiado de la página web oficial de Apache:
sudo wget https://downloads.apache.org/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
5. Extraiga el archivo ejecutando:
sudo tar -xvf apache-zookeeper-3.6.1-bin.tar.gz
6. Cambie el nombre del archivo extraído a zookeeper
con el comando:
mv apache-zookeeper-3.6.1-bin zookeeper
7. Otorgue al usuario zookeeper la propiedad de ese archivo ejecutando:
chown -R zookeeper:zookeeper /opt/zookeeper
Paso 5:Configuración de ZooKeeper en modo independiente
El siguiente paso es crear un archivo de configuración para ZooKeeper. La siguiente configuración establece ZooKeeper en modo independiente (utilizado para desarrollo y pruebas). Para entornos de producción, debe ejecutar ZooKeeper en modo de replicación.
Para configurar ZooKeeper en modo independiente, cree un nuevo zoo.cfg archivo en el zookeeper directorio:
sudo nano /opt/zookeeper/conf/zoo.cfg
Agregue las siguientes líneas:
tickTime = 2000
dataDir = /data/zookeeper
clientPort = 2181
initLimit = 5
syncLimit = 2
Guardar y salir el editor de texto.
Tenga en cuenta que este es un parámetro de configuración básico para un clúster de un solo nodo. El archivo puede diferir según sus necesidades. Las líneas anteriores consisten en lo siguiente:
tickTime
:El número de milisegundos de cada marca.dataDir
:el directorio donde se almacenan las instantáneas de la base de datos en memoria y el registro de transacciones para las actualizaciones.clientPort
:El puerto que escucha las conexiones de los clientes.initLimit
:El número de tics que puede tomar la fase de sincronización inicial.syncLimit
:el número de tics que pueden pasar entre el envío de una solicitud y la obtención de un acuse de recibo.
Paso 6:Iniciar el servicio ZooKeeper
Ahora, puede iniciar el servicio ZooKeeper. Ejecute el siguiente comando dentro de /opt directorio. Si salió del directorio, navegue en él con cd /opt
.
Para iniciar el servicio ZooKeeper use el comando:
sudo bin/zkServer.sh start
El resultado debe mostrar que ZooKeeper ha COMENZADO .
Paso 7:Conexión al servidor ZooKeeper
Una vez que haya iniciado el servicio, puede conectarse al servidor de ZooKeeper. En esta guía, es el servidor local.
Conéctese a ZooKeeper con el comando:
bin/zkCli.sh -server 127.0.0.1:2181
Espere a que la salida abra un nuevo zk
mensaje, que debería confirmar que está CONECTADO .
Para ver una lista de los comandos disponibles, ejecute el siguiente comando en el nuevo símbolo del sistema:
help
Para cerrar la sesión , escriba:
quit
Para detener el servicio ZooKeeper , ejecute el comando:
bin/zkServer.sh stop
Paso 8:Creación de un archivo de servicio del sistema
Finalmente, debe crear un archivo de servicio para administrar ZooKeeper.
1. Cree un nuevo zookeeper.service archivo en un editor de texto de su elección:
sudo nano /etc/systemd/system/zookeeper.service
2. Pegue el siguiente contenido en el archivo:
[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
3. Guarde y salga del archivo.
4. Vuelva a cargar el servicio systemd ejecutando:
systemctl daemon-reload
5. Luego, inicie el servicio ZooKeeper y habilítelo para que se inicie en el arranque:
systemctl start zookeeper
systemctl enable zookeeper
6. Verifique que el servicio esté activo y funcionando con el comando:
systemctl status zookeeper
Debería ver que ZooKeeper está activo (en ejecución) .
Configuración de ZooKeeper replicado
Un entorno de producción requiere configurar un clúster replicado de nodos de ZooKeeper.
Una vez que haya instalado Java, creado un usuario de ZooKeeper y descargado el paquete binario, debe crear un archivo de configuración. A diferencia de la configuración básica para el modo independiente, el modo replicado incluye algunas líneas más.
Todos los servidores en la misma aplicación necesitan tener copias del archivo de configuración.
Crea cada archivo con el comando:
sudo nano /opt/zookeeper/conf/zoo.cfg
Luego, pegue el siguiente contenido en el archivo:
tickTime=2000
dataDir=/var/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=[server_ip]:2888:3888
server.2=[server_ip]:2888:3888
server.3=[server_ip]:2888:3888
Guardar y salir del archivo. Repita el proceso en cada servidor del grupo.