nl2go.hetzner_failover
Ansibleロール: vSwitchとkeepalivedを使ったHetznerのフェイルオーバー
これは@dtoneの記事からインスパイアを受けたAnsibleロールです。二つのサーバーが単一のIPアドレスを共有する高可用性のセットアップを実現することを目的としています。これには、Hetzner vSwitchとkeepalivedを利用します。このロールは、vSwitchを設定するためにnl2go vSwitchロールと一緒に使用する必要があります。設定されたvSwitchのためには、追加のパブリックIPアドレスを持つIPサブネットを別途注文する必要があります。このロールは、Hetznerが提供するフェイルオーバーIPサービスを利用しません。
前提条件
設定
以下の設定例では、192.168.100.0/24
サブネットからのプライベートアドレスと、追加のIPサブネット154.222.4.32/29
からフェイルオーバーIP154.222.4.34
を使用して、4023
というVLAN IDの名前を持つvSwitch「failover」を設定します。追加のサブネットは、vSwitchロールによってvSwitchが作成された後に手動で注文する必要があります。
vSwitch 設定
vSwitch設定は、vSwitchロールに従います:
hetzner_vswitch_instances:
- name: failover
vlan: 4023
ipv4_address: 192.168.200.0
ipv4_netmask: 255.255.255.0
keepalived 設定
hetzner_failover_keepalived_public_virtual_router_id: 42
hetzner_failover_keepalived_public_ipaddress: 154.222.4.34 # フェイルオーバーIPとして使用される追加のIPサブネットからの単一IP
hetzner_failover_keepalived_public_network_prefix: 29 # 追加のIPサブネットのネットマスクプレフィックス
hetzner_failover_keepalived_public_default_gateway: 154.222.4.33 # 追加のIPサブネットのゲートウェイIP
hetzner_failover_keepalived_vswich_id: 4023 # hetzner_vswitch_instancesで設定したVLAN IDと一致する必要があります
ホスト設定
all:
hosts:
keepalived-test-1:
ansible_host: 123.124.125.1 # ホスト1のメインIP
hetzner_vswitch_host:
- name: failover
ipv4_address: 192.168.200.1 # ホスト1のvSwitch IP
hetzner_failover_keepalived_state: MASTER
hetzner_failover_keepalived_vswitch_ip: 192.168.200.1 # vSwitch VLAN内のホストのIPをここに繰り返します
hetzner_failover_keepalived_peer_ip: 192.168.200.2 # keepalivedがピアリングするホストのvSwitch IP
keepalived-test-2:
ansible_host: 123.124.125.2 # ホスト2のメインIP
hetzner_vswitch_host:
- name: failover
ipv4_address: 192.168.200.2 # ホスト2のvSwitch IP
hetzner_failover_keepalived_state: BACKUP
hetzner_failover_keepalived_vswitch_ip: 192.168.200.2 # vSwitch VLAN内のホストのIPをここに繰り返します
hetzner_failover_keepalived_peer_ip: 192.168.200.1 # keepalivedがピアリングするホストのvSwitch IP
通知スクリプト
フェイルオーバー後の追加アクションを実行するためにカスタム通知スクリプトを使用できます。
hetzner_failover_keepalived_notify_script: /usr/local/bin/keepalived_notify.sh
カスタム通知スクリプトを実行するには、hetzner_failover_keepalived_notify_script
変数内にスクリプトのパスを指定します。
hetzner_failover_keepalived_notify_script_master:
- service foo reload
マスターステートに切り替わるインスタンスで追加のアクションを実行するには、hetzner_failover_keepalived_notify_script_master
変数を使用して、全体の通知スクリプトをオーバーライドすることなく使用します。
hetzner_failover_keepalived_notify_script_backup:
- service foo reload
バックアップステートに切り替わるインスタンスで追加のアクションを実行するには、hetzner_failover_keepalived_notify_script_backup
変数を使用して、全体の通知スクリプトをオーバーライドすることなく使用します。
依存関係
例プレイブック
- hosts: all
roles:
- nl2go.hetzner_vswitch
- nl2go.hetzner_failover
開発
Docker Moleculeを使用して、Moleculeを実行する手順に従ってください。または、Moleculeをローカルにインストールして使用してください(推奨されません、バージョンの競合が発生する可能性があります)。
Hetzner Cloudトークンを提供します:
export HCLOUD_TOKEN=123abc456efg
テストを実行するには、以下を使用します:
molecule test --all
メンテイナー
ライセンス
詳細はLICENSE.mdファイルを参照してください。
作者情報
このロールは2020年にNewsletter2Go GmbHによって作成されました。
Setup automatic IP failover using hetzner vSwitch and keepalived
ansible-galaxy install nl2go.hetzner_failover