第 4 章 :各クラスタリングソフトウェア操作概要
4.7.3 NetVault Backup をクラスタ・リソースとして登録
PRIMECLUSTERでは、アプリケーションがPRIMECLUSTERに容易に対応することができるようにするために、汎用 CmdLine Wizardを提供しております。汎用CmdLine Wizardを利用するためには以下のものが必要です。
表1. 汎用CmdLine Wizard
スクリプトタイプ 必須 概要
StartScript ○ アプリケーションを起動するシェルスクリプト
StopScript ○ アプリケーションを停止するシェルスクリプト
CheckScript × アプリケーションの状態を監視するシェルスクリプト
上記のシェルスクリプトには以下の留意事項があります。
表2. シェルスクリプト作成時の留意点
スクリプトタイプ 終了コード 概要
Start/StopScript 0 正常終了
0以外 異常終了
CheckScript 0 サービスステータス正常
0以外 サービスステータス異常
CheckScriptで異常を検知した場合には設定内容に応じてサービス再起動やフェイル・オーバ処理が実施されます。
PRIMECLUSTERにNetVaultサービスを登録
PRIMECLUSTERの汎用CmdLine WizardにNetVaultサービスの起動、停止、確認スクリプトを設定します。サンプルスク リプトは本ドキュメントの「付録. PRIMECLSTER汎用CmdLine Wizard用スクリプト」をご参照下さい。また、本スクリプトの 指定は以下のようになります。
表6. PRIMECLUSTER汎用CmdLine Wizard指定
項目 設定内容 概要
起動スクリプト netvault.sh start NetVaultサービスの起動処理 停止スクリプト netvault.sh stop NetVaultサービスの停止処理 チェックスクリプト netvault.sh check NetVaultサービスの状態確認処理
PRIMECLUSTER登録時にはNetVaultをインストールしたファイルシステムも同時にフェイル・オーバさせる必要がありま す。PRIMECLUSTERへの登録方法に関してはPRIMECLUSTERのマニュアルをご確認下さい。
サンプル1. PRIMECLUSTER 汎用CmdLine Wizard用スクリプト ファイル名:netvault.sh
#!/bin/sh
export PATH="/sbin:/usr/sbin:/bin:/usr/bin"
[ ! -f /etc/.nv6_home ] && exit 1
export NV_HOME=`head -n 1 /etc/.nv6_home`
export NV_PROCESS="nvpmgr"
export NV_CMD="$NV_HOME/bin/nvpmgr"
export NV_PID="/var/run/netvault.pid"
nv_process(){
pid_name=`cat $1 | awk '{print $2}' 2> /dev/null`
if [ "$pid_name" = "($NV_PROCESS)" ]; then
pid_parent=`cat $1 | awk '{print $4}' 2> /dev/null`
if [ "$pid_parent" -eq "1" ]; then
cat $1 | awk '{print $1}' > $NV_PID 2> /dev/null pid=`cat $NV_PID 2>&1`
if [ "$pid" = "" ]; then
[ -f "$NV_PID" ] && rm "$NV_PID"
fi return 0 fi
fi return 1 }
nv_recheck(){
for pid in `ls /proc/[1-9]*/stat 2> /dev/null`
do
if [ -f "$pid" ]; then
nv_process "$pid"
[ "$?" -eq "0" ] && return 0 fi
done
[ -f "$NV_PID" ] && rm "$NV_PID"
return 1 }
nv_check(){
EXITCODE=1
if [ ! -f "$NV_PID" ]; then nv_recheck EXITCODE="$?"
else
pid=`cat $NV_PID 2> /dev/null`
pid_name="/proc/$pid/stat"
if [ -f "$pid_name" ]; then
nv_process "$pid_name"
EXITCODE="$?"
else
nv_recheck EXITCODE="$?"
fi fi
return "$EXITCODE"
} nv_stop(){
nv_check
[ "$?" -eq "1" ] && return 0
# Max waiting 60 seconds retry=6
"$NV_CMD" shutdown > /dev/null 2>&1 while [ "$retry" -gt 0 ]
do
sleep 10 nv_check
if [ "$?" -eq "1" ]; then
[ -f "$NV_PID" ] && rm "$NV_PID"
return 0 fi
retry=$(($retry - 1)) done
return 1 }
nv_start(){
nv_check
[ "$?" -eq "0" ] && return 0
"$NV_CMD" > /dev/null 2>&1 [ "$?" -ne "0" ] && return 1
# Max waiting 15 seconds retry=3
while [ "$retry" -gt 0 ] do
sleep 5 nv_check
[ "$?" -eq "0" ] && return 0 retry=$(($retry - 1)) done
return 1 }
case "$1" in start)
nv_start exit "$?"
;;
stop)
nv_stop exit "$?"
;;
check)
nv_check exit "$?"
;;
*)
echo "Usage: $0 {start|stop|check}"
esac exit 1
本スクリプトはサンプルスクリプトとして提供しておりますがバックボーン・ソフトウエア株式会社が保証しているものではご ざいません。ご利用頂く場合には自己責任でご利用頂けますようお願い致します。