ノンストップデータベース HiRDB Version 9 システム運用ガイド(UNIX(R)用)
クラスタソフトウェアにMC/ServiceGuardを使用している場合にこの項をお読みください。
この項の説明とMC/ServiceGuardのマニュアルを参照して環境設定を行ってください。MC/ServiceGuardの環境設定方法の詳細については,MC/ServiceGuardのマニュアルを参照してください。
MC/ServiceGuardが系切り替えを行う単位をパッケージといいます。パッケージとはアプリケーションが動くために必要な次に示すリソースの集合のことです。
通常,HiRDBと連携するリソースを一つのパッケージとして扱い,MC/ServiceGuardによって系を切り替えます。パッケージの概要,及びMC/ServiceGuardによるパッケージ処理の流れを次の図に示します。
図26-35 パッケージの概要
図26-36 MC/ServiceGuardによるパッケージ処理の流れ
HiRDBを開始($PDDIR/bin/pdstartを実行)するシェルスクリプトを作成し,パッケージの開始時(サービス開始前処理時)にそのシェルスクリプトを実行するようにしてください。そのためには,MC/ServiceGuardのパッケージコントロールスクリプト中にHiRDBを開始するシェルスクリプトを実行する設定をします。HiRDBの開始処理の流れを次の図に示します。
図26-37 HiRDBの開始処理の流れ(MC/ServiceGuard)
HiRDBを開始するシェルスクリプトの例を次に示します。
●HiRDB/シングルサーバの場合
#!/bin/sh
PDDIR=/HiRDB_S
PDCONFPATH=${PDDIR}/conf
SHLIB_PATH=${PDDIR}/lib
PATH=${PATH}:${PDDIR}/bin
export PDDIR PDCONFPATH SHLIB_PATH PATH
${PDDIR}/bin/pdstart>/dev/null 2>&1
|
●HiRDB/パラレルサーバの場合
#!/bin/sh
PDDIR=/HiRDB_P
PDCONFPATH=${PDDIR}/conf
SHLIB_PATH=${PDDIR}/lib
PATH=${PATH}:${PDDIR}/bin
export PDDIR PDCONFPATH SHLIB_PATH PATH
${PDDIR}/bin/pdstart -q>/dev/null 2>&1
|
pdstartコマンドが失敗する原因には次に示すものがあります。
1〜4はパッケージが停止していない状態でパッケージを開始した場合に起こります。このタイミングを正確に判断する手段はありません。この場合,pdstartコマンドのエラーはほかに影響しないため,エラーを無視しても問題ありません。
5はHiRDBの環境設定が正しくないため,HiRDBを開始できない状態です。この場合はHiRDBの環境設定をし直してください。
システム用RDエリアを作成していない場合,HiRDBの開始時(pdstartコマンド実行時)にシステム用RDエリアを作成する(pdinitコマンドを実行する)指示が出ます。MC/ServiceGuardから起動したpdstartコマンドはバックグラウンド実行のため,この指示に応答できません。したがって,MC/ServiceGuardの運用を開始する前にpdstartコマンドを実行して,システム用RDエリアが作成されているかどうかを確認してください。
HiRDBを終了($PDDIR/bin/pdstopを実行)するシェルスクリプトを作成し,パッケージの停止時にそのシェルスクリプトを実行するようにしてください。そのためには,MC/ServiceGuardのパッケージコントロールスクリプト中にHiRDBを終了するシェルスクリプトを実行する設定をします。HiRDBの終了処理の流れを次の図に示します。
図26-38 HiRDBの終了処理の流れ(MC/ServiceGuard)
HiRDBを終了するシェルスクリプトの例を次に示します。
●HiRDB/シングルサーバの場合
#!/bin/sh
PDDIR=/HiRDB_S
PDCONFPATH=${PDDIR}/conf
SHLIB_PATH=${PDDIR}/lib
PATH=${PATH}:${PDDIR}/bin
export PDDIR PDCONFPATH SHLIB_PATH PATH
${PDDIR}/bin/pdstop -f -q>/dev/null 2>&1
|
●HiRDB/パラレルサーバの場合
#!/bin/sh
PDDIR=/HiRDB_P
PDCONFPATH=${PDDIR}/conf
SHLIB_PATH=${PDDIR}/lib
PATH=${PATH}:${PDDIR}/bin
export PDDIR PDCONFPATH SHLIB_PATH PATH
${PDDIR}/bin/pdstop -z -q>/dev/null 2>&1
|
MC/ServiceGuardはサービス(アプリケーション)の監視をします。MC/ServiceGuardはサービスを子プロセスとして実行し,サービスの終了を検知した場合にそれをパッケージの障害と判断します。HiRDBの開始及び終了処理以外のHiRDBとMC/ServiceGuardとのインタフェースはサービスの終了(exit)だけです。HiRDBの全プロセスはpdprcdが監視していて,HiRDBの異常終了時にはHiRDBの機能によって再開始を行うため,MC/ServiceGuardにHiRDBのプロセスを監視してもらう必要はありません。プロセスの起動と監視の関連を次の図に示します。
図26-39 プロセスの起動と監視の関連(MC/ServiceGuard)
なお,パッケージとしてのHiRDBが動作中である状態を維持させるために,ダミーのサービス(ダミープロセス)が必要です。このダミープロセスは,次に示す条件をすべて満たす必要があります。
ダミープロセスを生成するシェルスクリプトの例を次に示します。
#!/bin/sh
trap exit SIGTERM
while true
do
sleep 5
done
exit
|
このシェルスクリプトをパッケージコントロールスクリプト中のSERVICE_CMDに指定します。常駐プロセスの起動には,パッケージコントロールスクリプト中のSERVICE_RESTART[]="-R"として無限起動扱いにすることをお勧めします。そうしないと,プロセスの予期しない終了がHiRDBのサーバの異常終了扱いにされてしまいます。
パッケージのIPアドレス(再配置可能なIPアドレス)をパッケージコントロールスクリプトに指定します。
IP[0] = パッケージのIPアドレス(再配置可能なIPアドレス) |
MC/ServiceGuardとHiRDBの連動構成例について説明します。システム構成は次の図に示すとおりとします。なお,HiRDBはHiRDB/シングルサーバとします。
図26-40 MC/ServiceGuardとHiRDBの連動構成例
●システム構成に関する定義
VGCHANGE="vgchange -a e" VG[0]=vg10 LV[0]=/dev/vg10/lvol11; FS[0]=/hirdb IP[0]=192.168.30.51 SUBNET[0]=192.168.30.0 |
●MC/ServiceGuardのサービスの登録(HiRDBの開始,終了,及び監視をするための定義)
SERVICE_NAME[0]=hirdb
#サービス=監視するプロセスを指定します[必須]
#MC/ServiceGuardが起動してプロセスの終了を監視します
SERVICE_CMD[0]=/etc/cmcluster/hirdb_pkg/monitor.sh 1
SERVICE_RESTART[0]="-R"
#サービス起動前処理:ここでHiRDBを開始します
function customer_defined_run_cmds
{
/etc/cmcluster/hirdb_pkg/run.sh 2
test_return 51
}
#サービス停止前処理:ここでHiRDBを終了します
function customer_defined_halt_cmds
{
/etc/cmcluster/hirdb_pkg/halt.sh 3
test_return 52
}
|
●ダミープロセスを生成するシェルスクリプト(monitor.sh)
#!/bin/ksh trap exit SIGTERM while true do sleep 5 done exit |
●HiRDBを開始するシェルスクリプト(run.sh)
#!/bin/sh
PDDIR=/home/test
PDCONFPATH=${PDDIR}/conf
SHLIB_PATH=${PDDIR}/lib
PATH=${PATH}:${PDDIR}/bin
export PDDIR PDCONFPATH SHLIB_PATH PATH
/home/test/bin/pdstart > /dev/null 2>&1
|
●HiRDBを終了するシェルスクリプト(halt.sh)
#!/bin/sh
export PDDIR=/home/test
export PDCONFPATH=${PDDIR}/conf
export SHLIB_PATH=${PDDIR}/lib
export PATH=${PATH}:${PDDIR}/bin
/home/test/bin/pdstop -f -q> /dev/null 2>&1
|
●システム共通定義
set pd_mode_conf = MANUAL1 set pd_ha_ipaddr_inherit = Y set pd_ha = use pdunit -x pkghost -u puid -d /home/test pdstart -t SDS -s sds -x pkghost |
●ユニット情報定義
set pd_hostname = vr2001 |
All Rights Reserved. Copyright (C) 2010, 2017, Hitachi, Ltd.