グローバルゾーン上に各ノングローバルゾーンに対応するクラスタアプリケーションを構築します。本項の作業は各ノングローバルゾーンに対して実施してください。
RMSが起動している場合、RMSを停止してください。
シングルノードクラスタ運用ではない場合 “16.2.2.5 作業用クラスタアプリケーションの作成”で作成した作業用クラスタアプリケーションを削除します。クラスタアプリケーションを削除する際、リソースの削除は実施しないでください。
ノングローバルゾーン、およびノングローバルゾーンに構成したクラスタアプリケーションをグローバルゾーンから制御するためのCmdlineリソースを作成します。
ノングローバルゾーン内でアプリケーション監視を行う場合(ただしシングルノードクラスタ運用を除く)
Cmdlineリソースを作成します。
Cmdlineの作成の「作成方法」で「パス入力」を選択し、Startスクリプト、Stopスクリプト、Checkスクリプトはそれぞれ以下のように設定してください。
Startスクリプト
/opt/SMAW/bin/hvzone -c -z <zone_name> -a <app_name> {-s|-n} -t <timeout> Stopスクリプト
/opt/SMAW/bin/hvzone -u -z <zone_name> -a <app_name> {-s|-n} -t <timeout> Checkスクリプト
/opt/SMAW/bin/hvzone -m -z <zone_name> -a <app_name> {-s|-n} -t <timeout> 上記の違いは-c, -u, -mのオプション部分のみです。<zone_name>、<app_name>には制御対象のゾーン名とノングローバルゾーンで設定したクラスタアプリケーション名をそれぞれ指定します。
<timeout>には、シャットダウン処理のタイムアウト値を秒単位で指定します。Offline処理の際、このスクリプトはRMSの停止、ノングローバルゾーンの停止を行ないますが、ここで指定した時間が経過してもその処理が終了しない場合、zoneadmのhaltコマンド(zoneadm -z <zone_name> halt)によりノングローバルゾーンを停止させます。
ノングローバルゾーンをクラスタノード間で共有する場合、-sオプションを指定してください。共有しない場合、-nオプションを指定してください。
以下に例を示します。この例では、グローバルゾーンで、ゾーン名をzone1、ノングローバルゾーンのクラスタアプリケーション名をuserApp_0、タイムアウト値を200秒、ノングローバルゾーンをクラスタノード間で共有する構成としています。
Startスクリプト
/opt/SMAW/bin/hvzone -c -z zone1 -a userApp_0 -s -t 200
Stopスクリプト
/opt/SMAW/bin/hvzone -u -z zone1 -a userApp_0 -s -t 200
Checkスクリプト
/opt/SMAW/bin/hvzone -m -z zone1 -a userApp_0 -s -t 200
-sオプションを指定すると、待機側ではノングローバルゾーンは起動せず、さらにそのノードからはノングローバルゾーンはdetachされた状態となります。
その後、スクリプトの属性を設定します。「Flag」ボタンをクリックし、以下の値を設定してください。
Flag | 概要 |
|---|---|
ALLEXITCODES | “Yes”に変更してください。 |
AUTORECOVER | “Yes”の場合、以下のリソースは設定しないでください。
|
STANDBYCAPABLE | ウォームスタンバイの場合、“Yes”に変更してください。 |
TIMEOUT | デフォルト値は300秒です。次の値の合計よりも大きな値を設定してください。
|
注意
hvzoneコマンドでは、ノングローバルゾーン上で動作するRMS、およびそのRMSが制御するuserApplication の状態を監視するため、zlogin(1)コマンドを定周期で実行しています。
このため、クラスタシステム構築後、クラスタシステムの運用中は、zlogin(1)コマンド内部で実行するsu(1M)に関するメッセージが/var/adm/sulog、/var/adm/wtmpxなどに定期的に出力されます。
ノングローバルゾーン内でアプリケーション監視を行わない場合、または、シングルノードクラスタ運用の場合
Cmdlineリソースを作成します。
スクリプトファイルを作成します。本スクリプトは、Cmdlineリソース毎に作成します。また、Cmdlineリソースを使用するすべてのノードに対してスクリプトファイルを作成します。以降は、Startスクリプトを“/var/tmp/PCL/rmstools/start_zone.sh”、Stopスクリプトを“/var/tmp/PCL/rmstools/stop_zone.sh”、Checkスクリプトを“/var/tmp/PCL/rmstools/check_zone.sh”とした場合の例です。内容は要件に応じて変更しても構いません。/var/tmp/PCL/rmstoolsディレクトリが存在しない場合は、ディレクトリを作成してください。
スクリプトファイルの作成
# vi /var/tmp/PCL/rmstools/start_zone.sh
(以下のStartスクリプトファイルの内容を貼り付ける) # vi /var/tmp/PCL/rmstools/stop_zone.sh
(以下のStopスクリプトファイルの内容を貼り付ける) # vi /var/tmp/PCL/rmstools/check_zone.sh
(以下のCheckスクリプトファイルの内容を貼り付ける) # chmod +x /var/tmp/PCL/rmstools/start_zone.sh
# chmod +x /var/tmp/PCL/rmstools/stop_zone.sh
# chmod +x /var/tmp/PCL/rmstools/check_zone.sh
Startスクリプト
#!/bin/sh
MYZONE=$1
zoneadm -z $MYZONE list -p | grep :configured:
if [ $? -eq 0 ]; then
zoneadm -z $MYZONE attach -F || exit $?
fi
zoneadm -z $MYZONE list -p | grep :running:
if [ $? -eq 0 ]; then
zoneadm -z $MYZONE reboot
RET=$?
else
zoneadm -z $MYZONE boot
RET=$?
fi
exit $RETStopスクリプト
#!/bin/sh
MYZONE=$1
RET=0
RET2=0
zoneadm -z $MYZONE list -p | grep :running:
if [ $? -eq 0 ]; then
zoneadm -z $MYZONE halt
RET=$?
fi
zoneadm -z $MYZONE list -p | grep :installed:
if [ $? -eq 0 ]; then
zoneadm -z $MYZONE detach
RET2=$?
fi
if [ $RET -eq 0 ]; then
exit $RET2
fi
exit $RETCheckスクリプト
#!/bin/sh
# Return Offline if zlogin to the NGZ does not end in 30 seconds (Please change if needed)
TIMEOUT=30
MYZONE=$1
zoneadm -z $MYZONE list -p | grep :running: > /dev/null 2>&1
RET=$?
if [ $RET -ne 0 ]; then
exit $RET
fi
/usr/sbin/zlogin $MYZONE "/usr/bin/ls >/dev/null 2>&1" 2>/dev/null &
PID=$!
i=0
while [ $i -lt $TIMEOUT ]
do
ps -p $PID > /dev/null 2>&1
if [ $? -ne 0 ]; then
wait $PID
exit $?
fi
sleep 1
i=`expr $i + 1`
done
exit 1Cmdlineの作成の「作成方法」で「パス入力」を選択し、Startスクリプト、Stopスクリプト、Checkスクリプトを以下のように設定してください。(ゾーン名をzone1とした場合)
Startスクリプト
/var/tmp/PCL/rmstools/start_zone.sh zone1
Stopスクリプト
/var/tmp/PCL/rmstools/stop_zone.sh zone1
Checkスクリプト
/var/tmp/PCL/rmstools/check_zone.sh zone1
その後、スクリプトの属性を設定します。「Flag」ボタンをクリックし、以下の値を設定してください。
Flag | 概要 |
|---|---|
AUTORECOVER |
|
共有IPゾーンのノングローバルゾーンを使用し、かつ、サーバ間でノングローバルゾーンのイメージを共有しない場合、グローバルゾーンで引継ぎIPアドレスのためのリソースを作成します。
Cmdlineリソースを使用するすべてのノードに対して、以下の例のようにスクリプトファイルを作成します。/var/tmp/PCL/rmstoolsディレクトリが存在しない場合は、ディレクトリを作成してください。
hvzonelip.shスクリプトファイルの作成(GLSのNIC切替方式で使用する場合、または、GLSを使用しない場合)
# vi /var/tmp/PCL/rmstools/hvzonelip.sh
(以下のhvzonelip.shスクリプトファイルの内容を貼り付ける) # chmod +x /var/tmp/PCL/rmstools/hvzonelip.sh
hvzonelifrsc.shスクリプトファイルの作成(GLSの高速切替方式、GS/SURE連携方式で使用する場合)
# vi /var/tmp/PCL/rmstools/hvzonelifrsc.sh
(以下のhvzonelifrsc.shスクリプトファイルの内容を貼り付ける) # chmod +x /var/tmp/PCL/rmstools/hvzonelifrsc.sh
hvzonelip.shスクリプトファイルの内容(GLSのNIC切替方式で使用する場合、または、GLSを使用しない場合)
#!/bin/sh
#
# hvzonelip.sh 1.1
#
LIP=""
IPMASK=""
IFLIST=""
IPTYPE=""
ZONENAME=""
ZONEWAIT=""
#--------------------------------------------------
# Add Logical IP
#--------------------------------------------------
TAG=`/usr/bin/basename $0`
CONFFILE=$2
RSCNAME=${HV_NODENAME:-Unknown}
PHASE=${HV_INTENDED_STATE:-Unknown}
Start()
{
ADDINGIP=$LIP
IFATTR="netmask + broadcast + -trailers"
IFCFG_RETRY_CNT=4
if [ "$IPTYPE" = "inet6" ]
then
ADDINGIP="$LIP"/"$IPMASK"
IFATTR=""
fi
for PIF in $IFLIST
do
/usr/sbin/ifconfig $PIF $IPTYPE 2>/dev/null | /bin/grep "UP," >/dev/null 2>&1
if [ $? -eq 0 ]
then
break
fi
done
CheckIp $PIF $ADDINGIP $ZONENAME
if [ $? != 0 ]
then
Pmsg INFO "ip address has already been assigned. if=$CHKIF LIP=$LIP ZONENAME=$ZONENAME"
return 0
fi
RET=1
CNT=0
while [ $RET -ne 0 ] && [ $CNT -le $IFCFG_RETRY_CNT ]
do
CNT=`/usr/bin/expr $CNT + 1`
CMD="/usr/sbin/ifconfig $PIF $IPTYPE addif $ADDINGIP $IFATTR up zone $ZONENAME"
Pmsg TRACE "$CMD"
$CMD
RET=$?
Pmsg TRACE "exitcode = $RET"
done
if [ $RET -ne 0 ]
then
Pmsg ERROR "ifconfig failed. cmd=$CMD"
fi
return $RET
}
CheckIp()
{
CHKPIF=$1
CHKLIP=$2
CHKZONE=$3
CHKIF=
CHKIFCAU=`/usr/sbin/ifconfig -au $IPTYPE 2>/dev/null`
echo "$CHKIFCAU" | /bin/grep "$IPTYPE $CHKLIP " >/dev/null 2>&1
if [ $? != 0 ]
then
return 0
fi
CHKIFLIST=`echo "$CHKIFCAU" | /bin/grep "^$CHKPIF:[0-9]*: " | /usr/bin/sed -e "s/: .*//"`
for CHKIF in $CHKIFLIST
do
CHKIFC=`/usr/sbin/ifconfig $CHKIF $IPTYPE 2>/dev/null`
echo "$CHKIFC" | /bin/grep "$IPTYPE $CHKLIP " >/dev/null 2>&1
if [ $? != 0 ]
then
continue
fi
echo "$CHKIFC" | /bin/grep "zone $CHKZONE$" >/dev/null 2>&1
if [ $? != 0 -a "$CHKZONE" != "global" ]
then
continue
fi
return 1
done
return 0
}
#--------------------------------------------------
# Remove Logical IP
#--------------------------------------------------
Stop()
{
IFCFG_RETRY_CNT=9
for PIF in $IFLIST
do
RET=0
CNT=0
while [ $RET -eq 0 ] && [ $CNT -le $IFCFG_RETRY_CNT ]
do
CNT=`/usr/bin/expr $CNT + 1`
CMD="/usr/sbin/ifconfig $PIF $IPTYPE removeif $LIP"
Pmsg TRACE "$CMD"
$CMD 2>/dev/null
RET=$?
Pmsg TRACE "exitcode = $RET"
done
done
return 0
}
#--------------------------------------------------
# Common functions
#--------------------------------------------------
WaitForZoneBoot()
{
MSGFLAG=0
while [ 1 ]
do
ZONESTATUS=`/usr/sbin/zoneadm -z "$ZONENAME" list -p 2>/dev/null | /bin/grep ":shared" |\
/usr/bin/nawk -F: '{ print $3 }'`
if [ "$ZONESTATUS" = "ready" -o "$ZONESTATUS" = "running" ]
then
break
fi
if [ "$ZONESTATUS" = "" ]
then
Pmsg ERROR "shared-ip zone does not exist. ZONENAME=$ZONENAME"
return 1
fi
if [ "$MSGFLAG" = 0 ]
then
Pmsg INFO "wait for zone boot. stat=$ZONESTATUS ZONENAME=$ZONENAME"
MSGFLAG=1
fi
sleep 1
done
if [ "$MSGFLAG" = 1 ]
then
Pmsg INFO "finished waiting. stat=$ZONESTATUS ZONENAME=$ZONENAME"
fi
return 0
}
Pmsg()
{
TSTAMP=`/usr/bin/date +"%Y-%m-%d %H:%M:%S"`
echo "$RSCNAME: $PHASE: $TSTAMP: $1: $TAG($$) $2"
return 0
}
ReadConf()
{
if [ -r "$CONFFILE" ]
then
. $CONFFILE
fi
if [ -z "$LIP" -o -z "$IPMASK" -o -z "$IFLIST" -o -z "$IPTYPE" -o -z "$ZONENAME" ]
then
Pmsg ERROR "configuration error. LIP=$LIP IPMASK=$IPMASK IFLIST=$IFLIST IPTYPE=$IPTYPE ZONENAME=$ZONENAME"
return 1
fi
return 0
}
#--------------------------------------------------
# Main
#--------------------------------------------------
if [ x"$1" = x"start" ]
then
ReadConf
if [ $? != 0 ]
then
exit 1
fi
if [ "$ZONEWAIT" != 0 ]
then
WaitForZoneBoot
if [ $? != 0 ]
then
exit 1
fi
fi
Start
exit $?
elif [ x"$1" = x"stop" ]
then
ReadConf
if [ $? != 0 ]
then
exit 0
fi
Stop
exit $?
else
Pmsg ERROR "usage: $TAG {start|stop} [conffile]. cmd=$0 $*"
fi
exit 1hvzonelifrsc.shスクリプトファイルの内容(GLSの高速切替方式、GS/SURE連携方式で使用する場合)
#!/bin/sh
#
# hvzonelifrsc.sh 1.0
#
LIF=""
ZONENAME=""
ZONEWAIT=""
#--------------------------------------------------
# Place the logical interface in non-global zone
#--------------------------------------------------
TAG=`/usr/bin/basename $0`
CONFFILE=$2
RSCNAME=${HV_NODENAME:-Unknown}
PHASE=${HV_INTENDED_STATE:-Unknown}
Start()
{
IFCFG_RETRY_CNT=4
RET=1
CNT=0
while [ $RET -ne 0 ] && [ $CNT -le $IFCFG_RETRY_CNT ]
do
CNT=`/usr/bin/expr $CNT + 1`
CMD="/usr/sbin/ifconfig $LIF zone $ZONENAME"
Pmsg TRACE "$CMD"
$CMD
RET=$?
Pmsg TRACE "exitcode = $RET"
done
if [ $RET -ne 0 ]
then
Pmsg ERROR "ifconfig failed. cmd=$CMD"
fi
return $RET
}
#--------------------------------------------------
# Place the logical interface in global zone
#--------------------------------------------------
Stop()
{
IFCFG_RETRY_CNT=4
RET=1
CNT=0
while [ $RET -ne 0 ] && [ $CNT -le $IFCFG_RETRY_CNT ]
do
CNT=`/usr/bin/expr $CNT + 1`
CMD="/usr/sbin/ifconfig $LIF -zone"
Pmsg TRACE "$CMD"
$CMD
RET=$?
Pmsg TRACE "exitcode = $RET"
done
return 0
}
#--------------------------------------------------
# Common functions
#--------------------------------------------------
WaitForZoneBoot()
{
MSGFLAG=0
while [ 1 ]
do
ZONESTATUS=`/usr/sbin/zoneadm -z "$ZONENAME" list -p 2>/dev/null | /bin/grep ":shared" |\
/usr/bin/nawk -F: '{ print $3 }'`
if [ "$ZONESTATUS" = "ready" -o "$ZONESTATUS" = "running" ]
then
break
fi
if [ "$ZONESTATUS" = "" ]
then
Pmsg ERROR "shared-ip zone does not exist. ZONENAME=$ZONENAME"
return 1
fi
if [ "$MSGFLAG" = 0 ]
then
Pmsg INFO "wait for zone boot. stat=$ZONESTATUS ZONENAME=$ZONENAME"
MSGFLAG=1
fi
sleep 1
done
if [ "$MSGFLAG" = 1 ]
then
Pmsg INFO "finished waiting. stat=$ZONESTATUS ZONENAME=$ZONENAME"
fi
return 0
}
Pmsg()
{
TSTAMP=`/usr/bin/date +"%Y-%m-%d %H:%M:%S"`
echo "$RSCNAME: $PHASE: $TSTAMP: $1: $TAG($$) $2"
return 0
}
ReadConf()
{
if [ -r "$CONFFILE" ]
then
. $CONFFILE
fi
if [ -z "$LIF" -o -z "$ZONENAME" ]
then
Pmsg ERROR "configuration error. LIF=$LIF ZONENAME=$ZONENAME"
return 1
fi
return 0
}
#--------------------------------------------------
# Main
#--------------------------------------------------
if [ x"$1" = x"start" ]
then
ReadConf
if [ $? != 0 ]
then
exit 1
fi
if [ "$ZONEWAIT" != 0 ]
then
WaitForZoneBoot
if [ $? != 0 ]
then
exit 1
fi
fi
Start
exit $?
elif [ x"$1" = x"stop" ]
then
ReadConf
if [ $? != 0 ]
then
exit 0
fi
Stop
exit $?
else
Pmsg ERROR "usage: $TAG {start|stop} [conffile]. cmd=$0 $*"
fi
exit 1配置したスクリプトに対する設定ファイルを新規に作成します。ファイル名には任意の名前を指定することができます。また、作成したファイルの中で、以下の項目を設定します。
hvzonealip.shの設定ファイルの作成(GLSのNIC切替方式を使用する場合、または、GLSを使用しない場合)
LIP、IPMASK、IFLIST、IPTYPE、ZONENAMEの5項目を設定します。
/var/tmp/PCL/rmstools/hvzonelip_zone-net.conf
LIP= IPMASK= IFLIST= IPTYPE= ZONENAME=
hvzonelifrsc.shの設定ファイルの作成(GLSの高速切替方式、GS/SURE連携方式を使用する場合)
LIF、ZONENAMEの2項目を設定します。
/var/tmp/PCL/rmstools/hvzonelifrsc_zone-net.conf
LIF= ZONENAME=
項目 | 設定内容 |
|---|---|
引継ぎIPアドレス (LIP=) | ノングローバルゾーンで引き継ぐIPアドレスを設定します。本IPアドレスは、GLSや引継ぎネットワークリソース、他のノングローバルゾーンで使用していないものを設定してください。またIPv6アドレスを設定する場合はアドレス文字列の省略を考慮する必要があるため、IPv6アドレスがネットワークインタフェースに設定された状態でifconfigコマンドを実行したときに表示されるアドレス文字列と同じものを設定してください。 例) "192.168.10.10", "fd00:100::2e0:edff:fe0a:f30a" |
ネットマスク長(IPMASK=) | LIP のネットマスク長(IPv4 の場合)、またはプレフィクス長(IPv6 の場合)を設定してください。 例) "24", "64" |
ネットワークインタフェース名のリスト(IFLIST=) | ノングローバルゾーンが使用するグローバルゾーン上のネットワークインタフェース名を設定します。GLSで複数のネットワークインタフェースを束ねている場合、プライマリとセカンダリの両方のネットワークインタフェース名を空白で区切って記載します。 |
IPアドレスの種類(IPTYPE=) | LIP が IPv4 の場合は inet を、IPv6 の場合は inet6 を設定してください。 例) "inet", "inet6" |
引継ぎ論理仮想インタフェース(LIF=) | ノングローバルゾーンで、引き継ぐIPアドレス(IPv4アドレス)が割り当てられた論理仮想インタフェース(コロン付きインタフェース)を設定します。 |
ノングローバルゾーン名(ZONENAME=) | ノングローバルゾーンの名前を設定します。 |
ノングローバルゾーンの起動待ち | ノングローバルゾーンにIPアドレスを割り当てるとき、対象となるノングローバルゾーンの状態をチェックするかを指定します。何も設定しない場合、最大でCmdlineリソースのTIMEOUT時間が経過するまでノングローバルゾーンの起動を待ち合わせます。待ち合わせをせず、即時にリソースを異常にしたい場合、設定ファイルに“ZONEWAIT="0"”を追記します。 |
GLS: Global Link Services
参考
NIC切替方式の場合、またはGLSを使用しない場合、Glsリソースや引継ぎネットワークリソースに登録した引継ぎIPアドレスとは異なるIPアドレスを追加することで、ノングローバルゾーン間のIPアドレス引き継ぎを実現します。一方、高速切替方式やGS/SURE連携方式の場合、Glsリソースに登録した引継ぎIPアドレスをグローバルゾーンと共有させることで、ノングローバルゾーン間のIPアドレス引き継ぎを実現します。
高速切替方式、GS/SURE連携方式の場合、引継ぎ論理仮想インタフェース(LIF=)は、GLSのhanethvrsc createコマンドに、-iオプションをつけて実行することで設定します。また、hanethvrsc printコマンドでifnameの項目として表示されます。
# /opt/FJSVhanet/usr/sbin/hanethvrsc print
ifname takeover-ipv4 takeover-ipv6 +----------+----------------+--------------------------------------------------+ sha0:65 192.168.100.101 -
GS/SURE連携方式の場合、GLSのhanethvrsc createコマンドに-iオプションをつけずに設定した場合、ノングローバルゾーンで引継ぎIPアドレスを使用できません。引継ぎIPアドレスが、ノングローバルゾーンとグローバルゾーン間で共有可能な論理仮想インタフェース(shaX:65)ではなく、仮想インタフェース(shaX)に割り当てられるためです。論理仮想インタフェースとして設定されているかは、hanethvrsc printの実行結果で表示されるtakeover-ipv4項目と、hanetconfig printの実行結果で表示されるHostname項目の仮想IPアドレスが異なるものになっていることで判別してください。
# /opt/FJSVhanet/usr/sbin/hanethvrsc print
ifname takeover-ipv4 takeover-ipv6 +----------+----------------+--------------------------------------------------+ sha0:65 192.168.100.101 - # /opt/FJSVhanet/usr/sbin/hanetconfig print
[IPv4,Patrol] Name Hostname Mode MAC Adder/Phys ip Interface List +-----------+---------------+----+-----------------+---------------------------+ sha1 192.168.10.1 n fjgi0 sha2 192.168.20.1 n fjgi1 sha0 192.168.100.100 c sha1,sha2
例
NIC切替方式のスクリプトの設定例
グローバルゾーンでGLSのNIC切替方式が二重化しているネットワークインタフェース「fjgi0 fjgi1」を使用して、ノングローバルゾーン「zone1」で引継ぎIPアドレス「192.168.10.10」を設定する場合の設定例は以下の通りです。
/var/tmp/PCL/rmstools/hvzonelip_zone1-net1.conf
LIP="192.168.10.10" IPMASK="24" IFLIST="fjgi0 fjgi1" IPTYPE="inet" ZONENAME="zone1"
GLSを使用しない場合のスクリプトの設定例
グローバルゾーンのネットワークインタフェース「fjgi0」を使用して、ノングローバルゾーン「zone1」で引継ぎIPアドレス「fd00:100::2e0:edff:fe0a:f30a」を設定する場合の設定例は以下の通りです。
/var/tmp/PCL/rmstools/hvzonelip_zone1-net1.conf
LIP="fd00:100::2e0:edff:fe0a:f30a" IPMASK="64" IFLIST="fjgi0" IPTYPE="inet6" ZONENAME="zone1"
高速切替方式、GS/SURE連携方式のスクリプトの設定例
グローバルゾーンでGLSの高速切替方式、GS/SURE連携方式が二重化しているネットワークインタフェースを使用して、ノングローバルゾーン「zone1」で引継ぎ論理仮想インタフェース「sha0:65」を設定する場合の設定例は以下の通りです。
/var/tmp/PCL/rmstools/hvzonelif_zone1-net1.conf
LIF="sha0:65" ZONENAME="zone1"
Cmdlineリソースを使用するすべてのノード(グローバルゾーン)に対して、作成した設定ファイルをコピーします。
注意
各ノードに設定ファイルを配置しない場合、Cmdlineリソースが起動しない場合があります。
Cmdlineリソースを登録します。
Cmdlineの作成の「作成方法」で「パス入力」を選択し、Startスクリプト、Stopスクリプトを設定します。Checkスクリプトは入力しません。
GLSのNIC切替方式を使用する場合、または、GLSを使用しない場合
Startスクリプト
/var/tmp/PCL/rmstools/hvzonelip.sh start [config file]
Stopスクリプト
/var/tmp/PCL/rmstools/hvzonelip.sh stop [config file]
Checkスクリプト
入力しません。
GLSの高速切替方式、GS/SURE連携方式を使用する場合
Startスクリプト
/var/tmp/PCL/rmstools/hvzonelifrsc.sh start [config file]
Stopスクリプト
/var/tmp/PCL/rmstools/hvzonelifrsc.sh stop [config file]
Checkスクリプト
入力しません。
以下に例を示します。
Startスクリプト
/var/tmp/PCL/rmstools/hvzonelip.sh start /var/tmp/PCL/rmstools/hvzonelip_zone1-net1.conf
Stopスクリプト
/var/tmp/PCL/rmstools/hvzonelip.sh stop /var/tmp/PCL/rmstools/hvzonelip_zone1-net1.conf
Checkスクリプト
入力しません。
スクリプトの属性を設定します。「Flag」ボタンをクリックし、以下の値を設定してください。
Flag | 概要 |
|---|---|
NULLDETECTOR | Checkスクリプトがないため、“Yes”に変更します。 |
TIMEOUT | デフォルト値300秒から60秒に変更します。60秒よりTIMEOUTの時間を短くする場合、上記で登録したStartスクリプトとStopスクリプトの実行時間を考慮したうえで設定してください。詳細は、“6.7.1.1 Cmdlineリソースの作成”を参照してください。 |
注意
ノングローバルゾーンを起動した状態でCmdlineリソース(共有IP制御)をOnline状態にしてください。ノングローバルゾーンが停止している場合、ifconfigコマンドによる共有IPのzone設定に失敗するためです。
ノングローバルゾーン上のRMSによって動作するアプリケーションがOnline状態になる前に、引継ぎIPアドレスを起動したい場合、Cmdlineリソース(ノングローバルゾーン制御)にResourceの関連付けを設定してください。Cmdlineリソース(ノングローバルゾーン制御)のSubApplicationに、Cmdlineリソース(共有IP制御)を設定します。詳細は、“6.7 クラスタアプリケーションの設定”を参照してください。
あらかじめグローバルゾーンに登録していたGdsリソース、Glsリソース、Fsystemリソースに加えて“5-2. ノングローバルゾーン制御用Cmdlineリソースの作成”で作成したCmdlineリソースを加えて、対象のノングローバルゾーンに対応するクラスタアプリケーションを作成してください。
クラスタアプリケーションを作成するには、ノングローバルゾーンが停止している必要があります。
ノングローバルゾーンが動作中の場合は、以下の手順でクラスタアプリケーションの制御対象となるノングローバルゾーンを、すべてのクラスタノードで停止してから、クラスタアプリケーションを作成してください。
# zlogin zone-a shutdown -i0 -g0 -yクラスタアプリケーションの作成後、クラスタ環境のチェックを行ってください。詳細は、“6.10 クラスタ環境のチェック”を参照してください。
注意
クラスタアプリケーションの作成手順は“6.7.2.1 スタンバイ運用のクラスタアプリケーション作成”に従いますが、以下の点が異なります。
クラスタアプリケーションの属性
ウォームスタンバイの場合、“StandbyTransitions”を必ず“ClearFaultRequest|StartUp|SwitchRequest”に設定してください。