LB Health Check Kit は、特定のリソースが現在 In-Service のクラスターノードにロードバランサートラフィックをルーティングするために、LifeKeeper リソース階層の一部として使用できます。これは、リソースが In-Service のクラスターノード上の、ユーザー指定の TCP ポートでリスナーを維持することで使用できます。

フロントエンド IP リソースの作成

IP 転送を無効にして Google Cloud ロードバランサーを使用する場合 ( Google Cloud – 内部ロードバランサーの使用) の「IP転送を無効にする」セクションを参照)、ロードバランサーフロントエンドに関連付けられた IP アドレスは、各バックエンドサーバーのローカルネットワークインターフェースにネットワークマスク /32(255.255.255.255)を使用して追加する必要があります。

これらの構成では、ロードバランサーのフロントエンド IP アドレスは、クラウドエージェントプロセスによってネットワークインターフェースに自動的に 追加されることはありません 。代わりに、各バックエンドサーバーのゲストオペレーティングシステム内に手動で追加する必要があります。これを実現する最も簡単な方法は、ロードバランサーの各フロントエンド IP アドレスに LifeKeeper IP リソースを作成し、次のセクションで作成する LB Health Check リソースの依存関係として追加することです。

IP リソースの作成 の手順に従って、次のパラメーターを使用して、ロードバランサーの各フロントエンドIPアドレスにIPリソースを作成および拡張します。

フィールド
Create Resource ウィザード
Switchback Type intelligent
Server node-a
IP Resource <Frontend IP Address>
Netmask 255.255.255.255
Network Interface <Network Interface>
IP Resource Tag <Resource Tag>
Pre-Extend ウィザード
Target Server node-b
Switchback Type intelligent
Template Priority 1
Target Priority 10
Extend comm/ip Resource Hierarchy ウィザード
IP Resource <Frontend IP Address>
Netmask 255.255.255.255
Network Interface <Network Interface>
IP Resource Tag <Resource Tag>

ロードバランサーのフロントエンド IP アドレスごとに IP リソースが作成されたため、ロードバランサーのヘルスチェックプローブに応答する LB Health Check リソースを作成できます。

LB Health Check リソースの作成

この例では、TCP ポート 54321 で Listen するサーバー node-a 上にサンプルの LB Health Check リソースを作成します。

  1. LifeKeeper GUIで、 をクリックして Create Resource ウィザードを開きます。 「LB Health Check Kit」を選択します。

  1. Create Resource ウィザードに次の値を入力し、プロンプトが表示されたら [Create] をクリックします。 アイコンは、デフォルトのオプションが選択されていることを示します。
フィールド
Switchback Type Intelligent
Server node-a
Reply daemon Port 54321
Reply daemon message 空欄のままにします
LB Health Check Resource Tag ilb-test-54321

リソースが作成され、正常にサービスが開始されたら、 [Next>] をクリックして Pre-Extend ウィザード に進みます。

  1. Pre-Extend ウィザード に次の値を入力します。 アイコンは、デフォルトのオプションが選択されていることを示します。
フィールド
Target Server node-b
Switchback Type Intelligent
Template Priority 1
Target Priority 10

事前拡張チェックに合格したら、 [Next>] をクリックして、 Extend Resource Hierarchy ウィザードに進みます。

  1. Extend Resource Hierarchy ウィザードに次の値を入力し、プロンプトが表示されたら [Extend] をクリックします。 アイコンは、デフォルトのオプションが選択されていることを示します。
フィールド
LB Health Check Resource Tag ilb-test-54321

リソースが正常に拡張されたら、 [Finish] をクリックします。

  1. LifeKeeper GUI に戻ると、新しく作成された ilb-test-54321 リソースが node-a でアクティブ、node-b でスタンバイであることがわかります。この状態では、ポート 54321 で TCP ヘルスチェックを実行する TCP ロードバランサーは、node-a を正常、node-b を異常として扱い、すべてのロードバランサートラフィックを node-a にルーティングします。このリソースは、保護されたアプリケーションとともにリソース階層に配置されると、ロードバランサーのトラフィックが常に、アプリケーションが現在実行されているサーバーにルーティングされるようにします。

LB Health Check リソースの依存関係としてフロントエンド IP リソースを追加する

