• 検索結果がありません。

NetVault Backup をクラスタ・リソースとして登録

第 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

本スクリプトはサンプルスクリプトとして提供しておりますがバックボーン・ソフトウエア株式会社が保証しているものではご ざいません。ご利用頂く場合には自己責任でご利用頂けますようお願い致します。

5 章:検証方法