Cómo instalar Consul Server en AlmaLinux 9
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 esta guía, te guiaremos paso a paso por la instalación de Consul Cluster con múltiples servidores en AlmaLinux 9.
Requisitos previos
Para completar esta guía, asegúrate de que tienes lo siguiente:
- Dos o más servidores AlmaLinux dentro de la misma red.
- Un usuario no root con privilegios de administrador.
Configuración del sistema
En este primer paso, prepararás tus servidores AlmaLinux para la instalación de Consul, lo que incluye:
- Configurar Firewalld para abrir puertos.
- Configurar SELinux en modo Permisivo.
Configurar Firewalld
Antes de instalar los paquetes, debes abrir puertos en tus servidores Consul. En el caso del sistema operativo basado en RHEL, utilizarás Firewalld para abrir los puertos.
Ejecuta el siguiente comando para abrir los puertos 8300, 8301, 8302, 8400, 8500 y 8600 en tus servidores AlmaLinux. Si tiene éxito, deberías obtener una salida como éxito.
sudo firewall-cmd --permanent --zone=public --add-port={8300,8301,8302,8400,8500,8600}/tcp
Ahora, recarga el firewalld utilizando el siguiente comando para que surta efecto.
sudo firewall-cmd --reload
Por último, verifica tus reglas firewalld utilizando el siguiente comando. Asegúrate de que los puertos 8300, 8301, 8302, 8400, 8500, 8600 están disponibles en tu firewalld.
sudo firewall-cmd --zone=public --list-all
Cambiar SELinux a Permisivo
Después de configurar firewalld, cambiarás el modo SELinux por defecto a permisivo. Esto generará registros de error en SELinux sin bloquear la acción.
Ejecuta el siguiente comando para cambiar el modo SELinux a permisivo.
sudo setenforce 0 sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
A continuación, reinicia tus servidores para que surta efecto.
sudo reboot
Ahora que has configurado todos tus servidores AlmaLinux, puedes iniciar la instalación de Consul.
Instalación de Consul mediante DNF
Consul es una plataforma de red de servicios que soporta múltiples sistemas operativos. Además, Consul proporciona un repositorio de paquetes para distribuciones Linux, incluidas las basadas en RHEL. En este paso, instalarás Consul desde el repositorio de Consul mediante DNF.
Para empezar, instala algunos paquetes básicos ejecutando el siguiente comando. Introduce y para proceder a la instalación.
sudo dnf install dnf-plugins-core nano
Ahora ejecuta el siguiente comando DNF para añadir el repositorio de Consul a tus servidores Alma Linux. A continuación, comprueba la lista de repositorios disponibles en cada servidor.
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo sudo dnf repolist
La siguiente salida demuestra que has añadido el repositorio HashiCorp a tus sistemas.
A continuación, instala Consul ejecutando el siguiente comando. Escribe y para proceder a la instalación de Consul.
sudo dnf install consul
Una vez finalizada la instalación, ejecuta el siguiente comando para localizar el archivo binario de Consul y comprobar su versión.
which consul consul version
La salida que aparece a continuación confirma que el archivo binario de Consul está disponible en /bin/consul, y que la versión actual de Consul es la 1.17.
Configurar Consul
Llegados a este punto, ya has instalado Consul en todos tus servidores AlmaLinux. Empecemos a configurar el clúster de Consul con múltiples servidores sin más preámbulos. Para ilustrarlo, utilizaremos tres servidores AlmaLinux.
| Hostname | IP Address | | --------- | -------------- | | consul1 | 192.168.10.41 | | consul2 | 192.168.10.42 | | consul3 | 192.168.10.43 |
En primer lugar, detén el servicio cónsul en cada servidor ejecutando el siguiente comando.
sudo systemctl stop consul
Desplázate al servidor consul1 y ejecuta el siguiente comando para generar una nueva clave para el clúster Consul. Asegúrate de conservar la clave generada.
consul keygen
En todos tus servidores Consul, abre la configuración por defecto de Consul /etc/consul.d/consul.hcl utilizando el siguiente comando del editor nano.
sudo nano /etc/consul.d/consul.hcl
Cambia la configuración por defecto por la siguiente y ten en cuenta algunos parámetros que aparecen a continuación:
- Servidor: True 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 cluster Consul en este parámetro.
# Full configuration options can be found at https://www.consul.io/docs/agent/config # datacenter datacenter = "kitty-dc1" # 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.10.41" # 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 = "jFtV8jj4h1hnXGqTllWH+sOqLo/tw9xnnfDHcVxVnYg=" # retry_join retry_join = ["192.168.10.41", "192.168.10.42", "192.168.10.43"]
Guarda el archivo y sal de él cuando hayas terminado.
A continuación, ejecuta el siguiente comando para verificar la configuración de Consul. Si la sintaxis es correcta, deberías obtener una salida como «La configuración es válida«.
sudo consul validate /etc/consul.d/
Ahora ejecuta el siguiente comando para iniciar y habilitar el servicio Consul.
sudo systemctl start consul sudo systemctl enable consul
A continuación, verifica el cónsul utilizando el siguiente comando para asegurarte de que el servicio se ejecuta.
sudo systemctl status consul
En la siguiente salida, deberías ver que Consul se está ejecutando en el servidor consul1.
En la siguiente salida, deberías ver que Consul se está ejecutando en el servidor consul2.
En la siguiente salida, deberías ver que Consul se está ejecutando en el servidor consul3.
Interacción con el clúster Consul
Ahora que tienes el clúster Consul configurado en los servidores AlmaLinux, puedes verificar e interactuar con el clúster Consul a través de la línea de comandos consul.
Comprobación del clúster Consul
Ejecuta el siguiente comando para comprobar el servidor Consul disponible dentro del clúster.
consul members
En este ejemplo, el clúster Consul está compuesto por tres servidores, consul1, consul2 y consul3.
También puedes verificar la lista de pares en el Cluster utilizando el comando siguiente.
consul operator raft list-peers
A continuación puedes ver información detallada sobre cada servidor Cónsul, incluyendo el ID, el estado, el votante y la versión de RaftProtocol.
Añadir el Almacén KV (Clave-Valor) a Consul
A continuación, ejecuta el siguiente comando de Consul para crear una nueva base de datos clave-valor. En este ejemplo, crearás una nueva clave db_name con el valor testdb.
consul kv put consul/configuration/db_name testdb
Ahora ejecuta el comando siguiente para recuperar el valor de db_name.
consul kv get consul/configuration/db_name
Deberías obtener el valor testdb como el siguiente:
Interactuar con DNS en Consul
En esta guía, has habilitado el DNS de Consul. Para comprobar la configuración del DNS de Consul, utiliza el comando dig que aparece a continuación.
dig @127.0.0.1 -p 8600 consul.service.consul
En este ejemplo, has configurado los servidores Consul dentro del clúster con el mismo nombre de dominio que consul. Lo siguiente confirma que el dominio consul.service.consul con los registros A 192.168.10.41, 192.168.10.42, 192.168.10.43.
Acceder a la interfaz de usuario (Web UI) de Consul
Por último, abre tu navegador web y visita la dirección IP del servidor de Consul con el puerto 8500, por ejemplo: http: //192.168.10.41:8500/ui/, para acceder al panel de administración web de Consul.
A continuación deberías ver los servidores disponibles en el clúster de Consul.
Ahora, haz clic en el menú Nodos para obtener información detallada sobre cada servidor.
A continuación, haz clic en el menú Clave/Valor para obtener la lista de KV disponibles en tus servidores Consul.
Conclusión
Para terminar, has completado la instalación paso a paso del clúster Consul con tres servidores AlmaLinux. Has habilitado la Interfaz Web de Consul y el DNS de Consul en el clúster. Por último, también has aprendido algunos comandos básicos para interactuar con clústeres Consul, almacenes de valores clave y DNS.
A partir de aquí, ya puedes activar las ACL (Listas de Control de Acceso) e implementar TLS para las conexiones entre servidores y clientes de Consul.