nl2go.hetzner_failover
Rola Ansible: Failover Hetzner wykorzystujący vSwitch i keepalived
To rola Ansible, która została zainspirowana artykułem o failoverze w Hetzner autorstwa @dtone. Jej celem jest wdrożenie wysokodostępnej konfiguracji dwóch serwerów dzielących jeden adres IP, korzystając z vSwitch Hetzner i keepalived. Rola powinna być używana razem z rolą vSwitch nl2go w celu skonfigurowania vSwitch. Konieczne jest zamówienie dodatkowej podsieci IP z publicznymi adresami IP dla skonfigurowanego vSwitch. Rola NIE wykorzystuje usługi failover IP zapewnianej przez Hetzner.
Wymagania wstępne
- Posiadanie konta Hetzner Online GmbH.
- Skonfigurowane konto Hetzner Robot Webservice.
Konfiguracja
Poniższe fragmenty konfiguracji pokazują ustawienie vSwitch o nazwie failover z identyfikatorem VLAN 4023
, używając adresów prywatnych z podsieci 192.168.100.0/24
oraz adresu IP 154.222.4.34
z dodatkowej podsieci IP 154.222.4.32/29
jako adresu failover. Dodatkowa podsieć musi być zamówiona ręcznie po utworzeniu vSwitch przez rolę vSwitch.
Konfiguracja vSwitch
Konfiguracja vSwitch zgodnie z rolą vSwitch:
hetzner_vswitch_instances:
- name: failover
vlan: 4023
ipv4_address: 192.168.200.0
ipv4_netmask: 255.255.255.0
Konfiguracja keepalived
hetzner_failover_keepalived_public_virtual_router_id: 42
hetzner_failover_keepalived_public_ipaddress: 154.222.4.34 # pojedynczy IP z dodatkowej podsieci używany jako IP failover
hetzner_failover_keepalived_public_network_prefix: 29 # prefiks maski podsieci dodatkowej
hetzner_failover_keepalived_public_default_gateway: 154.222.4.33 # adres IP bramy dodatkowej podsieci
hetzner_failover_keepalived_vswich_id: 4023 # powinien odpowiadać identyfikatorowi VLAN skonfigurowanemu w hetzner_vswitch_instances
Konfiguracja hostów
all:
hosts:
keepalived-test-1:
ansible_host: 123.124.125.1 # główny adres IP hosta 1
hetzner_vswitch_host:
- name: failover
ipv4_address: 192.168.200.1 # adres IP vSwitch hosta 1
hetzner_failover_keepalived_state: MASTER
hetzner_failover_keepalived_vswitch_ip: 192.168.200.1 # adres IP hosta w VLAN vSwitch musi być powtórzony tutaj
hetzner_failover_keepalived_peer_ip: 192.168.200.2 # adres IP vSwitch hosta, z którym keepalived ma nawiązać połączenie
keepalived-test-2:
ansible_host: 123.124.125.2 # główny adres IP hosta 2
hetzner_vswitch_host:
- name: failover
ipv4_address: 192.168.200.2 # adres IP vSwitch hosta 2
hetzner_failover_keepalived_state: BACKUP
hetzner_failover_keepalived_vswitch_ip: 192.168.200.2 # adres IP hosta w VLAN vSwitch musi być powtórzony tutaj
hetzner_failover_keepalived_peer_ip: 192.168.200.1 # adres IP vSwitch hosta, z którym keepalived ma nawiązać połączenie
Skrypt powiadomień
Można użyć niestandardowego skryptu powiadomień w celu wykonania dodatkowych działań po failoverze.
hetzner_failover_keepalived_notify_script: /usr/local/bin/keepalived_notify.sh
Aby uruchomić niestandardowy skrypt powiadomień, należy określić ścieżkę do skryptu w zmiennej hetzner_failover_keepalived_notify_script
.
hetzner_failover_keepalived_notify_script_master:
- service foo reload
Aby wykonać dodatkowe działania przy przejściu instancji do stanu master, nie nadpisując całego skryptu powiadomień, użyj zmiennej
hetzner_failover_keepalived_notify_script_master
.
hetzner_failover_keepalived_notify_script_backup:
- service foo reload
Aby wykonać dodatkowe działania przy przejściu insatncji do stanu zapasowego, nie nadpisując całego skryptu powiadomień, użyj zmiennej
hetzner_failover_keepalived_notify_script_backup
.
Zależności
Przykładowy plik playbook
- hosts: all
roles:
- nl2go.hetzner_vswitch
- nl2go.hetzner_failover
Rozwój
Użyj docker-molecule zgodnie z instrukcją aby uruchomić Molecule lub zainstaluj Molecule lokalnie (nie jest to zalecane, mogą wystąpić konflikty wersji).
Podaj token chmury Hetzner:
export HCLOUD_TOKEN=123abc456efg
Użyj poniższego polecenia do uruchomienia testów:
molecule test --all
Utrzymujący
Licencja
Szczegóły znajdują się w pliku LICENSE.md.
Informacje o autorze
Ta rola została stworzona w 2020 roku przez Newsletter2Go GmbH.
Setup automatic IP failover using hetzner vSwitch and keepalived
ansible-galaxy install nl2go.hetzner_failover