ILB では、次のオプションのタイプのサーバー健全性検査が提供されています。
組み込み ping プローブ
組み込み TCP プローブ
組み込み UDP プローブ
健全性検査として実行できるユーザー指定のカスタムテスト
デフォルトでは、ILB は健全性検査を実行しません。負荷分散規則を作成するとき、サーバーグループごとに健全性検査を指定できます。1 つの負荷分散規則につき 1 つの健全性検査のみを構成できます。仮想サービスが有効であるかぎり、有効化されている仮想サービスに関連付けられたサーバーグループの健全性検査は自動的に開始され、定期的に繰り返されます。仮想サービスが無効化されると健全性検査はすぐに停止します。仮想サービスがふたたび有効化されたとき、以前の健全性検査状態は保持されていません。
健全性検査を実行するために TCP プローブ、UDP プローブ、またはカスタムテストプローブを指定した場合、ILB はデフォルトで、指定された TCP プローブ、UDP プローブ、またはカスタムテストプローブをサーバーに送信する前に、サーバーが到達可能かどうかを判別するために ping プローブを送信します。ping プローブに失敗すると、対応するサーバーは、健全性検査ステータスが unreachable になり無効化されます。ping プローブに成功しても、TCP プローブ、UDP プローブ、またはカスタムテストプローブに失敗した場合、サーバーは健全性検査ステータスが dead になり無効化されます。
UDP プローブ以外のデフォルトの ping プローブを無効化できます。ping プローブは、常に UDP 健全性検査のデフォルトのプローブになります。
負荷分散規則を作成する場合は、健全性検査を作成してサーバーグループに割り当てることができます。次の例では、hc1 と hc-myscript の 2 つの健全性検査オブジェクトが作成されます。最初の健全性検査は組み込み TCP プローブを使用します。2 番目の健全性検査はカスタムテスト /var/tmp/my-script を使用します。
# ilbadm create-healthcheck -h hc-timeout=3,\ hc-count=2,hc-interval=8,hc-test=tcp hc1 # ilbadm create-healthcheck -h hc-timeout=3,\ hc-count=2,hc-interval=8,hc-test=/var/tmp/my-script hc-myscript
引数は次のとおりです。
健全性検査が完了しない場合に失敗したと見なされるまでのタイムアウトを指定します。
hc-test 健全性検査の実行を試行する回数を指定します。
連続する健全性検査の間隔を指定します。プローブをすべてのサーバーに同時に送信することを回避するために、実際の間隔は 0.5 * hc-interval から 1.5 * hc-interval の間でランダム化されます。
健全性検査の種類を指定します。tcp、udp、ping などの組み込みの健全性検査、またはフルパス名で指定する必要のある外部の健全性検査を指定できます。
ユーザー指定のカスタムテストはバイナリまたはスクリプトになります。
テストはシステム上の任意の場所に配置できます。create-healthcheck サブコマンドを使用する場合は、絶対パスを指定する必要があります。
create-rule サブコマンドの健全性検査指定の一部としてテスト (/var/tmp/my-script など) を指定すると、ilbd デーモンがプロセスをフォークし、次のようにテストを実行します。
/var/tmp/my-script $1 $2 $3 $4 $5
引数は次のとおりです。
VIP (リテラルの IPv4 または IPv6 アドレス)
サーバー IP (リテラルの IPv4 または IPv6 アドレス)
プロトコル (文字列としての UDP、TCP)
数値ポート範囲 (hc-port に対するユーザー指定の値)
失敗を返す前にテストが待機する最大時間 (秒)。指定された時間を超えてテストが実行されると、停止される可能性があり、テストは失敗したと見なされます。この値はユーザーによって定義され、hc-timeout に指定されます。
ユーザー指定のテストは、すべての引数を使用しても使用しなくてもかまいませんが、次のいずれかを返す必要があります。
マイクロ秒単位の往復時間 (RTT)
テストが RTT を計算しない場合は 0
失敗した場合は -1
デフォルトでは、健全性検査テストは PRIV_PROC_FORK、RIV_PROC_EXEC、および RIV_NET_ICMPACCESS の特権で実行されます。
さらに広い特権セットが必要な場合、テストで setuid を実装する必要があります。特権の詳細は、privileges(5) のマニュアルページを参照してください。
構成済みの健全性検査の詳細情報を取得するには、次のコマンドを発行します。
# ilbadm show-healthcheck HCNAME TIMEOUT COUNT INTERVAL DEF_PING TEST hc1 3 2 8 Y tcp hc2 3 2 8 N /var/usr-script
ilbadm list-hc-result コマンドを使用して、健全性検査の結果を取得します。規則または健全性検査を指定しない場合、サブコマンドはすべての健全性検査を一覧表示します。
次の例では、rule1 という規則に関連付けられた健全性検査の結果を表示します。
# ilbadm show-hc-result rule1 RULENAME HCNAME SERVERID STATUS FAIL LAST NEXT RTT rule1 hc1 _sg1:0 dead 10 11:01:19 11:01:27 941 rule1 hc1 _sg1:1 alive 0 11:01:20 11:01:34 1111
出力の LAST 列は、サーバーで健全性検査が実行された時間を示します。NEXT 列は、次の健全性検査が実行される時間を示します。
ilbadm delete-healthcheck コマンドを使用して、健全性検査を削除します。次の例では、hc1 という健全性検査を削除します。
# ilbadm delete-healthcheck hc1