Instalación de un clúster Nomad con consola en servidores en la nube

0 acciones
0
0
0
0

Introducción

En este tutorial, configuraremos un clúster HashiCorp Nomad usando la consola para descubrir servicios y nodos. Con tres nodos de servidor y un número arbitrario de nodos de cliente, este tutorial puede ser una buena base para proyectos en crecimiento. También crearemos una instantánea en Hetzner Cloud para nuestros clientes, lo que nos permitirá agregar más clientes sin tener que configurarlos manualmente. Este clúster se ejecutará en una red privada entre los servidores y será compatible con todas las funciones predeterminadas de Nomad y la consola, como el descubrimiento de servicios y los volúmenes.

Este tutorial sigue parcialmente los pasos recomendados en las guías de instalación oficiales de Consul y Nomad.

Requisitos previos
  • Una cuenta de Hetzner Cloud
  • Introducción a Linux y los comandos de terminal
  • Capacidad de conectarse al servidor a través de ssh

Este tutorial ha sido probado en servidores Ubuntu 24.04 de Hetzner Cloud con versiones Nomad 1.9.3 y Consul 1.20.1.

Términos y símbolos

Comandos:

local$ <دستور> # این دستور باید در ماشین محلی شما اجرا شود

server$ <دستور> # این دستور باید در سرور به‌عنوان کاربر root اجرا شود

 

Paso 1 – Crear una imagen base

En este paso se utilizarán los siguientes recursos:

  • 1 servidor en la nube Hetzner modelo CX22

Comenzaremos configurando un servidor Consul/Nomad en un nuevo servidor CX22 en Hetzner Cloud. La instantánea resultante se utilizará como imagen base para todos los servidores y clientes del clúster en los siguientes pasos.

Paso 1.1 – Instalación de Consul

Para instalar Consul, ejecute los siguientes comandos:

server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install consul

Para agregar la funcionalidad de autocompletar en Consul (opcional):

server$ consul -autocomplete-install

Paso 1.2 – Instalar el binario Nomad

Para instalar Nomad, ejecute los siguientes comandos:

server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install nomad

Para agregar la funcionalidad de autocompletar en Nomad (opcional):

server$ nomad -autocomplete-install

Paso 1.3 – Preparación de los servicios de systemd

Consul y Nomad deberían iniciarse automáticamente al arrancar. Para habilitar esta función, cree un servicio systemd para cada uno.

server$ chown consul:consul dc1-server-consul*
server$ chown consul:consul dc1-client-consul*
server$ chown -R consul:consul /opt/consul
server$ chown -R nomad:nomad /opt/nomad
server$ mkdir -p /opt/alloc_mounts && chown -R nomad:nomad /opt/alloc_mounts

Luego cree el archivo de configuración /etc/systemd/system/consul.service con el siguiente contenido:

