このドキュメントで説明するソフトウェアは、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_path
arg
..." 遷移の最終状態が
BACKUP
のときにprogram_path
を起動します(program_path
は実行可能スクリプトまたはバイナリのフルパス名)。 プログラムに引数がある場合は、プログラム・パスと引数の両方をカッコで囲んでください。- notify_fault
program_path
, notify_fault "program_path
arg
..." 遷移の最終状態が
FAULT
のときにprogram_path
を起動します。- notify_master
program_path
, notify_master "program_path
arg
..." 遷移の最終状態が
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_path
arg
..." intervali
# Run script everyi
seconds fallf
# If script returns non-zerof
times in succession, enter FAULT state riser
# If script returns zeror
times in succession, exit FAULT state timeoutt
# Wait up tot
seconds for script before assuming non-zero exit code weightw
# Reduce priority byw
on 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の高可用性の実現」を参照してください。