このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。
通知スクリプトは、サーバーの状態が変更されたときにKeepalivedによって起動される実行可能プログラムです。 通知スクリプトを実装すると、ネットワーク・インタフェースの再構成や、サービスの起動、再ロード、停止などのアクションを実行できます。
通知スクリプトを起動するには、vrrp_instanceまたはvrrp_sync_groupセクション内に次のいずれかの行を挿入します。
- notify
program_path 次の引数を使用して
program_pathを起動します。-
$1 Keepalivedがプログラムを
vrrp_instanceから起動したかvrrp_sync_groupから起動したかに応じて、INSTANCEまたはGROUPに設定します。-
$2 vrrp_instanceまたはvrrp_sync_groupの名前に設定します。-
$3 遷移の最終状態(
BACKUP、FAULTまたはMASTER)に設定します。
-
- notify_backup
program_path, notify_backup "program_patharg..." 遷移の最終状態が
BACKUPのときにprogram_pathを起動します(program_pathは実行可能スクリプトまたはバイナリのフルパス名)。 プログラムに引数がある場合は、プログラム・パスと引数の両方をカッコで囲んでください。- notify_fault
program_path, notify_fault "program_patharg..." 遷移の最終状態が
FAULTのときにprogram_pathを起動します。- notify_master
program_path, notify_master "program_patharg..." 遷移の最終状態が
MASTERのときにprogram_pathを起動します。
次の実行可能スクリプトは、notifyの汎用バージョンを処理するために使用できます。
#!/bin/bash
ENDSTATE=$3
NAME=$2
TYPE=$1
case $ENDSTATE in
"BACKUP") # Perform action for transition to BACKUP state
exit 0
;;
"FAULT") # Perform action for transition to FAULT state
exit 0
;;
"MASTER") # Perform action for transition to MASTER state
exit 0
;;
*) echo "Unknown state ${ENDSTATE} for VRRP ${TYPE} ${NAME}"
exit 1
;;
esac
追跡スクリプトは、Keepalivedがvrrp_script定義に従って一定の間隔で実行するプログラムです。
vrrp_scriptscript_name{ script "program_patharg..." intervali# Run script everyiseconds fallf# If script returns non-zeroftimes in succession, enter FAULT state riser# If script returns zerortimes in succession, exit FAULT state timeoutt# Wait up totseconds for script before assuming non-zero exit code weightw# Reduce priority bywon fall }
program_pathは、実行可能スクリプトまたはバイナリのフルパス名です。
次の例のように、track_script句を指定することにより、追跡スクリプトをvrrp_instanceセクションと組み合せて使用できます。
vrrp_instanceinstance_name{ state MASTER interface eth0 virtual_router_id 21 priority 200 advert_int 1 virtual_ipaddress { 10.0.0.10/24 } track_script {script_name... } }
構成されたスクリプトがゼロ以外の終了コードを連続してf回返す場合、KeepalivedはVRRPインスタンスまたはグループの状態をFAULTに変更し、eth0から仮想IPアドレス10.0.0.10を削除し、wによる優先順位値を減らしてマルチキャストVRRPパケットの送信を停止します。 その後、スクリプトがゼロの終了コードを連続してr回返した場合、VRRPインスタンスまたはグループはFAULT状態を終了し、その新しい優先度に応じてMASTERまたはBACKUP状態に遷移します。
1つ以上のインタフェースが停止した場合にサーバーをFAULT状態にするには、次の例のように、track_interface句を使用することもできます。
track_interface {
eth0
eth1
}応用例として、Keepalivedサーバーの一部が通信を失ったときのスプリットブレイン条件を処理する追跡スクリプトを作成することもできます。 たとえば、スクリプトによって、他のKeepalivedサーバーの存在を追跡したり、共有ストレージやバックアップ通信チャネルを使用して投票メカニズムを実装したりできます。 ただし、スプリット・ブレイン条件を回避するようにKeepalivedを構成することは複雑であり、スクリプトによるソリューションでは対応できない場合もあります。
代替ソリューションの詳細は、17.12項「Oracle Clusterwareを使用したHAProxyの高可用性の実現」を参照してください。