[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl
[Service]
EnvironmentFile=-/etc/consul.d/consul.env
User=consul
Group=consul
ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

Y crea el archivo de configuración /etc/systemd/system/nomad.service con el siguiente contenido:

[Unit]
Description=Nomad
Documentation=https://www.nomadproject.io/docs/
Wants=network-online.target
After=network-online.target
[Service]
User=nomad
Group=nomad
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=65536
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
OOMScoreAdjust=-1000
TasksMax=infinity
[Install]
WantedBy=multi-user.target

No habilite estos servicios en esta etapa, ya que la instalación aún no está completa.

Paso 1.5 – Crear una instantánea base

Finalmente, detenga el servidor en la consola de Hetzner Cloud y cree una instantánea. Esta instantánea se usará como base para configurar los servidores y clientes del clúster.

Paso 2: Configuración de servidores en clúster

En este paso, creará tres servidores de clúster a partir de la imagen base. Estos servidores serán la base de su clúster y elegirán automáticamente un líder de clúster.

Utilizaremos los siguientes recursos:

  • 1 Red de nubes de Hetzner
  • 3 servidores en la nube Hetzner modelo CX22

En la consola de Hetzner Cloud, cree tres servidores CX22 a partir de la instantánea creada en el paso 1 y conéctelos a una red compartida en la nube. Este tutorial usará la red 10.0.0.0/8, pero también funcionarán redes más pequeñas.

Paso 2.1 – Generar una clave de cifrado simétrica

Primero, cree una clave de cifrado simétrica que se compartirá entre todos los servidores. Guarde esta clave en un lugar seguro, ya que la necesitaremos en los siguientes pasos.

server$ consul keygen

Paso 2.2 – Distribuir certificados

Ahora podemos copiar los certificados correctos del paso 1 al directorio de configuración de Consul. Ejecute el siguiente comando en todos los servidores:

server$ cp consul-agent-ca.pem /etc/consul.d/

Los tres certificados de servidor creados en el paso 1 deben distribuirse para que cada servidor obtenga su propio certificado único con la clave correspondiente. Este tutorial proporciona los siguientes comandos para los diferentes servidores:

[10.0.0.2] server$ cp -a dc1-server-consul-0* /etc/consul.d/
[10.0.0.3] server$ cp -a dc1-server-consul-1* /etc/consul.d/
[10.0.0.4] server$ cp -a dc1-server-consul-2* /etc/consul.d/

Paso 2.3 – Editar la configuración de Consul

En todos los servidores, edite el archivo de configuración /etc/consul.d/consul.hcl y agregue el siguiente contenido:

datacenter = "dc1"
data_dir = "/opt/consul"
encrypt = "your-symmetric-encryption-key"
tls {
defaults {
ca_file = "/etc/consul.d/consul-agent-ca.pem"
cert_file = "/etc/consul.d/dc1-server-consul-0.pem"
key_file = "/etc/consul.d/dc1-server-consul-0-key.pem"
verify_incoming = true
verify_outgoing = true
},
internal_rpc {
verify_server_hostname = true
}
}
retry_join = ["10.0.0.2"]
bind_addr = "{{ GetPrivateInterfaces | include \"network\" \"10.0.0.0/8\" | attr \"address\" }}"
acl = {
enabled = true
default_policy = "allow"
enable_token_persistence = true
}
performance {
raft_multiplier = 1
}

Paso 2.4 – Configuración de Consul y Nomad

Ahora que las configuraciones están realizadas correctamente, puedes iniciar los servicios Consul y Nomad.

server$ systemctl enable consul
server$ systemctl start consul
server$ systemctl enable nomad
server$ systemctl start nomad

Para comprobar el estado de los servicios, puede utilizar los siguientes comandos:

server$ systemctl status consul
server$ systemctl status nomad
 

Si todo funciona correctamente, los servicios Consul y Nomad deberían estar ejecutándose y el clúster debería estar configurado correctamente.

Paso 2.5 – Conexión de otros nodos al clúster

Ahora que los servidores principales del clúster están en funcionamiento, es hora de conectar los demás nodos. Para conectar los nodos cliente al clúster, simplemente aplique la misma configuración a las configuraciones de Consul y Nomad para los nuevos nodos.

En cada uno de los nodos del cliente, cree los mismos archivos de configuración que el servidor principal y luego inicie los servicios:

client$ cp consul-agent-ca.pem /etc/consul.d
/client$ cp dc1-client-consul-* /etc/consul.d
/client$ systemctl enable consul client$ systemctl start consul
client$ systemctl enable nomad client$ systemctl start nomad

Paso 3: Verificar el clúster y la configuración

Después de iniciar los servidores y clientes, puede comprobar el estado del clúster utilizando los siguientes comandos:

client$ consul members

Este comando debería mostrar una lista de nodos del clúster. También puede comprobar el estado y la configuración de Nomad con el siguiente comando:

client$ nomad status

Paso 4 – Gestión del clúster

Ahora que su clúster Consul y Nomad está configurado correctamente, puede administrarlo y aprovechar sus diversas funciones.

Para ver el estado del clúster y ejecutar solicitudes de administración, utilice los siguientes comandos:

  • información del cónsul # para obtener información general sobre el clúster Consul
  • estatus laboral nómada # para ver el estado del trabajo de Nomad
  • estado de asignación nómada # para ver el estado de las asignaciones en el clúster Nomad

Uso de Nomad Cluster

Nomad le permite realizar diversas tareas, como administrar trabajos, implementar pods y coordinarse con Consul para descubrir servicios.

Usando Consul para descubrir servicios

Consul proporciona detección automática de servicios. Mediante la interfaz web de Consul (disponible por defecto en el puerto 8500), puede ver los servicios disponibles y configurarlos si es necesario.

Resultado

En este tutorial, creó un clúster de servidores HashiCorp Nomad y Consul en una red de nube privada con Hetzner Cloud. Este clúster puede utilizarse para gestionar diversas cargas de trabajo a gran escala. También se explicó cómo lanzar nuevos nodos mediante Snapshot y configurar los servidores en detalle.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También te puede gustar