14.3.4 HAモニタの環境設定
全ノードでHAモニタの環境設定をしてください。HAモニタの環境設定方法については,マニュアル「HAモニタ Linux(R)(x86)編」の「システムの構築」を参照してください。
ここでは,HAモニタの環境設定をする際に留意することについて説明します。
- 〈この項の構成〉
(1) sysdefファイルの指定
HAモニタのsysdefファイルに指定するオペランドのうち,次のオペランドについては,指定値が決まっています。
-
ノードのリセット優先度を指定します。指定値が小さいほど,そのノードのリセット優先度が高くなります。各ノードで異なる値を次のように指定してください。
-
マスタノードは,リセット優先度をいちばん高くしたいため,マスタノードの指定値をいちばん小さくしてください。
-
スレーブノードは,スレーブノードごとに異なる値を指定してください。リセット優先度が高いスレーブノードほど指定値を小さくしてください。マスタノードの切り替えの際に優先順位が高いスレーブノードほど,リセット優先度が高いスレーブノードにしてください。
-
-
nouseを指定します。
-
マルチノード機能は,HAモニタのマルチスタンバイ機能を使用するため,useを指定します。
-
HADB用の設定を記述したユーザコマンドの絶対パスを指定します。
ユーザコマンドはひな形を基に作成してください。作成方法については,「14.3.4(3)(b) ユーザコマンドの作成」,およびマニュアル「HAモニタ Linux(R)(x86)編」の「ユーザコマンドの作成」を参照してください。
-
nouseを指定します。
上記のオペランドの詳細については,マニュアル「HAモニタ Linux(R)(x86)編」の「HAモニタの環境設定(sysdef)」を参照してください。
(2) serversファイルの指定
HAモニタのserversファイルに指定するオペランドのうち,次のオペランドについては,指定値が決まっています。
-
サーバディレクトリの絶対パスを指定します。
-
マルチノード機能は,HAモニタのモニタモードで動作するため,monitorを指定します。
-
HADB用の設定を記述したサーバの停止コマンドの絶対パスを指定します。
サーバの停止コマンドはひな形を基に作成してください。作成方法については,「14.3.4(3)(d) サーバの停止コマンドの作成」,およびマニュアル「HAモニタ Linux(R)(x86)編」の「サーバの停止コマンドの作成」を参照してください。
-
マスタノードの場合はonlineを,スレーブノードの場合はstandbyを指定します。
-
システムディレクトリのファイルシステムを含むVGの絶対パスを指定します。「図14-1 マルチノード機能を使用した場合のシステム構成例」の場合は,/dev/vg_hadbを指定します。
-
システムディレクトリのファイルシステムに対応する論理ボリュームの絶対パスを指定します。「図14-1 マルチノード機能を使用した場合のシステム構成例」の場合は,/dev/vg_hadb/sys_hadbを指定します。
-
システムディレクトリのパス($DBDIR/ADBSYS)を指定します。
-
システムディレクトリのファイルシステムをマウントするためのマウントオプションを指定します。
-
LANの状態設定ファイルを使用するため,useを指定します。
LANの状態設定ファイルには,エイリアスIPアドレスの設定をしてください。詳細については,マニュアル「HAモニタ Linux(R)(x86)編」の「LANの状態設定ファイルの設定」を参照してください。
-
HADB用の設定を記述したサーバの監視コマンドの絶対パスを指定します。
サーバの監視コマンドはひな形を基に作成してください。作成方法については,「14.3.4(3)(e) サーバの監視コマンドの作成」,およびマニュアル「HAモニタ Linux(R)(x86)編」の「サーバの監視コマンドの作成」を参照してください。
-
0を指定します。
-
yesを指定します。
-
useを指定します。
-
nouseを指定します。
-
useを指定します。
-
useを指定します。
-
HADB用の設定を記述したサーバの起動コマンドの絶対パスを指定します。
サーバの起動コマンドはひな形を基に作成してください。作成方法については,「14.3.4(3)(c) サーバの起動コマンドの作成」,およびマニュアル「HAモニタ Linux(R)(x86)編」の「サーバの起動コマンドの作成」を参照してください。
-
マスタノードの切り替えが発生した際,新たにマスタノードにするノードの優先順位を指定します。指定値が小さいほど,優先順位が高くなります。優先順位が高いノードほど指定値を小さくしてください。
各スレーブノードで異なる値を指定してください。
スレーブノードのHAモニタ(initialオペランドにstandbyを指定した場合)で,このオペランドを指定します。
上記のオペランドの詳細については,マニュアル「HAモニタ Linux(R)(x86)編」の「サーバ対応の環境設定(servers)」を参照してください。
(3) コマンド用環境変数定義およびコマンドの作成
HAモニタとの連携のために,コマンド用環境変数定義と次のコマンドを作成してください。
-
ユーザコマンド
-
サーバの起動コマンド
-
サーバの停止コマンド
-
サーバの監視コマンド
$ADBDIR/sample/scripts下に,コマンド用環境変数定義,および上記のコマンドのひな形があります。ひな形を基にコマンドを作成してください。
(a) コマンド用環境変数定義の作成
$ADBDIR/sample/scripts/multinode.envがひな形です。このひな形をコピーして,次の個所を修正してください。
-
環境変数ADBMGR
HADB管理者(OSユーザ)のユーザ名を指定してください。
-
環境変数ADBALIAS
HAモニタのserversファイルのaliasオペランドの指定値を指定してください。
(b) ユーザコマンドの作成
$ADBDIR/sample/scripts/multinode_user.shがひな形です。このひな形をコピーして,次の個所を修正してください。
-
source文
source文の引数に,コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。
(c) サーバの起動コマンドの作成
$ADBDIR/sample/scripts/multinode_act.shがひな形です。このひな形をコピーして,次の個所を修正してください。
-
source文
source文の引数に,コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。
(4) 各ファイルの指定例
次のファイルの指定例を示します。
-
sysdefファイル
-
serversファイル
-
コマンド用環境変数定義ファイル(この例では/home/adbmanager/scripts/multinode.env)
-
ユーザコマンドファイル(この例では/home/adbmanager/scripts/multinode_user.sh)
-
サーバの起動コマンドファイル(この例では/home/adbmanager/scripts/multinode_act.sh)
-
サーバの停止コマンドファイル(この例では/home/adbmanager/scripts/multinode_term.sh)
-
サーバの監視コマンドファイル(この例では/home/adbmanager/scripts/multinode_patrol.sh)
ここで説明する指定例は,「図14-1 マルチノード機能を使用した場合のシステム構成例」のシステム構成を前提としています。
(a) sysdefファイルの指定例
- ■マスタノードhadb01のsysdefファイルの指定例
environment name hadb01, address 1, ...1 patrol 30, ...2 lan path11, ...3 lanport HAmon1; ...4 function pathpatrol 240, connect_retry 5:200, monbegin_restart nouse, multistandby use, usrcommand /home/adbmanager/scripts/multinode_user.sh, ...5 termcmd_at_abort nouse;[説明]
-
このノードのリセット優先度を指定します。このノードは,マスタノードのため,リセット優先度をいちばん高くする必要があるので1を指定します。
-
patrolオペランドには,30以下の値を指定してください。
-
HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス176.16.0.11に対応するホスト名path11を指定します。
-
HAモニタの監視パスとして使用するLANのサービス名を指定します。サービスはポート番号7777を使用します。
-
マルチノード機能で使用するユーザコマンドの絶対パスを指定します。
-
- ■スレーブノードhadb02のsysdefファイルの指定例
environment name hadb02, address 2, ...1 patrol 30, ...2 lan path21, ...3 lanport HAmon1; ...4 function pathpatrol 240, connect_retry 5:200, monbegin_restart nouse, multistandby use, usrcommand /home/adbmanager/scripts/multinode_user.sh, ...5 termcmd_at_abort nouse;[説明]
-
このノードのリセット優先度を指定します。このノードは,マスタノードの次にリセット優先度を高くしたいため,2を指定します。
-
patrolオペランドには,30以下の値を指定してください。
-
HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス176.16.0.12に対応するホスト名path21を指定します。
-
HAモニタの監視パスとして使用するLANのサービス名を指定します。サービスはポート番号7777を使用します。
-
マルチノード機能で使用するユーザコマンドの絶対パスを指定します。
-
- ■スレーブノードhadb03のsysdefファイルの指定例
environment name hadb03, address 3, ...1 patrol 30, ...2 lan path31, ...3 lanport HAmon1; ...4 function pathpatrol 240, connect_retry 5:200, monbegin_restart nouse, multistandby use, usrcommand /home/adbmanager/scripts/multinode_user.sh, ...5 term_at_abort nouse;[説明]
-
このノードのリセット優先度を指定します。このノードは,スレーブノードhadb02の次にリセット優先度を高くしたいため,3を指定します。
-
patrolオペランドには,30以下の値を指定してください。
-
HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス176.16.0.13に対応するホスト名path31を指定します。
-
HAモニタの監視パスとして使用するLANのサービス名を指定します。サービスはポート番号7777を使用します。
-
マルチノード機能で使用するユーザコマンドの絶対パスを指定します。
-
(b) serversファイルの指定例
ここで説明している例は,ファイルシステムにext4を使用していることを前提としています。ext4以外のファイルシステムを使用する場合は,OSのmountコマンドのオプションがここで説明している例とは異なります。
- ■マスタノードhadb01のserversファイルの指定例
server name /home/adbmanager/server, ...1 alias HADB, acttype monitor, disk /dev/vg_hadb, ...2 lan_updown use, fs_name /dev/vg_hadb/sys_hadb, ...3 fs_mount_dir /home/adbmanager/db/ADBSYS, ...4 fs_mount_opt "-t ext4 -o defaults,noatime,_netdev", ...5 actcommand "/home/adbmanager/scripts/multinode_act.sh", ...6 termcommand "/home/adbmanager/scripts/multinode_term.sh", ...7 patrolcommand "/home/adbmanager/scripts/multinode_patrol.sh", ...8 servexec_retry 0, waitserv_exec yes, ip_neck use, uoc_neck nouse, vg_neck use, fs_neck use, initial online; ...9[説明]
-
サーバディレクトリの絶対パスを指定します。
-
システムディレクトリのファイルシステムがあるVGの絶対パスを指定します。
-
システムディレクトリのファイルシステムを作成したLVの絶対パスを指定します。
-
システムディレクトリのファイルシステムをマウントするマウントポイントの絶対パスを指定します。
-
システムディレクトリのファイルシステムをマウントするためのmountコマンドのオプションを指定します。
-
マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。
-
マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。
-
マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。
-
マスタノードとするため,onlineを指定します。
-
- ■スレーブノードhadb02のserversファイルの指定例
server name /home/adbmanager/server, ...1 alias HADB, acttype monitor, disk /dev/vg_hadb, ...2 lan_updown use, fs_name /dev/vg_hadb/sys_hadb, ...3 fs_mount_dir /home/adbmanager/db/ADBSYS, ...4 fs_mount_opt "-t ext4 -o defaults,noatime,_netdev", ...5 actcommand "/home/adbmanager/scripts/multinode_act.sh", ...6 termcommand "/home/adbmanager/scripts/multinode_term.sh", ...7 patrolcommand "/home/adbmanager/scripts/multinode_patrol.sh", ...8 servexec_retry 0, waitserv_exec yes, ip_neck use, uoc_neck nouse, vg_neck use, fs_neck use, initial standby, ...9 standbypri 1; ...10[説明]
-
サーバディレクトリの絶対パスを指定します。
-
システムディレクトリのファイルシステムがあるVGの絶対パスを指定します。
-
システムディレクトリのファイルシステムを作成したLVの絶対パスを指定します。
-
システムディレクトリのファイルシステムをマウントするマウントポイントの絶対パスを指定します。
-
システムディレクトリのファイルシステムをマウントするためのmountコマンドのオプションを指定します。
-
マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。
-
マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。
-
マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。
-
スレーブノードとするため,standbyを指定します。
-
マスタノードの切り替えが発生した際,新たにマスタノードにするノードの優先順位を指定します。このノードの優先順位をいちばん高くしたいため,1を指定します。
-
- ■スレーブノードhadb03のserversファイルの指定例
server name /home/adbmanager/server, ...1 alias HADB, acttype monitor, disk /dev/vg_hadb, ...2 lan_updown use, fs_name /dev/vg_hadb/sys_hadb, ...3 fs_mount_dir /home/adbmanager/db/ADBSYS, ...4 fs_mount_opt "-t ext4 -o defaults,noatime,_netdev", ...5 actcommand "/home/adbmanager/scripts/multinode_act.sh", ...6 termcommand "/home/adbmanager/scripts/multinode_term.sh", ...7 patrolcommand "/home/adbmanager/scripts/multinode_patrol.sh", ...8 servexec_retry 0, waitserv_exec yes, ip_neck use, uoc_neck nouse, vg_neck use, fs_neck use, initial standby, ...9 standbypri 2; ...10[説明]
-
サーバディレクトリの絶対パスを指定します。
-
システムディレクトリのファイルシステムがあるVGの絶対パスを指定します。
-
システムディレクトリのファイルシステムを作成したLVの絶対パスを指定します。
-
システムディレクトリのファイルシステムをマウントするマウントポイントの絶対パスを指定します。
-
システムディレクトリのファイルシステムをマウントするためのmountコマンドのオプションを指定します。
-
マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。
-
マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。
-
マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。
-
スレーブノードとするため,standbyを指定します。
-
マスタノードの切り替えが発生した際,新たにマスタノードにするノードの優先順位を指定します。このノードの優先順位は,ノードhadb02の次にしたいため,2を指定します。
-
(c) コマンド用環境変数定義ファイルの指定例
この例では,コマンド用環境変数定義を/home/adbmanager/scripts/multinode.envに格納しています。指定内容はすべてのノードで同じにしてください。
- ■コマンド用環境変数定義ファイルの指定例
# The environment variables for HADB export ADBMGR=adbmanager ...1 export ADBALIAS=HADB ...2 export ADBDIR=/home/adbmanager/server ...3
[説明]
-
HADB管理者(OSユーザ)のユーザ名adbmanagerを指定します。
-
HAモニタのserversファイルのaliasオペランドの指定値であるHADBを指定します。
-
サーバディレクトリの絶対パスを指定します。
-
(d) ユーザコマンドファイルの指定例
この例では,ユーザコマンドを/home/adbmanager/scripts/multinode_user.shに格納しています。指定内容はすべてのノードで同じにしてください。
- ■ユーザコマンドファイルの指定例
# Sample of the usrcommand for HADB # Setting environment variables for HADB source /home/adbmanager/scripts/multinode.env ...1 ################################################################## # Main ################################################################## KIND_ONLINE="online" KIND_STANDBY="standby" SERV_START="-s" SERV_END="-e" SERV_PLANEND="-p" SERV_ABORT="-a" SERV_ABORT_NS="-o" SERV_FAULT="-f" SERV_HOSTDOWN="-h" SERV_PLANSWAP="-w" STATUS_START="start" STATUS_END="end" STATUS_SBYEND="sbyend" patrol_sby_exe() { $ADBDIR/bin/patrol_sby_exe ...2 } patrol_sby_term() { $ADBDIR/bin/patrol_sby_term ...3 } stop_sby() { $ADBDIR/bin/stop_sby ...4 } # Processing of the server if [ "$2" = "$ADBALIAS" ] then if [ "$4" = "$KIND_ONLINE" ] then case "$5" in "$SERV_START" ) ;; "$SERV_END" ) ;; "$SERV_PLANEND" ) ;; "$SERV_ABORT" ) ;; "$SERV_ABORT_NS" ) ;; "$SERV_PLANSWAP" ) ;; esac else case "$5" in "$SERV_START" ) [ "$6" = "$STATUS_START" ] && patrol_sby_exe & ;; "$SERV_END" ) [ "$6" = "$STATUS_START" -o "$6" = "$STATUS_SBYEND" ] && stop_sby ;; "$SERV_PLANEND" ) [ "$6" = "$STATUS_START" ] && patrol_sby_term ;; "$SERV_ABORT" ) [ "$6" = "$STATUS_START" ] && patrol_sby_term [ "$6" = "$STATUS_SBYEND" ] && stop_sby ;; "$SERV_FAULT" ) [ "$6" = "$STATUS_START" ] && stop_sby ;; "$SERV_HOSTDOWN" ) [ "$6" = "$STATUS_START" ] && patrol_sby_term ;; "$SERV_PLANSWAP" ) [ "$6" = "$STATUS_START" ] && patrol_sby_term ;; esac fi fi exit 0[説明]
-
source文には,コマンド用環境変数定義ファイルの絶対パス/home/adbmanager/scripts/multinode.envを指定します。
-
スレーブノードの監視を開始するためのコマンドを指定します。
-
スレーブノードの監視を終了するためのコマンドを指定します。
-
スレーブノードを停止するためのコマンドを指定します。
-
(e) サーバの起動コマンドファイルの指定例
この例では,サーバの起動コマンドを/home/adbmanager/scripts/multinode_act.shに格納しています。指定内容はすべてのノードで同じにしてください。
- ■サーバの起動コマンドファイルの指定例
# Sample of the actcommand for HADB SU=/bin/su # Setting environment variables for HADB source /home/adbmanager/scripts/multinode.env ...1 # Execute adbchgnodetype command $SU - $ADBMGR -c "$ADBDIR/bin/adbchgnodetype --master -n $ADBALIAS" exit $?
[説明]
-
source文には,コマンド用環境変数定義ファイルの絶対パス/home/adbmanager/scripts/multinode.envを指定します。
-
(f) サーバの停止コマンドファイルの指定例
この例では,サーバの停止コマンドを/home/adbmanager/scripts/multinode_term.shに格納しています。指定内容はすべてのノードで同じにしてください。
- ■サーバの停止コマンドファイルの指定例
# Sample of the termcommand for HADB STS_ACTIVE="ACTIVE" STS_STOP="STOP" STS_STARTING="STARTING" STS_STOPPING="STOPPING" STS_ABORT="ABORT" STS_QUIESCE="QUIESCE" STS_OFFLINE="OFFLINE" STS_CHGMODE="CHGMODE" STS_STOPWAIT="STOPWAIT" STS_COREDUMP="COREDUMP" STS_FORCE="FORCE" STS_MAINTNCE="MAINTNCE" AWK=/bin/awk ECHO=/bin/echo GREP=/bin/grep SU=/bin/su # Setting environment variables for HADB source /home/adbmanager/scripts/multinode.env ...1 # Execute adbstop command while : do GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'` case "$1" in "-e" ) # Normal stop operations of master node. # (when the monend command is executed.) if [ "$GET_STS" = "$STS_ACTIVE" -o "$GET_STS" = "$STS_STARTING" -o \ "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE" -o \ "$GET_STS" = "$STS_OFFLINE" -o "$GET_STS" = "$STS_CHGMODE" -o \ "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ] then $SU - $ADBMGR -c "$ADBDIR/bin/adbstop --cancel" if [ "$?" = "0" -o "$?" = "4" ] then break fi else break fi ;; "-w" ) # Plan stop operations of master node. # (when the monswap command is executed.) if [ "$GET_STS" = "$STS_ACTIVE" -o "$GET_STS" = "$STS_STARTING" -o \ "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE" -o \ "$GET_STS" = "$STS_OFFLINE" -o "$GET_STS" = "$STS_CHGMODE" -o \ "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ] then $SU - $ADBMGR -c "$ADBDIR/bin/adbstop --cancel --node" if [ "$?" = "0" -o "$?" = "4" ] then break fi else break fi ;; "-c" ) break ;; esac done # stop HADB if [ "$GET_STS" = "$STS_STARTING" ] then ADB_ID=`$SU - $ADBMGR -c "ps x" | $GREP adbsrvd | $GREP -v $GREP | awk '{print $1}'` $SU - $ADBMGR -c "kill $ADB_ID" exit 0 fi # Wait for end of HADB while [ "$GET_STS" = "$STS_ACTIVE" -o "$GET_STS" = "$STS_STARTING" -o \ "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE" -o \ "$GET_STS" = "$STS_OFFLINE" -o "$GET_STS" = "$STS_CHGMODE" -o \ "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_COREDUMP" -o \ "$GET_STS" = "$STS_MAINTNCE" ] do GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'` sleep 1 done exit 0[説明]
-
source文には,コマンド用環境変数定義ファイルの絶対パス/home/adbmanager/scripts/multinode.envを指定します。
-
(g) サーバの監視コマンドファイルの指定例
この例では,サーバの監視コマンドを/home/adbmanager/scripts/multinode_patrol.shに格納しています。指定内容はすべてのノードで同じにしてください。
- ■サーバの監視コマンドファイルの指定例
# Sample of the patrolcommand for HADB AWK=/bin/awk ECHO=/bin/echo GREP=/bin/grep KILL=/bin/kill PS=/bin/ps SU=/bin/su XARGS=/usr/bin/xargs # Setting environment variables for HADB source /home/adbmanager/scripts/multinode.env ...1 # Execute adbmonitor command for master node $SU - $ADBMGR -c "$ADBDIR/bin/adbmonitor -n" & PID=$! # Trap SIGTERM and terminate adbmonitor trap "$KILL $PID" 15 wait $PID exit 0
[説明]
-
source文には,コマンド用環境変数定義ファイルの絶対パス/home/adbmanager/scripts/multinode.envを指定します。
-
(5) HAモニタの起動設定
OSの起動時に,自動的にHAモニタが起動するように設定してください。設定方法については,マニュアル「HAモニタ Linux(R)(x86)編」の「システムの起動からサーバの起動までを自動化する」を参照してください。