15.3.4 HAモニタの環境設定
実行系および待機系でHAモニタの環境設定をしてください。HAモニタの環境設定方法については,マニュアル「HAモニタ Linux(R)(x86)編」の「システムの構築」を参照してください。
ここでは,HAモニタの環境設定をする際に留意することについて説明します。
- 〈この項の構成〉
(1) sysdefファイルの指定
HAモニタのsysdefファイルに指定するオペランドのうち,次のオペランドについては,指定値が決まっています。
-
系のリセット優先度を指定します。指定値が小さいほど,その系のリセット優先度が高くなります。各系で異なる値を指定してください。実行系の指定値が,待機系の指定値より小さくなるようにしてください。
-
nouseを指定します。
-
nouseを指定します。
上記のオペランドの詳細については,マニュアル「HAモニタ Linux(R)(x86)編」の「HAモニタの環境設定(sysdef)」を参照してください。
(2) serversファイルの指定
HAモニタのserversファイルに指定するオペランドのうち,次のオペランドについては,指定値が決まっています。
-
サーバディレクトリの絶対パスを指定します。
-
コールドスタンバイ構成は,HAモニタのモニタモードで動作するため,monitorを指定します。
-
HADB用の設定を記述したサーバの停止コマンドの絶対パスを指定します。
サーバの停止コマンドはひな形を基に作成してください。作成方法については,「15.3.4(3)(c) サーバの停止コマンドの作成」,およびマニュアル「HAモニタ Linux(R)(x86)編」の「サーバの停止コマンドの作成」を参照してください。
-
実行系の場合はonlineを,待機系の場合はstandbyを指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するファイルシステムを含むVGの絶対パスを指定します。「図15-1 コールドスタンバイ構成でのシステム構成例」の場合は,/dev/vg_hadb01および/dev/vg_hadb02を指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するファイルシステムに対応する論理ボリュームの絶対パスを指定します。「図15-1 コールドスタンバイ構成でのシステム構成例」の場合は,/dev/vg_hadb01/hadb_dbおよび/dev/vg_hadb02/hadb_workareaを指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するファイルシステムをマウントするディレクトリのパスを指定します。実行系と待機系で同じパスを指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するファイルシステムをマウントするためのマウントオプションを指定します。
-
LANの状態設定ファイルを使用するため,useを指定します。
LANの状態設定ファイルには,エイリアスIPアドレスの設定をしてください。詳細については,マニュアル「HAモニタ Linux(R)(x86)編」の「LANの状態設定ファイルの設定」を参照してください。
-
HADB用の設定を記述したサーバの監視コマンドの絶対パスを指定します。
サーバの監視コマンドはひな形を基に作成してください。作成方法については,「15.3.4(3)(d) サーバの監視コマンドの作成」,およびマニュアル「HAモニタ Linux(R)(x86)編」の「サーバの監視コマンドの作成」を参照してください。
-
2を指定します。
-
yesを指定します。
-
useを指定します。
-
nouseを指定します。
-
DBディレクトリを含むVGには,useを指定します。
そのほかのVGには,nouseを指定します。
-
DBディレクトリのファイルシステムには,useを指定します。
そのほかのファイルシステムには,nouseを指定します。
-
HADB用の設定を記述したサーバの起動コマンドの絶対パスを指定します。
サーバの起動コマンドはひな形を基に作成してください。作成方法については,「15.3.4(3)(b) サーバの起動コマンドの作成」,およびマニュアル「HAモニタ Linux(R)(x86)編」の「サーバの起動コマンドの作成」を参照してください。
上記のオペランドの詳細については,マニュアル「HAモニタ Linux(R)(x86)編」の「サーバ対応の環境設定(servers)」を参照してください。
(3) コマンド用環境変数定義およびコマンドの作成
HAモニタとの連携のために,コマンド用環境変数定義と次のコマンドを作成してください。
-
サーバの起動コマンド
-
サーバの停止コマンド
-
サーバの監視コマンド
$ADBDIR/sample/scripts下に,コマンド用環境変数定義,および上記のコマンドのひな形があります。ひな形を基にコマンドを作成してください。
(a) コマンド用環境変数定義の作成
$ADBDIR/sample/scripts/coldstandby.envがひな形です。このひな形をコピーして,次の個所を修正してください。
-
環境変数ADBMGR
HADB管理者(OSユーザ)のユーザ名を指定してください。
(b) サーバの起動コマンドの作成
$ADBDIR/sample/scripts/coldstandby_act.shがひな形です。このひな形をコピーして,次の個所を修正してください。
-
source文
source文の引数に,コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。
(4) 各ファイルの指定例
次のファイルの指定例を示します。
-
sysdefファイル
-
serversファイル
-
コマンド用環境変数定義ファイル(この例では/home/adbmanager/scripts/coldstandby.env)
-
サーバの起動コマンドファイル(この例では/home/adbmanager/scripts/coldstandby_act.sh)
-
サーバの停止コマンドファイル(この例では/home/adbmanager/scripts/coldstandby_term.sh)
-
サーバの監視コマンドファイル(この例では/home/adbmanager/scripts/coldstandby_patrol.sh)
ここで説明する指定例は,「図15-1 コールドスタンバイ構成でのシステム構成例」のシステム構成を前提としています。
(a) sysdefファイルの指定例
- ■サーバマシンhadb01(実行系)のsysdefファイルの指定例
environment name hadb01, address 1, ...1 patrol 60, lan path11, ...2 lanport HAmon1; ...3 function pathpatrol 240, connect_retry 5:200, monbegin_restart nouse, termcmd_at_abort nouse;[説明]
-
この系のリセット優先度を指定します。この系は,実行系のため,リセット優先度をいちばん高くする必要があるので1を指定します。
-
HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス176.16.0.11に対応するホスト名path11を指定します。
-
HAモニタの監視パスとして使用するLANのサービス名を指定します。サービスはポート番号7777を使用します。
-
- ■サーバマシンhadb02(待機系)のsysdefファイルの指定例
environment name hadb02, address 2, ...1 patrol 60, lan path21, ...2 lanport HAmon1; ...3 function pathpatrol 240, connect_retry 5:200, monbegin_restart nouse, termcmd_at_abort nouse;[説明]
-
この系のリセット優先度を指定します。この系は,待機系のため,2を指定します。
-
HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス176.16.0.12に対応するホスト名path21を指定します。
-
HAモニタの監視パスとして使用するLANのサービス名を指定します。サービスはポート番号7777を使用します。
-
(b) serversファイルの指定例
ここで説明している例は,ファイルシステムにext4を使用していることを前提としています。ext4以外のファイルシステムを使用する場合は,OSのmountコマンドのオプションがここで説明している例とは異なります。
- ■サーバマシンhadb01(実行系)のserversファイルの指定例
server name /home/adbmanager/server, ...1 alias HADB, acttype monitor, disk /dev/vg_hadb01:/dev/vg_hadb02, ...2 lan_updown use, fs_name /dev/vg_hadb01/hadb_db:/dev/vg_hadb02/hadb_workarea, ...3 fs_mount_dir /home/adbmanager/db:/mnt/workarea, ...4 fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":"-t ext4 -o defaults,noatime,_netdev", ...5 actcommand "/home/adbmanager/scripts/coldstandby_act.sh", ...6 termcommand "/home/adbmanager/scripts/coldstandby_term.sh", ...7 patrolcommand "/home/adbmanager/scripts/coldstandby_patrol.sh", ...8 servexec_retry 2, waitserv_exec yes, ip_neck use, uoc_neck nouse, vg_neck use:nouse, ...9 fs_neck use:nouse, ...10 initial online; ...11[説明]
-
サーバディレクトリの絶対パスを指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するディレクトリのファイルシステムがあるVGの絶対パスを指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するディレクトリのファイルシステムを構築したLVの絶対パスを指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するディレクトリのファイルシステムをマウントするマウントポイントの絶対パスを指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するディレクトリのファイルシステムをマウントするためのmountコマンドのオプションを指定します。
-
コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。
-
コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。
-
コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。
-
DBディレクトリがあるVGにはuse,作業用一時ファイルがあるVGにはnouseを指定します。
-
DBディレクトリがあるファイルシステムにはuse,作業用一時ファイルがあるファイルシステムにはnouseを指定します。
-
実行系とするため,onlineを指定します。
-
- ■サーバマシンhadb02(待機系)のserversファイルの指定例
server name /home/adbmanager/server, ...1 alias HADB, acttype monitor, disk /dev/vg_hadb01:/dev/vg_hadb02, ...2 lan_updown use, fs_name /dev/vg_hadb01/hadb_db:/dev/vg_hadb02/hadb_workarea, ...3 fs_mount_dir /home/adbmanager/db:/mnt/workarea, ...4 fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":"-t ext4 -o defaults,noatime,_netdev", ...5 actcommand "/home/adbmanager/scripts/coldstandby_act.sh", ...6 termcommand "/home/adbmanager/scripts/coldstandby_term.sh", ...7 patrolcommand "/home/adbmanager/scripts/coldstandby_patrol.sh", ...8 servexec_retry 2, waitserv_exec yes, ip_neck use, uoc_neck nouse, vg_neck use:nouse, ...9 fs_neck use:nouse, ...10 initial standby; ...11[説明]
-
サーバディレクトリの絶対パスを指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するディレクトリのファイルシステムがあるVGの絶対パスを指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するディレクトリのファイルシステムを構築したLVの絶対パスを指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するディレクトリのファイルシステムをマウントするマウントポイントの絶対パスを指定します。
-
DBディレクトリ,および作業用一時ファイルを格納するディレクトリのファイルシステムをマウントするためのmountコマンドのオプションを指定します。
-
コールドスタンバイ構成で使用するサーバの起動コマンドの絶対パスを指定します。
-
コールドスタンバイ構成で使用するサーバの停止コマンドの絶対パスを指定します。
-
コールドスタンバイ構成で使用するサーバの監視コマンドの絶対パスを指定します。
-
DBディレクトリがあるVGにはuse,作業用一時ファイルがあるVGにはnouseを指定します。
-
DBディレクトリがあるファイルシステムにはuse,作業用一時ファイルがあるファイルシステムにはnouseを指定します。
-
待機系とするため,standbyを指定します。
-
(c) コマンド用環境変数定義ファイルの指定例
この例では,コマンド用環境変数定義を/home/adbmanager/scripts/coldstandby.envに格納しています。指定内容は,実行系と待機系で同じにしてください。
- ■コマンド用環境変数定義ファイルの指定例
# The environment variables for HADB export ADBMGR=adbmanager ...1 export ADBDIR=/home/adbmanager/server ...2 export ADBINFODIR=/home/adbmanager/adbinfo ...3
[説明]
-
HADB管理者(OSユーザ)のユーザ名adbmanagerを指定します。
-
サーバディレクトリの絶対パスを指定します。
-
トラブルシュート情報ファイルを格納するディレクトリの絶対パスを指定します。
-
(d) サーバの起動コマンドファイルの指定例
この例では,サーバの起動コマンドを/home/adbmanager/scripts/coldstandby_act.shに格納しています。指定内容は,実行系と待機系で同じにしてください。
- ■サーバの起動コマンドファイルの指定例
# Sample of the actcommand for HADB SU=/bin/su ECHO=/bin/echo # Setting environment variables for HADB source /home/adbmanager/scripts/coldstandby.env ...1 # Execute adbstart command $SU - $ADBMGR -c "$ECHO y|$ADBDIR/bin/adbstart" # always 0 return exit 0
[説明]
-
source文には,コマンド用環境変数定義ファイルの絶対パス/home/adbmanager/scripts/coldstandby.envを指定します。
-
(e) サーバの停止コマンドファイルの指定例
この例では,サーバの停止コマンドを/home/adbmanager/scripts/coldstandby_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 PS=/bin/ps KILL=/bin/kill GREP=/bin/grep SU=/bin/su # Setting environment variables for HADB source /home/adbmanager/scripts/coldstandby.env ...1 # Execute adbstop command 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 active system. # (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 "$ECHO y|$ADBDIR/bin/adbstop --force" if [ $? -ne 0 -a $? -ne 4 ] then ADB_ID=`$SU - $ADBMGR -c "$PS x" | $GREP $ADBDIR/bin/adbsrvd | $GREP -v $GREP | $AWK '{print $1}'` if [ "$ADB_ID" != "" ] then $SU - $ADBMGR -c "$KILL $ADB_ID" fi fi fi ;; "-w" ) # Plan stop operations of active system. # (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 "$ECHO y|$ADBDIR/bin/adbstop --force" if [ $? -ne 0 -a $? -ne 4 ] then ADB_ID=`$SU - $ADBMGR -c "$PS x" | $GREP $ADBDIR/bin/adbsrvd | $GREP -v $GREP | $AWK '{print $1}'` if [ "$ADB_ID" != "" ] then $SU - $ADBMGR -c "$KILL $ADB_ID" fi fi fi ;; "-c" ) # Retry operations of active system. # (Before the act_command is resterted.) $SU - $ADBMGR -c "adbinfoget -l -o $ADBINFODIR" ;; esac # stop HADB if [ "$GET_STS" = "$STS_STARTING" ] then ADB_ID=`$SU - $ADBMGR -c "$PS x" | $GREP $ADBDIR/bin/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/coldstandby.envを指定します。
-
(f) サーバの監視コマンドファイルの指定例
この例では,サーバの監視コマンドを/home/adbmanager/scripts/coldstandby_patrol.shに格納しています。指定内容は,実行系と待機系で同じにしてください。
- ■サーバの監視コマンドファイルの指定例
#!/bin/sh # Sample of the patrolcommand for HADB AWK=/bin/awk GREP=/bin/grep PS=/bin/ps PGREP=/usr/bin/pgrep PKILL=/usr/bin/pkill SU=/bin/su # Setting environment variables for HADB source /home/adbmanager/scripts/coldstandby.env ...1 # Get adbsrvd process id CHKPID=`$SU - $ADBMGR -c "$PS x" | $GREP $ADBDIR/bin/adbsrvd | $GREP -v $GREP | $AWK '{print $1}'` if [ "$CHKPID" = "" ] then exit 0 fi # Execute adbmonitor command for active system $SU - $ADBMGR -c "$ADBDIR/bin/adbmonitor -n" & PID=$! # Trap SIGTERM and terminate adbmonitor trap "$PKILL -P $PID" 15 ## Wait process terminated CPID="" CHKPID=`$PS aux | $AWK -v PID=$PID '{ if ($2 == PID) { print $2 } }'` while [ "$CHKPID" != "" ] do ## Get adbmonitor process id if [ "$CPID" = "" ] then CPID=`$PGREP -P $PID` fi ## Wait if [ "$CPID" != "" ] then CHKCPID=`$PS aux | $AWK -v CPID=$CPID '{ if ($2 == CPID) { print $2 } }'` while [ "$CHKCPID" != "" ] do sleep 1 CHKCPID=`$PS aux | $AWK -v CPID=$CPID '{ if ($2 == CPID) { print $2 } }'` done fi sleep 1 CHKPID=`$PS aux | $AWK -v PID=$PID '{ if ($2 == PID) { print $2 } }'` done exit 0[説明]
-
source文には,コマンド用環境変数定義ファイルの絶対パス/home/adbmanager/scripts/coldstandby.envを指定します。
-
(5) HAモニタの起動設定
OSの起動時に,自動的にHAモニタが起動するように設定してください。設定方法については,マニュアル「HAモニタ Linux(R)(x86)編」の「システムの起動からサーバの起動までを自動化する」を参照してください。