nl2go.hetzner_failover
Rôle Ansible : Failover Hetzner avec un vSwitch et keepalived
Un rôle Ansible inspiré par un article sur le failover Hetzner par @dtone. Il a pour but de déployer une configuration hautement disponible de 2 serveurs partageant une seule adresse IP, en utilisant le vSwitch Hetzner et keepalived. Le rôle doit être utilisé avec le rôle vSwitch nl2go pour configurer le vSwitch. Un sous-réseau IP supplémentaire avec des adresses IP publiques doit être commandé pour le vSwitch configuré. Le rôle ne utilise pas le service d'IP failover proposé par Hetzner.
Prérequis
- Un compte Hetzner Online GmbH.
- Un compte Service Web Hetzner Robot configuré.
Configuration
Les fragments de configuration suivants montrent la configuration d'un vSwitch nommé failover avec l'id vlan 4023
, utilisant des adresses privées du sous-réseau 192.168.100.0/24
et l'IP 154.222.4.34
du sous-réseau IP supplémentaire 154.222.4.32/29
comme IP de failover. Le sous-réseau supplémentaire doit être commandé manuellement après la création du vSwitch par le rôle vSwitch.
Configuration du vSwitch
Configuration du vSwitch selon le rôle vSwitch:
hetzner_vswitch_instances:
- name: failover
vlan: 4023
ipv4_address: 192.168.200.0
ipv4_netmask: 255.255.255.0
Configuration de keepalived
hetzner_failover_keepalived_public_virtual_router_id: 42
hetzner_failover_keepalived_public_ipaddress: 154.222.4.34 # IP unique du sous-réseau IP supplémentaire utilisée comme IP de failover
hetzner_failover_keepalived_public_network_prefix: 29 # préfixe de masque réseau du sous-réseau IP supplémentaire
hetzner_failover_keepalived_public_default_gateway: 154.222.4.33 # IP passerelle du sous-réseau IP supplémentaire
hetzner_failover_keepalived_vswich_id: 4023 # doit correspondre à l'id vlan configuré dans hetzner_vswitch_instances
Configuration des hôtes
all:
hosts:
keepalived-test-1:
ansible_host: 123.124.125.1 # IP principale de l'hôte 1
hetzner_vswitch_host:
- name: failover
ipv4_address: 192.168.200.1 # IP vSwitch de l'hôte 1
hetzner_failover_keepalived_state: MASTER
hetzner_failover_keepalived_vswitch_ip: 192.168.200.1 # IP de l'hôte dans le VLAN vSwitch doit être répétée ici
hetzner_failover_keepalived_peer_ip: 192.168.200.2 # IP vSwitch de l'hôte avec lequel keepalived doit établir une connexion
keepalived-test-2:
ansible_host: 123.124.125.2 # IP principale de l'hôte 2
hetzner_vswitch_host:
- name: failover
ipv4_address: 192.168.200.2 # IP vSwitch de l'hôte 2
hetzner_failover_keepalived_state: BACKUP
hetzner_failover_keepalived_vswitch_ip: 192.168.200.2 # IP de l'hôte dans le VLAN vSwitch doit être répétée ici
hetzner_failover_keepalived_peer_ip: 192.168.200.1 # IP vSwitch de l'hôte avec lequel keepalived doit établir une connexion
Script de Notification
Un script de notification personnalisé peut être utilisé pour effectuer des actions supplémentaires après le failover.
hetzner_failover_keepalived_notify_script: /usr/local/bin/keepalived_notify.sh
Pour exécuter un script de notification personnalisé, spécifiez le chemin du script dans la variable hetzner_failover_keepalived_notify_script
.
hetzner_failover_keepalived_notify_script_master:
- service foo reload
Pour effectuer des actions supplémentaires sur l'instance qui passe à l'état maître sans remplacer l'ensemble du script de notification, utilisez la variable hetzner_failover_keepalived_notify_script_master
.
hetzner_failover_keepalived_notify_script_backup:
- service foo reload
Pour effectuer des actions supplémentaires sur l'instance qui passe à l'état de secours sans remplacer l'ensemble du script de notification, utilisez la variable hetzner_failover_keepalived_notify_script_backup
.
Dépendances
Exemple de Playbook
- hosts: all
roles:
- nl2go.hetzner_vswitch
- nl2go.hetzner_failover
Développement
Utilisez docker-molecule en suivant les instructions pour faire fonctionner Molecule ou installez Molecule localement (non recommandé, des conflits de version peuvent apparaître).
Fournissez le jeton Cloud Hetzner :
export HCLOUD_TOKEN=123abc456efg
Utilisez ce qui suit pour exécuter des tests :
molecule test --all
Mainteneurs
Licence
Voir le fichier LICENSE.md pour plus de détails.
Informations sur l'Auteur
Ce rôle a été créé en 2020 par Newsletter2Go GmbH.
Setup automatic IP failover using hetzner vSwitch and keepalived
ansible-galaxy install nl2go.hetzner_failover