nl2go.hetzner_failover
Rol de Ansible: Conmutación por error de Hetzner usando un vSwitch y keepalived
Esta es una Rol de Ansible inspirada en un artículo sobre la conmutación por error en Hetzner por @dtone. Su objetivo es desplegar una configuración de alta disponibilidad de 2 servidores compartiendo una única IP utilizando hetzner vSwitch y keepalived. Este rol debe usarse junto con el rol de vSwitch de nl2go para configurar el vSwitch. Es necesario ordenar un subnet adicional con direcciones IP públicas para el vSwitch configurado. Este rol NO utiliza el servicio de IP en conmutación por error proporcionado por hetzner.
Requisitos previos
- Cuenta existente en Hetzner Online GmbH.
- Cuenta de Hetzner Robot Webservice configurada.
Configuración
Los siguientes fragmentos de configuración muestran la configuración de un vSwitch llamado failover con el ID de vlan 4023
, utilizando direcciones privadas del subnet 192.168.100.0/24
y la IP 154.222.4.34
del subnet IP adicional 154.222.4.32/29
como IP de conmutación por error. El subnet adicional debe ser pedido manualmente después de que el vSwitch sea creado por el rol de vSwitch.
Configuración del vSwitch
Configuración del vSwitch de acuerdo con el rol de vSwitch:
hetzner_vswitch_instances:
- name: failover
vlan: 4023
ipv4_address: 192.168.200.0
ipv4_netmask: 255.255.255.0
Configuración de keepalived
hetzner_failover_keepalived_public_virtual_router_id: 42
hetzner_failover_keepalived_public_ipaddress: 154.222.4.34 # IP única del subnet IP adicional utilizada como IP de conmutación por error
hetzner_failover_keepalived_public_network_prefix: 29 # prefijo de la máscara de red del subnet IP adicional
hetzner_failover_keepalived_public_default_gateway: 154.222.4.33 # IP de la puerta de enlace del subnet IP adicional
hetzner_failover_keepalived_vswich_id: 4023 # debe coincidir con el ID de vlan configurado en hetzner_vswitch_instances
Configuración de hosts
all:
hosts:
keepalived-test-1:
ansible_host: 123.124.125.1 # IP principal del host 1
hetzner_vswitch_host:
- name: failover
ipv4_address: 192.168.200.1 # IP del vSwitch del host 1
hetzner_failover_keepalived_state: MASTER
hetzner_failover_keepalived_vswitch_ip: 192.168.200.1 # IP del host en el VLAN del vSwitch que debe repetirse aquí
hetzner_failover_keepalived_peer_ip: 192.168.200.2 # IP del vSwitch del host con el que keepalived debe entablar relación
keepalived-test-2:
ansible_host: 123.124.125.2 # IP principal del host 2
hetzner_vswitch_host:
- name: failover
ipv4_address: 192.168.200.2 # IP del vSwitch del host 2
hetzner_failover_keepalived_state: BACKUP
hetzner_failover_keepalived_vswitch_ip: 192.168.200.2 # IP del host en el VLAN del vSwitch que debe repetirse aquí
hetzner_failover_keepalived_peer_ip: 192.168.200.1 # IP del vSwitch del host con el que keepalived debe entablar relación
Script de Notificación
Se puede utilizar un script de notificación personalizado para realizar acciones adicionales después de la conmutación por error.
hetzner_failover_keepalived_notify_script: /usr/local/bin/keepalived_notify.sh
Para ejecutar un script de notificación personalizado, especifique la ruta del script dentro de la variable hetzner_failover_keepalived_notify_script
.
hetzner_failover_keepalived_notify_script_master:
- service foo reload
Para realizar acciones adicionales en la instancia que cambia al estado de maestro sin sobreescribir todo el script de notificación, utilice
la variable hetzner_failover_keepalived_notify_script_master
.
hetzner_failover_keepalived_notify_script_backup:
- service foo reload
Para realizar acciones adicionales en la instancia que cambia al estado de respaldo sin sobreescribir todo el script de notificación, utilice
la variable hetzner_failover_keepalived_notify_script_backup
.
Dependencias
Ejemplo de Playbook
- hosts: all
roles:
- nl2go.hetzner_vswitch
- nl2go.hetzner_failover
Desarrollo
Use docker-molecule siguiendo las instrucciones para ejecutar Molecule o instale Molecule localmente (no recomendado, pueden aparecer conflictos de versiones).
Proporcione el token de la nube de Hetzner:
export HCLOUD_TOKEN=123abc456efg
Utilice lo siguiente para ejecutar pruebas:
molecule test --all
Mantenedores
Licencia
Consulte el archivo LICENSE.md para más detalles.
Información del Autor
Este rol fue creado en 2020 por Newsletter2Go GmbH.
Setup automatic IP failover using hetzner vSwitch and keepalived
ansible-galaxy install nl2go.hetzner_failover