IP 転送を無効にして Google Cloud ロードバランサーを使用する場合 ( Google Cloud – 内部ロードバランサーの使用 IP アドレスを保護する IP リソース(ネットワークマスク 255.255.255.255 を使用)は、LB Health Check リソースの依存関係として追加する必要があります。上記の「フロントエンドIPリソースの作成」セクションで作成したIPリソースごとに、次の手順を実行します。

  1. ilb-test-54321 リソースを右クリックし、ドロップダウンメニューから [Create Dependency…] を選択します。
  1. 子リソースタグ に、ロードバランサーのフロントエンドIPアドレスを保護するリソースを指定します。
  1. [Next>] をクリックして続行し、 [Create Dependency] をクリックして依存関係を作成します。

IP リソースが依存関係として追加されると、階層は次のようになります

LB Health Check リソースのスイッチオーバーとフェイルオーバーをテストする

このセクションでは、node-a と node-b をバックエンドターゲットとして使用し、次のプロパティを持つ内部ロードバランサーを作成していると想定します。

  • フロントエンド内部 IP: 10.20.0.10
  • ポート 54321 での TCP ヘルスチェック

また、前のセクションで作成した ilb-test-54321 LB Health Check リソースは、現在 node-a でアクティブになっているとします。

便宜上、各サーバーのホスト名を返すだけの一時的な Apache Web サーバーをセットアップします。 node-aとnode-bの両方 で次のコマンドを実行します。SLES サーバーにインストールする場合は、コマンドを適宜調整してください(例:zypper install を使用)。

# yum install -y httpd
# systemctl start httpd
# echo $(hostname) > /var/www/html/index.html

続行する前に、node-a および node-b の TCP ポート 80 でトラフィックが許可されていることを確認してください。

次に、 ilb-test-54321 LB Health Checkリソースのスイッチオーバーおよびフェイルオーバー機能をテストします。

  1. ilb-test-54321 リソースが node-a でアクティブで node-b でスタンバイの場合、各サーバーで次のコマンドの出力を確認します。
[root@node-a ~]# curl http://10.20.0.10
node-a
[root@node-b ~]# curl http://10.20.0.10
node-a
  1. node-a で以下のコマンドを実行します。

[root@node-a ~]# while true; do curl http://10.20.0.10; sleep 1; done

そして、 ilb-test-54321 リソースの node-b へのスイッチオーバーを開始します。スイッチオーバーが正常に完了したら、Ctrl-C(SIGINT)を使用して、node-a で実行中のコマンドを終了させます。

コマンドの出力は次のようになります。


node-a
node-a
node-a
[switchover occurs]
node-b
node-b
node-b

特に、ロードバランサーは、node-b へのルーティングを開始する前に、node-a へのトラフィックのルーティングを完全に停止する必要があります。スイッチオーバーポイント付近の出力が次のようになっている場合:


node-a
[switchover occurs]
node-b
node-a
node-b
node-a
node-b
node-a
node-b
node-b
node-b

ヘルスチェックのプロパティを編集して、バックエンドインスタンスが異常と判定されてロードバランサープールから削除される前に、ヘルスチェックスローブ間の時間を短くしたり、ヘルスチェックスローブの失敗の最小回数を減らしたりする必要がある場合があります。詳しくは、「ロードバランサーのヘルスチェックパラメーターのチューニング」のセクションを参照してください。

  1. node-b で ilb-test-54321 リソースがアクティブになっている状態で、node-a で次のコマンドを実行します。

[root@node-a ~]# while true; do curl http://10.20.0.10; sleep 1; done

node-b を強制的に再起動して、 ilb-test-54321 リソースの node-a へのフェイルオーバーを開始します。

[root@node-b ~]# echo b > /proc/sysrq-trigger

フェイルオーバーが正常に終了したら,Ctrl-C(SIGINT)で node-a 上の実行中のコマンドを終了させます。

node-a でのコマンドの出力は以下のようなものになります。


node-b
node-b
node-b
[failover occurs]
node-a
node-a
node-a

この時点で、LB Health Check リソースの動作の基本的な検証は完了です。必要に応じて追加のテストを実行し、スイッチオーバーやフェイルオーバー時の LB Health Check リソースと保護対象のアプリケーション間の相互作用を検証します。LB Health Check リソースの機能テストが終了したら、node-a と node-b の両方で次のコマンドを実行して、一時的な Apache Web サーバーを削除することができます。

# systemctl stop httpd
# rm -f /var/www/html/index.html
# yum remove -y httpd

ロードバランサーヘルスチェックパラメーターのチューニング

ロードバランサーヘルスチェックパラメーターのチューニング 」をご覧ください。

フィードバック

お役に立ちましたか?

はい いいえ
お役に立ちましたか
理由をお聞かせください
フィードバックありがとうございました

このトピックへフィードバック

送信