Cómo instalar Consul Server en Ubuntu 22.04
Consul es una moderna plataforma de descubrimiento de servicios que te permite registrar servicios mediante DNS e interfaz HTTP. También ofrece una función de malla de servicios que permite conexiones seguras mediante TLS y proporciona autorización entre servicios.
Además, Consul también proporciona una pasarela API para gestionar el acceso a los servicios y un almacén KV (Clave/Valor) para almacenar la configuración de los servicios.
En este tutorial, te mostraré la instalación del clúster Consul en servidores Ubuntu 22.04.
Requisitos previos
Antes de empezar, asegúrate de que tienes 3 servidores Ubuntu 22.04 que pueden conectarse entre sí a través de una red interna. Asegúrate también de que tienes privilegios de root en cada uno de tus servidores.
Ahora vamos a empezar.
Instalación de Consul
Consul es un servicio gratuito y de código abierto descubierto por Hoshicorp. Está disponible en la mayoría de las distribuciones de Linux, incluidas Debian/Ubuntu y las distribuciones RHEL/CentOS.
En esta sección, instalarás Consul en tu sistema Ubuntu utilizando el repositorio oficial de Consul para Ubuntu.
Antes de empezar, ejecuta el siguiente comando para instalar algunas dependencias básicas en tu sistema. Escribe y para proceder con la instalación.
sudo apt install apt-transport-https gnupg curl wget
Ahora ejecuta el siguiente comando para añadir la clave GPG para el repositorio de Consul.
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
A continuación, añade el repositorio de Consul para Ubuntu utilizando el comando que aparece a continuación.
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
A continuación, actualiza y refresca el índice de paquetes de Ubuntu con el siguiente comando.
sudo apt update
Una vez actualizado el repositorio, instala Consul utilizando el siguiente comando apt. Cuando se te solicite, introduce y para continuar y confirmar la instalación.
sudo apt install consul
Una vez finalizada la instalación, ejecuta el siguiente comando para verificar el archivo binario y la versión de Consul.
which consul consul version
A continuación puedes ver que Consul 1.17.2 está instalado en /usr/bin/consul.
Configuración de UFW
Antes de desplegar el clúster de Consul, abrirás los puertos que utilizará Consul mediante UFW. La mayoría de los sistemas Ubuntu vienen con paquetes UFW preinstalados, pero aún no se han iniciado.
Para iniciar UFW, ejecuta el siguiente comando ufw. Con él, habilitarás el perfil OpenSSH que abrirá el puerto SSH 22 por defecto y, a continuación, ejecuta y habilita UFW.
sudo ufw allow OpenSSH sudo ufw enable
Escribe y para confirmar y verás la confirmación como la siguiente:
A continuación, tendrás que abrir los puertos TCP 8300, 8301, 8302, 8400, 8500 y 8600 para Consul.
Ejecuta el comando siguiente para abrir esos puertos en todos tus sistemas Ubuntu.
for i in 8300/tcp 8301/tcp 8302/tcp 8400/tcp 8500/tcp 8600/tcp do sudo ufw allow $i done
Por último, ejecuta el siguiente comando para verificar el estado de la UFW en tus servidores Ubuntu. Verás que el estado UFW está activo con los puertos 8300, 8301, 8302, 8400, 8500 y 8600 abiertos.
sudo ufw status
Creación del clúster Consul
Después de haber configurado UFW, el siguiente paso es crear un clúster Consul. Esto puede hacerse creando un nuevo archivo de configuración HCL dentro del directorio /etc/consul.d/.
Antes de empezar, ejecuta el siguiente comando para detener el servicio Consul. Así te asegurarás de que el servicio Consul está detenido antes de empezar a configurarlo.
sudo systemctl stop consul
Ahora ejecuta el siguiente comando en el servidor consul1 para generar una clave aleatoria para Consul. Esta clave se distribuirá a todos los servidores de Consul, así que asegúrate de copiar la clave generada.
consul keygen
Ahora crea una nueva configuración de Consul /etc/consul.d/consul.hcl en todos tus servidores Consul. En este ejemplo, utilizaremos el comando editor nano.
sudo nano /etc/consul.d/consul.hcl
Cambia la configuración por defecto de Consul y asegúrate de ajustar algunos valores como los siguientes:
# Full configuration options can be found at https://www.consul.io/docs/agent/config # datacenter datacenter = "my-dc-1" # data_dir # This flag provides a data directory for the agent to store state. data_dir = "/opt/consul" # client_addr # The address to which the Consul will bind client interfaces, including the HTTP and DNS # servers. client_addr = "0.0.0.0" # ui # Enables the built-in web UI server and the required HTTP routes. ui_config{ enabled = true } # default domain domain = "consul" # enable dns_config dns_config{ enable_truncate = true only_passing = true } # server # This flag is used to control if an agent is in server or client mode. When provided, # an agent will act as a Consul server. Each Consul cluster must have at least one # server and ideally no more than 5 per datacenter. All servers participate in the Raft # consensus algorithm to ensure that transactions occur in a consistent, linearizable # manner. Transactions modify cluster state, which is maintained on all server nodes to # ensure availability in the case of node failure. Server nodes also participate in a # WAN gossip pool with server nodes in other datacenters. Servers act as gateways to # other datacenters and forward traffic as appropriate. server = true # Advertise addr - if you want to point clients to a different address than bind or LB. advertise_addr = "192.168.5.36" # bootstrap_expect # This flag provides the number of expected servers in the datacenter. bootstrap_expect=3 # encrypt # Specifies the secret key to use for encryption of Consul network traffic. encrypt = "t/r8+jTHbMd9u/bD63i70e+h4pLUSRprn2mXKTKJXEY=" # retry_join retry_join = ["192.168.5.36", "192.168.5.37", "192.168.5.38"]
Cuando hayas terminado, guarda y sal del archivo.
A continuación se muestran algunos parámetros de Consul que puedes enfocar en cada uno de tus servidores:
- Servidor: Verdadero significa que el nodo actuará como servidor de Consul.
- advertise_addr: Cámbialo por la dirección IP correspondiente del servidor Consul.
- bootstrap_expect: ¿Cuántos servidores tendría tu cluster?
- encriptar: Cada servidor debe tener la misma clave.
- retry_join: Introduce las direcciones IP del clúster Consul en este parámetro.
Ahora ejecuta el siguiente comando para verificar y validar tu configuración de Consul. Si la sintaxis de Consul es correcta, obtendrás una salida como«¡La configuración es válida!«.
sudo consul validate /etc/consul.d/
A continuación, ejecuta el siguiente comando para iniciar Consul en cada uno de tus servidores. Empezando por consul01, consul02 y luego consul03.
sudo systemctl start consul
Por último, puedes ejecutar el siguiente comando para verificar el servicio Consul y asegurarte de que el servicio se está ejecutando en cada uno de tus servidores.
sudo systemctl status consul
Abajo puedes ver que Consul se está ejecutando en consul01.
A continuación, el servicio Consul se está ejecutando en el servidor consul02.
Y abajo está el estado del servidor consul03.
Interactuar con Consul
Llegados a este punto, ya has finalizado la configuración del clúster de Consul con tres servidores Ubuntu. En este paso, verificarás tu clúster Consul comprobando la lista de servidores, creando una base de datos clave-valor en Consul y, a continuación, verificando el nombre de dominio de los servidores Consul.
Comprueba la lista de servidores disponibles en tu clúster Consul utilizando el comando que se indica a continuación.
consul members
Si tu instalación de Consul se ha realizado correctamente, deberías ver tres servidores dentro de tu clúster Consul.
Además de la lista de miembros, también puedes ejecutar el siguiente comando para obtener la lista de pares del clúster Consul. Esto te mostrará el ID de balsa, el estado, el votante y la versión del protocolo.
consul operator raft list-peers
A continuación, verifica tu clúster Consul creando una nueva clave test_db y un valor testkv mediante el siguiente comando.
consul kv put consul/configuration/test_db testkv
Una vez creada la base de datos clave-valor, ejecuta el siguiente comando consul para recuperar la clave test_db. Verás el valor testkv.
consul kv get consul/configuration/test_db
Por último, comprueba el DNS de Consul utilizando el comando dig que aparece a continuación. Esto te mostrará el nombre de dominio por defecto de Consul consul.service.consul y apuntará a las direcciones IP de los clusters de Consul.
dig @127.0.0.1 -p 8600 consul.service.consul
Acceso a la interfaz web de Consul
Consul también proporciona un panel de administración web en una instalación por defecto, y se ejecuta en el puerto 8500 con la ruta /ui.
Inicia tu navegador web y visita la dirección IP de tu servidor como http://192.168.5.36:8500/ui/. Dentro del salpicadero de Consul, puedes ver la información de tres instancias de Consul disponibles.
A continuación, haz clic en el menú Nodos, que te mostrará información detallada sobre cada nodo. A continuación puedes ver el estado de Hearly, la dirección IP del servidor y la versión de Consul de cada servidor.
Por último, haz clic en el menú Clave/Valor para obtener la lista de datos clave-valor disponibles en tu clúster de Consul. A continuación puedes ver la base de datos test_db que has creado anteriormente.
Conclusión
¡Enhorabuena! Ya has instalado con éxito el clúster Consul utilizando tres servidores de la máquina Ubuntu 22.04. Además, también has aprendido los comandos básicos de Consul para gestionar Consul.