nl2go.hetzner_failover
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
- Ein bestehendes Hetzner Online GmbH Konto.
- Ein konfiguriertes Hetzner Robot Webservice Konto.
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.
Setup automatic IP failover using hetzner vSwitch and keepalived
ansible-galaxy install nl2go.hetzner_failover