nl2go.hetzner_failover

ビルドステータス Ansible Galaxy GitHub タグ(最新の日時) Ansible Galaxy ダウンロード

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
ライセンス
mit
ダウンロード
5.1k