nl2go.hetzner_failover

Statut de Construction Ansible Galaxy Tag GitHub (dernier par date) Téléchargements Ansible Galaxy

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

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.

À propos du projet

Setup automatic IP failover using hetzner vSwitch and keepalived

Installer
ansible-galaxy install nl2go.hetzner_failover
Licence
mit
Téléchargements
5.1k
Propriétaire