nl2go.hetzner_failover

Build-Status Ansible Galaxy GitHub-Tag (neueste) Ansible Galaxy Downloads

Ansible Rolle: Hetzner Failover mit vSwitch und Keepalived

Eine Ansible Rolle, inspiriert von einem Artikel über Hetzner Failover von @dtone. Ziel ist es, eine hochverfügbare Einrichtung von 2 Servern zu deployen, die eine einzelne IP teilen, indem hetzner vSwitch und Keepalived verwendet werden. Die Rolle sollte zusammen mit der nl2go vSwitch Rolle verwendet werden, um den vSwitch einzurichten. Es wird ein zusätzliches IP-Subnetz mit öffentlichen IP-Adressen benötigt, das für den konfigurierten vSwitch bestellt werden muss. Die Rolle nutzt nicht den Failover-IP-Service von Hetzner.

Voraussetzungen

Konfiguration

Die folgenden Konfigurationsfragmente zeigen die Einrichtung eines vSwitch namens Failover mit der VLAN-ID 4023, unter Verwendung von privaten Adressen aus dem Subnetz 192.168.100.0/24 und der IP 154.222.4.34 aus dem zusätzlichen IP-Subnetz 154.222.4.32/29 als Failover-IP. Das zusätzliche Subnetz muss manuell bestellt werden, nachdem der vSwitch von der vSwitch-Rolle erstellt wurde.

vSwitch-Konfiguration

vSwitch-Konfiguration gemäß der vSwitch Rolle:

hetzner_vswitch_instances:
- name: failover
    vlan: 4023
    ipv4_address: 192.168.200.0
    ipv4_netmask: 255.255.255.0

Keepalived-Konfiguration

hetzner_failover_keepalived_public_virtual_router_id: 42

hetzner_failover_keepalived_public_ipaddress: 154.222.4.34 # Einzelne IP aus dem zusätzlichen IP-Subnetz, die als Failover-IP verwendet wird
hetzner_failover_keepalived_public_network_prefix: 29 # Netzmaske Prefix des zusätzlichen IP-Subnetzes
hetzner_failover_keepalived_public_default_gateway: 154.222.4.33 # Gateway-IP des zusätzlichen IP-Subnetzes

hetzner_failover_keepalived_vswich_id: 4023 # Sollte mit der VLAN-ID übereinstimmen, die in hetzner_vswitch_instances konfiguriert ist

Hosts-Konfiguration

all:
  hosts:
    keepalived-test-1:
      ansible_host: 123.124.125.1 # Haupt-IP von Host 1
      hetzner_vswitch_host:
        - name: failover
          ipv4_address: 192.168.200.1 # vSwitch-IP von Host 1
      hetzner_failover_keepalived_state: MASTER
      hetzner_failover_keepalived_vswitch_ip: 192.168.200.1 # IP des Hosts im vSwitch-VLAN muss hier wiederholt werden
      hetzner_failover_keepalived_peer_ip: 192.168.200.2 # vSwitch-IP des Hosts, mit dem Keepalived verbunden werden soll
    keepalived-test-2:
      ansible_host: 123.124.125.2 # Haupt-IP von Host 2
      hetzner_vswitch_host:
        - name: failover
          ipv4_address: 192.168.200.2 # vSwitch-IP von Host 2
      hetzner_failover_keepalived_state: BACKUP
      hetzner_failover_keepalived_vswitch_ip: 192.168.200.2 # IP des Hosts im vSwitch-VLAN muss hier wiederholt werden
      hetzner_failover_keepalived_peer_ip: 192.168.200.1 # vSwitch-IP des Hosts, mit dem Keepalived verbunden werden soll

Benachrichtigungsskript

Ein benutzerdefiniertes Benachrichtigungsskript kann verwendet werden, um zusätzliche Aktionen nach dem Failover durchzuführen.

hetzner_failover_keepalived_notify_script: /usr/local/bin/keepalived_notify.sh

Um ein benutzerdefiniertes Benachrichtigungsskript auszuführen, geben Sie den Skriptpfad in der Variablen hetzner_failover_keepalived_notify_script an.

hetzner_failover_keepalived_notify_script_master:
  - service foo reload

Um zusätzliche Aktionen auf der Instanz durchzuführen, die in den Masterzustand wechselt, ohne das gesamte Benachrichtigungsskript zu überschreiben, verwenden Sie die Variable hetzner_failover_keepalived_notify_script_master.

hetzner_failover_keepalived_notify_script_backup:
  - service foo reload

Um zusätzliche Aktionen auf der Instanz durchzuführen, die in den Backupzustand wechselt, ohne das gesamte Benachrichtigungsskript zu überschreiben, verwenden Sie die Variable hetzner_failover_keepalived_notify_script_backup.

Abhängigkeiten

Beispiel Playbook

- hosts: all
  roles:
    - nl2go.hetzner_vswitch
    - nl2go.hetzner_failover

Entwicklung

Verwenden Sie docker-molecule, um die Anweisungen zu befolgen und Molecule auszuführen oder installieren Sie Molecule lokal (nicht empfohlen, da Versionen in Konflikt geraten könnten).

Bereitstellung des Hetzner Cloud Tokens:

export HCLOUD_TOKEN=123abc456efg

Verwenden Sie Folgendes, um Tests auszuführen:

molecule test --all

Wartungsanbieter

Lizenz

Siehe die Datei LICENSE.md für Einzelheiten.

Autoreninformationen

Diese Rolle wurde 2020 von Newsletter2Go GmbH erstellt.

Über das Projekt

Setup automatic IP failover using hetzner vSwitch and keepalived

Installieren
ansible-galaxy install nl2go.hetzner_failover
GitHub Repository
Lizenz
mit
Downloads
5.1k