View a markdown version of this page

アクティブ/パッシブロードバランサー - AWS IoT Greengrass

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アクティブ/パッシブロードバランサー

この設定では、一度に 1 つのインスタンスで HAProxy をロードバランサーとして実行します。HAProxy 設定ファイルは DRBD レプリケートストレージに保存されるため、Pacemaker がスタンバイインスタンスにフェイルオーバーすると、設定はすぐに使用できます。

重要

先に進む前提条件とクラスターのセットアップ前に、「」のすべてのステップを完了してください。

警告

特に明記されていない限り、プライマリインスタンスでのみ次のコマンドを実行します。

すべてのインスタンスに HAProxy をインストールする

HAProxy をインストールし、サービスを無効にして、Pacemaker がサービスを管理できるようにします。各インスタンスでこれを実行します。

sudo apt install -y haproxy sudo systemctl disable haproxy sudo systemctl stop haproxy

HAProxy の DRBD マウントを設定する

DRBD デバイスをロードバランサーのディレクトリにマウントします。

マウントポイントディレクトリを作成します。各インスタンスでこれを実行します。

sudo mkdir -p /drbd/loadbalancer/

DRBD デバイスをプライマリインスタンスにマウントします。まず、前提条件から以前のマウントポイントをアンマウントします。

sudo umount /greengrass/v2 sudo mount /dev/drbd0 /drbd/loadbalancer/

でマウントを確認しますlsblk。にdrbd0マウントされている が表示されます/drbd/loadbalancer

HAProxy を設定する

設定ファイルは、フェイルオーバーインスタンスにレプリケートされるように DRBD マウントディレクトリにある必要があります。

  1. HAProxy 設定を DRBD マウントディレクトリにコピーします。

    sudo mkdir -p /drbd/loadbalancer/etc/haproxy/ sudo cp /etc/haproxy/haproxy.cfg /drbd/loadbalancer/etc/haproxy/haproxy.cfg
  2. HAProxy systemd unit ファイルを編集して、DRBD マウントパスの設定を使用します。各インスタンスでこれを実行します。

    sudo systemctl edit haproxy

    次の行を追加して、設定ファイルパスを DRBD マウントパスに更新します。

    [Service] Environment="CONFIG=/drbd/loadbalancer/etc/haproxy/haproxy.cfg"
  3. systemd を再ロードします。各インスタンスでこれを実行します。

    sudo systemctl daemon-reload

DRBD リソースをアタッチする

DRBD デバイスをアンマウントし、DRBD を下げて、Pacemaker がデバイスを管理できるようにします。プライマリインスタンスとすべてのインスタンスdrbdadm downでアンマウントを実行します。

# On the primary instance only sudo umount /drbd/loadbalancer # On all instances sudo drbdadm down greengrass
sudo pcs resource create drbd-greengrass \ ocf:linbit:drbd drbd_resource=greengrass \ op monitor interval=15s role=Promoted \ op monitor interval=30s role=Unpromoted
sudo pcs resource promotable drbd-greengrass \ promoted-max=1 promoted-node-max=1 clone-max=2 clone-node-max=1 notify=true

ファイルシステムリソースをアタッチする

sudo pcs resource create fs_loadbalancer Filesystem \ device="/dev/drbd0" \ directory="/drbd/loadbalancer" \ fstype="ext4" \ op start timeout=15s \ op stop timeout=15s \ --disabled

HAProxy systemd リソースをアタッチする

sudo pcs resource create haproxy systemd:haproxy \ op monitor interval=10s \ op start timeout=60s \ op stop timeout=60s \ --disabled

リソース制約を作成する

sudo pcs constraint colocation add haproxy with fs_loadbalancer sudo pcs constraint order fs_loadbalancer then start haproxy sudo pcs constraint colocation add fs_loadbalancer with Promoted drbd-greengrass-clone sudo pcs constraint order promote drbd-greengrass-clone then start fs_loadbalancer

制約が設定されるようにリソースを有効にします。

sudo pcs resource enable fs_loadbalancer sudo pcs resource enable haproxy

このチュートリアルのセットアップで STONITH を無効にします。

sudo pcs property set stonith-enabled=false
警告

STONITH は、このチュートリアルを簡素化するためにここでは無効になっています。本番環境では、STONITH を有効にし、分割ブレインやデータの破損を防ぐためにフェンシングエージェント (fence_awsAmazon EC2 インスタンスなど) を設定する必要があります。

フェイルオーバーを検証する

  1. 初期状態を確認します。HAProxy がプライマリインスタンスで実行されていることを確認します。

    sudo pcs status
  2. フェイルオーバーをシミュレートします。プライマリノードをスタンバイモードにして、すべてのリソースをプライマリノードから強制的にオフにします。

    sudo pcs node standby primary-node-name
  3. フェイルオーバーを確認します。スタンバイインスタンスで、クラスターのステータスを確認します。DRBD、ファイルシステム、および HAProxy リソースがup-to-date設定ファイルを使用してスタンバイインスタンスで実行されているはずです。

    sudo pcs status

    障害が発生したインスタンスが回復すると、Pacemaker を設定して移行しない限り、ロードバランサーサービスはスタンバイインスタンスに残ります。

  4. ノードをオンラインに戻します。

    sudo pcs node unstandby primary-node-name