Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 運用/監視/連携編


19.5.5 シェルスクリプトファイルの作成

運用管理エージェントのプロセスを監視し,運用管理エージェントと論理サーバを起動および停止するために,次のシェルスクリプトファイルを作成します。

実行系(N台)の場合

実行系で設定が必要なシェルスクリプトファイルを次に示します。なお,N台で共通のコマンドを使用します。

  • 運用管理エージェントのプロセスを監視するシェルスクリプトファイル

  • 運用管理エージェントを起動するシェルスクリプトファイル

  • 運用管理エージェントと論理サーバを停止するシェルスクリプトファイル

待機系(リカバリ専用1台)の場合

待機系で設定が必要なシェルスクリプトファイルを次に示します。なお,N台の実行系に対して共通のコマンドを使用し,差異はコマンドの引数で渡すようにします。

  • リカバリ処理を実行するシェルスクリプトファイル

各スクリプトについて説明します。

〈この項の構成〉

(1) 運用管理エージェントのプロセスを監視するシェルスクリプトファイル

運用管理エージェントのプロセスを監視するシェルスクリプトファイルの例(monitor.sh)を次に示します。

#!/bin/sh
 
LOGDIR=/home/manager/hamon/log
AA=/opt/Cosminexus/manager/bin/adminagent
 
logg()
{
    echo `date '+[%Y/%m/%d %H:%M:%S]'`"[$$]: $1" \
        >> ${LOGDIR}/adminagent.log 2>&1
}
 
logg "### $0: started. ###"
while true
do
    CHECK=`ps -ef | grep $AA | grep -v grep`
 
    if [ "$CHECK" = "" ]
    then
        logg "### $0: stop. ###"
        exit 0
    fi
    sleep 10
done

この例では,運用管理エージェントのプロセスが存在しているかどうかを10秒おきに監視しています。

(2) 運用管理エージェントを起動するシェルスクリプトファイル

運用管理エージェントを起動するためのシェルスクリプトファイルの例(start.sh)を次に示します。

#!/bin/sh
 
LOGDIR=/home/manager/hamon/log
MNGDIR=/opt/Cosminexus/manager
 
logg()
{
    echo `date '+[%Y/%m/%d %H:%M:%S]'`"[$$]: $1" \
        >> ${LOGDIR}/adminagent.log 2>&1
}
 
# start Administration Agent
logg "### $0: starting Administration Agent. ###"
$MNGDIR/bin/adminagentctl start
if [ $? -eq 0 ] ; then
  logg "### $0: Administration Agent start normally. ###"
else
  logg "### $0: Administration Agent cannot start. ###"
  exit 1
fi
 
exit 0

(3) 運用管理エージェントと論理サーバを停止するシェルスクリプトファイル

運用管理エージェントと論理サーバを停止するためのシェルスクリプトファイルの例(stop.sh)を次に示します。

#!/bin/sh
 
LOGDIR=/home/manager/hamon/log
MNGDIR=/opt/Cosminexus/manager
 
logg()
{
    echo `date '+[%Y/%m/%d %H:%M:%S]'`"[$$]: $1" \
        >> ${LOGDIR}/adminagent.log 2>&1
}
 
# stop logical server
logg "### $0: stop logical servers. ###"
$MNGDIR/bin/mngsvrutil -m mnghost:28080 -u admin -p admin \
                            -t 172.16.12.31 -k host -s stop server
 
# stop Administration Agent
logg "### $0: stopping Administration Agent. ###"
$MNGDIR/bin/adminagentctl stop
 
exit 0

シェルスクリプトファイルでの設定内容のポイントを説明します。

(4) リカバリ処理を実行するシェルスクリプトファイル

各J2EEサーバに対してリカバリ処理を実行するためのシェルスクリプトファイルの例(recover.sh)を次に示します。

#!/bin/sh
 
LOGDIR=/home/manager/hamon/log
PATH=/opt/Cosminexus/CC/server/bin:/bin:/usr/bin:/home/manager/hamon/bin
LD_LIBRARY_PATH=/opt/DABroker/lib:/opt/Cosminexus/jdk/lib:/opt/Cosminexus/TPB/lib:/opt/Cosminexus/PRF/lib:/opt/Cosminexus/CTM/lib:/bin:/opt/HiRDB/client/lib:/opt/oracle/app/oracle/product/10.1.0/client_1/lib:/opt/oracle/app/oracle/product/10.1.0/client_1/lib/libclntsh.so.10.1:/opt/oracle/app/oracle/product/10.1.0/client_1/lib/libclntsh.so
export LD_LIBRARY_PATH
 
LOCKFILE=/var/lock/kosmi_recover.lock
SLEEP_TIME=60
RETRIES=30
STATUS_PATH=$3/otsstatus
 
cjlockfile()
{
    counter=$2
    TMP_LOCK_FILE=`dirname $3`/$$.lock
    echo $$ > $TMP_LOCK_FILE
 
    if [ -f $3 ]
    then
        kill -0 `cat $3` 2>/dev/null || rm -f $3
    fi
 
    until ln $TMP_LOCK_FILE $3 2>/dev/null
    do
        counter=`expr $counter - 1`
        if [ $counter -le 0 ]
        then
            rm -f $TMP_LOCK_FILE
            return 1
        fi
        sleep $1
    done
 
    rm -f $TMP_LOCK_FILE
    return 0
}
 
logg()
{
    echo `date '+[%Y/%m/%d %H:%M:%S]'`"[$$]: $1" \
        >> ${LOGDIR}/adminagent.log 2>&1
}
 
if cjlockfile ${SLEEP_TIME} ${RETRIES} ${LOCKFILE}
then
    logg "### $0: started for $1 ###"
    cjstartrecover MyServer -p vbroker.se.iiop_tp.host=$2 \
                  -p ejbserver.distributedtx.ots.status.directory1=$STATUS_PATH \
                  -t 600
    logg "### $0: ended. $? ###"
fi
 
rm -f $LOCKFILE
 
exit 0

シェルスクリプトファイルでの設定内容のポイントを説明します。

なお,cjstartrecoverコマンドについては,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjstartrecover(J2EEサーバのトランザクション回復)」を参照してください。ejbserver.distributedtx.ots.status.directory1キーおよびvbroker.se.iiop_tp.hostキーについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.2.3 usrconf.properties(J2EEサーバ用ユーザプロパティファイル)」を参照してください。