Introducción a Consul en HA
Introducción a Consul
Consul es una solución de HashiCorp para la gestión de servicios en infraestructura distribuida. Ofrece un conjunto de funcionalidades clave como el descubrimiento de servicios, la configuración distribuida, la segmentación de red y el monitoreo de la salud de los mismos.
Estas características hacen de Consul una herramienta esencial para la creación de aplicaciones escalables y resilientes en arquitecturas de microservicios.
Componentes Clave de Consul
- Servidor Consul: Almacena datos del clúster y coordina las operaciones. En un clúster de alta disponibilidad (HA), se recomienda tener múltiples servidores.
- Agentes Consul: Ejecutados en cada nodo de la infraestructura, pueden actuar como clientes (enviando consultas y registrando servicios) o como servidores.
- KV Store: Un almacén de clave-valor distribuido para almacenar configuraciones y otros datos.
- UI Web: Una interfaz gráfica para administrar y visualizar el estado del clúster.
Configuración de un Clúster Consul en HA
Vamos a configurar un clúster de Consul en alta disponibilidad utilizando dos servidores.
Aquí tienes los archivos de configuración de dos servidores de tu clúster:
Configuración de Consul01
node_name = "str-lab-consul01"
datacenter = "lab-datacenter"
# HTTP
bind_addr = "10.20.30.30"
client_addr = "0.0.0.0"
ports {
http = -1
https = 8500
}
# SSL Configuration
verify_incoming = false
verify_outgoing = false
cert_file = "/etc/consul/ssl/consul.crt"
key_file = "/etc/consul/ssl/consul.key"
# Data store path
data_dir = "/var/lib/consul"
# Log Level
log_level = "INFO"
# Define if consul server or agent/client
server = true
# Server conf
advertise_addr = "10.20.30.30"
bootstrap_expect = 2
# Consul servers list (servers, not agents/clients)
retry_join = [
"10.20.30.30",
"10.20.30.31"
]
connect {
enabled = true
}
# Web UI Configuration
ui_config {
enabled = true
}
# Pues para quorum de 2 nodos..
skip_leave_on_interrupt = true
leave_on_terminate = true
disable_update_check = true
autopilot {
cleanup_dead_servers = true
last_contact_threshold = "3s"
}
Configuración de Consul02
node_name = "str-lab-consul01"
datacenter = "lab-datacenter"
# HTTP
bind_addr = "10.20.30.31"
client_addr = "0.0.0.0"
ports {
http = -1
https = 8500
}
# SSL Configuration
verify_incoming = false
verify_outgoing = false
cert_file = "/etc/consul/ssl/consul.crt"
key_file = "/etc/consul/ssl/consul.key"
# Data store path
data_dir = "/var/lib/consul"
# Log Level
log_level = "INFO"
# Define if consul server or agent/client
server = true
# Server conf
advertise_addr = "10.20.30.31"
bootstrap_expect = 2
# Consul servers list (servers, not agents/clients)
retry_join = [
"10.20.30.30",
"10.20.30.31"
]
connect {
enabled = true
}
# Web UI Configuration
ui_config {
enabled = true
}
# Pues para quorum de 2 nodos..
skip_leave_on_interrupt = true
leave_on_terminate = true
disable_update_check = true
autopilot {
cleanup_dead_servers = true
last_contact_threshold = "3s"
}
Paso a Paso para Configurar el Clúster
- Instalación de Consul:
- Descarga e instala Consul en ambos servidores. Puedes seguir la guía oficial de instalación para tu sistema operativo.
- Configuración de SSL:
- Genera certificados SSL y colócalos en /etc/consul/ssl/ en ambos servidores.
- Actualiza los campos cert_file y key_file en la configuración para apuntar a los archivos de certificado y clave.
- Archivo de Configuración:
- Copia el archivo de configuración correspondiente a cada servidor y colócalo en /etc/consul.d/consul.hcl.
- Iniciar Consul:
- Inicia el servicio de Consul en ambos nodos
sudo systemctl start consul sudo systemctl enable consul
- Verificación:
- Verifica que ambos servidores se hayan unido correctamente al clúster.
consul members
- Acceso a la UI:
- Abre un navegador y accede a la interfaz web de Consul utilizando la dirección https:// 10.20.30.30:8500 o https:// 10.20.30.31:8500.
Conclusión
Configurar un clúster de Consul en alta disponibilidad es crucial para garantizar la resiliencia y disponibilidad continua de tus servicios, además de mejorar la eficiencia operativa y la fiabilidad de tu infraestructura distribuida.
Siguiendo estos pasos, puedes asegurarte de que tu clúster esté correctamente configurado y operativo.