Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


16.3.4 HAモニタの環境設定

プライマリノードおよびセカンダリノードのサーバマシンにインストールしたHAモニタの環境設定をしてください。HAモニタの環境設定方法については,マニュアルHAモニタ Linux(R)(x86)編システムの構築を参照してください。

ここでは,HAモニタの環境設定をする際に留意することについて説明します。

〈この項の構成〉

(1) 環境変数の設定

HADB管理者の環境変数に,次の環境変数を設定してください。

(2) sysdefファイルの指定

HAモニタのsysdefファイルに指定するオペランドのうち,次のオペランドについては,指定値が決まっています。

上記のオペランドの詳細については,マニュアルHAモニタ Linux(R)(x86)編HAモニタの環境設定(sysdef)を参照してください。

(3) serversファイルの指定

HAモニタのserversファイルに指定するオペランドのうち,次のオペランドについては,指定値が決まっています。

serversファイルに指定する上記のオペランドの詳細については,マニュアルHAモニタ Linux(R)(x86)編サーバ対応の環境設定(servers)を参照してください。

(4) コマンド用環境変数定義およびコマンドの作成

HAモニタとの連携のために,コマンド用環境変数定義と次のコマンドを作成してください。

$ADBDIR/sample/scripts下に,コマンド用環境変数定義,および上記のコマンドのひな形があります。ひな形を基にコマンドを作成してください。

(a) コマンド用環境変数定義の作成

$ADBDIR/sample/scripts/multinode.envがひな形です。このひな形をコピーして,次のを修正してください。

  • 環境変数ADBMGR

    HADB管理者(OSユーザ)のユーザ名を指定してください。

  • 環境変数ADBALIAS

    HAモニタのserversファイルのaliasオペランドの指定値を指定してください。

  • 環境変数ADBDIR

    サーバディレクトリの絶対パスを指定してください。

(b) ユーザコマンドの作成

$ADBDIR/sample/scripts/multinode_user.shがひな形です。このひな形をコピーして,次の個所を修正してください。

  • source

    source文の引数に,コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

(c) サーバの起動コマンドの作成

$ADBDIR/sample/scripts/multinode_act.shがひな形です。このひな形をコピーして,次の個所を修正してください。

  • source

    source文の引数に,コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

(d) サーバの停止コマンドの作成

系のリセットを使用するか,または共有ディスクのSCSIリザーブを使用するかによって,サーバの停止コマンドのひな形が異なります。系のリセットを使用する場合は,$ADBDIR/sample/scripts/multinode_term.shがひな形です。共有ディスクのSCSIリザーブを使用する場合は,$ADBDIR/sample/scripts/multinode_term_scsi.shがひな形です。

どちらか該当するひな形をコピーして,次の個所を修正してください。

  • source

    source文の引数に,コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

(e) サーバの監視コマンドの作成

$ADBDIR/sample/scripts/multinode_patrol.shがひな形です。このひな形をコピーして,次の個所を修正してください。

  • source

    source文の引数に,コマンド用環境変数定義を指定したファイルの絶対パスを指定してください。

(5) 各ファイルの指定例(系のリセットを使用する場合)

次のファイルの指定例を示します。系のリセットを使用する場合の指定例です。

ここで説明する指定例は,「図16‒1 マルチノード機能を使用した場合のシステム構成例」のシステム構成を前提としています。

(a) sysdefファイルの指定例

プライマリノードhadb01sysdefファイルの指定例
environment  name hadb01,
             address 1,           ...1
             patrol 30,           ...2
             lan path11,          ...3
             lanport HAmon1;      ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,  ...5
             termcmd_at_abort nouse;

[説明]

  1. このノードのリセット優先度を指定します。このノードは,プライマリノードのため,リセット優先度をいちばん高くする必要があるので1を指定します。

  2. patrolオペランドには,30以下の値を指定してください。

  3. HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.11に対応するホスト名path11を指定します。

  4. HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

  5. マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

セカンダリノードhadb02sysdefファイルの指定例
environment  name hadb02,
             address 2,         ...1
             patrol 30,         ...2
             lan path21,        ...3
             lanport HAmon1;    ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,  ...5
             termcmd_at_abort nouse;

[説明]

  1. このノードのリセット優先度を指定します。このノードは,プライマリノードの次にリセット優先度を高くしたいため,2を指定します。

  2. patrolオペランドには,30以下の値を指定してください。

  3. HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.12に対応するホスト名path21を指定します。

  4. HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

  5. マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

セカンダリノードhadb03sysdefファイルの指定例
environment  name  hadb03,
             address 3,         ...1
             patrol 30,         ...2
             lan path31,        ...3
             lanport HAmon1;    ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,  ...5
             term_at_abort  nouse;

[説明]

  1. このノードのリセット優先度を指定します。このノードは,セカンダリノードhadb02の次にリセット優先度を高くしたいため,3を指定します。

  2. patrolオペランドには,30以下の値を指定してください。

  3. HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.13に対応するホスト名path31を指定します。

  4. HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

  5. マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

(b) serversファイルの指定例

ここで説明している例は,ファイルシステムにext4を使用していることを前提としています。ext4以外のファイルシステムを使用する場合は,OSのmountコマンドのオプションがここで説明している例とは異なります。

プライマリノードhadb01serversファイルの指定例
server name /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                     ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/sys_hadb:         ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:          ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":  ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",         ...6
       termcommand "/HADB/scripts/multinode_term.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",   ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,   ...9
       fs_neck use:use,   ...10
       initial online;    ...11

[説明]

  1. サーバディレクトリの絶対パスを指定します。

  2. 次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

    • システムディレクトリ

    • 同義語辞書ファイルの格納ディレクトリ(同義語検索を行う場合に作成するディレクトリです)

  3. 2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

  4. 2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

  5. 2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

  6. マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

  7. マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

  8. マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

  9. 2.で示したディレクトリを作成するファイルシステムがあるVGに対しては,useを指定します。

  10. 2.で示したディレクトリを作成するファイルシステムに対しては,useを指定します。

  11. プライマリノードとするため,onlineを指定します。

セカンダリノードhadb02serversファイルの指定例
server name /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                     ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/sys_hadb:         ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:          ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":  ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",         ...6
       termcommand "/HADB/scripts/multinode_term.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",   ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,   ...9
       fs_neck use:use,   ...10
       initial standby,   ...11
       standbypri 1;      ...12

[説明]

  1. サーバディレクトリの絶対パスを指定します。

  2. 次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

    • システムディレクトリ

    • 同義語辞書ファイルの格納ディレクトリ(同義語検索を行う場合に作成するディレクトリです)

  3. 2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

  4. 2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

  5. 2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

  6. マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

  7. マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

  8. マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

  9. 2.で示したディレクトリを作成するファイルシステムがあるVGに対しては,useを指定します。

  10. 2.で示したディレクトリを作成するファイルシステムに対しては,useを指定します。

  11. セカンダリノードとするため,standbyを指定します。

  12. プライマリノードの切り替えが発生した際,新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位をいちばん高くしたいため,1を指定します。

セカンダリノードhadb03serversファイルの指定例
server name /HADB/server,                     ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                     ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/sys_hadb:         ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:          ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":  ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",         ...6
       termcommand "/HADB/scripts/multinode_term.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",   ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,   ...9
       fs_neck use:use,   ...10
       initial standby,   ...11
       standbypri 2;      ...12

[説明]

  1. サーバディレクトリの絶対パスを指定します。

  2. 次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

    • システムディレクトリ

    • 同義語辞書ファイルの格納ディレクトリ(同義語検索を行う場合に作成するディレクトリです)

  3. 2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

  4. 2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

  5. 2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

  6. マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

  7. マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

  8. マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

  9. 2.で示したディレクトリを作成するファイルシステムがあるVGに対しては,useを指定します。

  10. 2.で示したディレクトリを作成するファイルシステムに対しては,useを指定します。

  11. セカンダリノードとするため,standbyを指定します。

  12. プライマリノードの切り替えが発生した際,新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位は,ノードhadb02の次にしたいため,2を指定します。

(c) コマンド用環境変数定義ファイルの指定例

この例では,コマンド用環境変数定義を/HADB/scripts/multinode.envに格納しています。指定内容は,プライマリノードおよびセカンダリノードで同じにしてください。

■コマンド用環境変数定義ファイルの指定例
#!/bin/sh

# The environment variables for HADB
export ADBMGR=adbmanager               ...1
export ADBALIAS=HADB                   ...2
export ADBDIR=/HADB/server             ...3

[説明]

  1. HADB管理者(OSユーザ)のユーザ名adbmanagerを指定します。

  2. HAモニタのserversファイルのaliasオペランドの指定値であるHADBを指定します。

  3. サーバディレクトリの絶対パスを指定します。

(d) ユーザコマンドファイルの指定例

この例では,ユーザコマンドを/HADB/scripts/multinode_user.shに格納しています。指定内容は,プライマリノードおよびセカンダリノードで同じにしてください。

■ユーザコマンドファイルの指定例
#!/bin/sh

# Sample of the usrcommand for HADB

# Setting environment variables for HADB
source /HADB/scripts/multinode.env       ...1

###############################################################################
#  Main
###############################################################################

KIND_ONLINE="online"
KIND_STANDBY="standby"
SERV_START="-s"
SERV_END="-e"
SERV_PLANEND="-p"
SERV_ABORT="-a"
SERV_ABORT_NS="-o"
SERV_FAULT="-f"
SERV_HOSTDOWN="-h"
SERV_PLANSWAP="-w"
STATUS_START="start"
STATUS_END="end"
STATUS_SBYEND="sbyend"


patrol_sby_exe()
{
  $ADBDIR/bin/patrol_sby_exe       ...2
}

patrol_sby_term()
{
  $ADBDIR/bin/patrol_sby_term      ...3
}

stop_sby()
{
  $ADBDIR/bin/stop_sby             ...4
}

# Processing of the server
if [ "$2" = "$ADBALIAS" ]
then
  if [ "$4" = "$KIND_ONLINE" ]
  then
    case "$5" in
    "$SERV_START" )
      ;;
    "$SERV_END" )
      ;;
    "$SERV_PLANEND" )
      ;;
    "$SERV_ABORT" )
      ;;
    "$SERV_ABORT_NS" )
      ;;
    "$SERV_PLANSWAP" )
      ;;
    esac
  else
    case "$5" in
    "$SERV_START" )
      [ "$6" = "$STATUS_START" ] && patrol_sby_exe &
      ;;
    "$SERV_END" )
      [ "$6" = "$STATUS_START" -o "$6" = "$STATUS_SBYEND" ] && stop_sby
      ;;
    "$SERV_PLANEND" )
      [ "$6" = "$STATUS_START" ] && patrol_sby_term
      ;;
    "$SERV_ABORT" )
      [ "$6" = "$STATUS_START" ] && patrol_sby_term
      [ "$6" = "$STATUS_SBYEND" ] && stop_sby
      ;;
    "$SERV_FAULT" )
      [ "$6" = "$STATUS_START" ] && stop_sby
      ;;
    "$SERV_HOSTDOWN" )
      [ "$6" = "$STATUS_START" ] && patrol_sby_term
      ;;
    "$SERV_PLANSWAP" )
      [ "$6" = "$STATUS_START" ] && patrol_sby_term
      ;;
    esac
  fi
fi

exit 0

[説明]

  1. source文には,コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

  2. セカンダリノードの監視を開始するためのコマンドを指定します。

  3. セカンダリノードの監視を終了するためのコマンドを指定します。

  4. セカンダリノードを停止するためのコマンドを指定します。

(e) サーバの起動コマンドファイルの指定例

この例では,サーバの起動コマンドを/HADB/scripts/multinode_act.shに格納しています。指定内容は,プライマリノードおよびセカンダリノードで同じにしてください。

■サーバの起動コマンドファイルの指定例
#!/bin/sh

# Sample of the actcommand for HADB

SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env      ...1

# Execute adbchgnodetype command 
$SU - $ADBMGR -c "$ADBDIR/bin/adbchgnodetype --primary -n $ADBALIAS"
CHGNODERES=$?
if [ "$CHGNODERES" = "0" -o "$CHGNODERES" = "4" ]
then
  exit 0
else
  exit $CHGNODERES
fi

[説明]

  1. source文には,コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(f) サーバの停止コマンドファイルの指定例

この例では,サーバの停止コマンドを/HADB/scripts/multinode_term.shに格納しています。指定内容は,プライマリノードおよびセカンダリノードで同じにしてください。

■サーバの停止コマンドファイルの指定例
#!/bin/sh

# Sample of the termcommand for HADB

STS_ACTIVE="ACTIVE"
STS_STOP="STOP"
STS_STARTING="STARTING"
STS_STOPPING="STOPPING"
STS_ABORT="ABORT"
STS_QUIESCE="QUIESCE"
STS_OFFLINE="OFFLINE"
STS_CHGMODE="CHGMODE"
STS_STOPWAIT="STOPWAIT"
STS_COREDUMP="COREDUMP"
STS_FORCE="FORCE"
STS_MAINTNCE="MAINTNCE"

AWK=/bin/awk
ECHO=/bin/echo
GREP=/bin/grep
SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env      ...1

# Execute adbstop command
while :
do

  GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`

  case "$1" in
  "-e" )
    # Normal stop operations of primary node.
    # (when the monend command is executed.)
    if [ "$GET_STS" = "$STS_ACTIVE"   -o \
         "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o \
         "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o \
         "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
    then
      $SU - $ADBMGR -c "$ADBDIR/bin/adbstop --cancel"
      STOPRES=$?
      if [ "$STOPRES" = "0" -o "$STOPRES" = "4" ]
      then
        break
      fi
    elif [ "$GET_STS" = "$STS_STARTING" ]
    then
      break
    else
      break
    fi

    ;;
  "-w" )
    # Plan stop operations of primary node.
    # (when the monswap command is executed.)
    if [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o \
         "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o \
         "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o \
         "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
    then
      $SU - $ADBMGR -c "$ADBDIR/bin/adbstop --cancel --node"
      STOPRES=$?
      if [ "$STOPRES" = "0" -o "$STOPRES" = "4" ]
      then
        break
      fi
    else
      break
    fi

    ;;
  "-c" )
    break
    
    ;;
  esac

done

# stop HADB
if [ "$GET_STS" = "$STS_STARTING" ]
then
  ADB_ID=`$SU - $ADBMGR -c "ps x" | $GREP adbsrvd | $GREP -v $GREP | awk '{print $1}'`
  $SU - $ADBMGR -c "kill $ADB_ID"
  
  exit 0
fi

# Wait for end of HADB
while [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o \
        "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o \
        "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o \
        "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_COREDUMP" -o \
        "$GET_STS" = "$STS_MAINTNCE" ]
do
  GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`
  sleep 1
done

exit 0

[説明]

  1. source文には,コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(g) サーバの監視コマンドファイルの指定例

この例では,サーバの監視コマンドを/HADB/scripts/multinode_patrol.shに格納しています。指定内容は,プライマリノードおよびセカンダリノードで同じにしてください。

■サーバの監視コマンドファイルの指定例
#!/bin/sh

# Sample of the patrolcommand for HADB

AWK=/bin/awk
GREP=/bin/grep
PS=/bin/ps
PGREP=/usr/bin/pgrep
PKILL=/usr/bin/pkill
SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env      ...1

# Execute adbmonitor command for primary node
$SU - $ADBMGR -c "$ADBDIR/bin/adbmonitor -n" &

## Get su command process id
PID=$!

# Trap SIGTERM and terminate adbmonitor
trap "$PKILL -P $PID" 15


## Wait process terminated
CPID=""
CHKPID=`$PS aux | $AWK -v PID=$PID '{ if ($2 == PID) { print $2 } }'`
while [ "$CHKPID" != "" ]
do

  ## Get adbmonitor process id
  if [ "$CPID" = "" ]
  then
    CPID=`$PGREP -P $PID`
  fi
  
  ## Wait
  if [ "$CPID" != "" ]
  then
    CHKCPID=`$PS aux | $AWK -v CPID=$CPID '{ if ($2 == CPID) { print $2 } }'`
    while [ "$CHKCPID" != "" ]
    do
      sleep 1
      CHKCPID=`$PS aux | $AWK -v CPID=$CPID '{ if ($2 == CPID) { print $2 } }'`
    done
  fi
  
  sleep 1
  CHKPID=`$PS aux | $AWK -v PID=$PID '{ if ($2 == PID) { print $2 } }'`
done

exit 0

[説明]

  1. source文には,コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(6) 各ファイルの指定例(共有ディスクのSCSIリザーブを使用する場合)

次のファイルの指定例を示します。共有ディスクのSCSIリザーブを使用する場合の指定例です。

ここで説明する指定例は,「図16‒1 マルチノード機能を使用した場合のシステム構成例」のシステム構成を前提としています。

(a) sysdefファイルの指定例

プライマリノードhadb01sysdefファイルの指定例
environment  name hadb01,
             address 1,        ...1
             patrol 30,        ...2
             lan path11,       ...3
             lanport HAmon1;   ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,              ...5
             termcmd_at_abort nouse,
             fence_reset nouse,                                       ...6
             fence_scsi use,                                          ...7
             fence_lan nouse;

[説明]

  1. このノードのリセット優先度を指定します。このノードは,プライマリノードのため,リセット優先度をいちばん高くする必要があるので1を指定します。

  2. patrolオペランドには,30以下の値を指定してください。

  3. HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.11に対応するホスト名path11を指定します。

  4. HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

  5. マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

  6. 系のリセットを使用しないため,nouseを指定します。

  7. 共有ディスクのSCSIリザーブを使用するため,useを指定します。

セカンダリノードhadb02sysdefファイルの指定例
environment  name hadb02,
             address 2,        ...1
             patrol 30,        ...2
             lan path21,       ...3
             lanport HAmon1;   ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,              ...5
             termcmd_at_abort nouse,
             fence_reset nouse,                                       ...6
             fence_scsi use,                                          ...7
             fence_lan nouse;

[説明]

  1. このノードのリセット優先度を指定します。このノードは,プライマリノードの次にリセット優先度を高くしたいため,2を指定します。

  2. patrolオペランドには,30以下の値を指定してください。

  3. HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.12に対応するホスト名path21を指定します。

  4. HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

  5. マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

  6. 系のリセットを使用しないため,nouseを指定します。

  7. 共有ディスクのSCSIリザーブを使用するため,useを指定します。

セカンダリノードhadb03sysdefファイルの指定例
environment  name hadb03,
             address 3,        ...1
             patrol 30,        ...2
             lan path31,       ...3
             lanport HAmon1;   ...4
function     pathpatrol 240,
             connect_retry 5:200,
             monbegin_restart nouse,
             multistandby use,
             usrcommand /HADB/scripts/multinode_user.sh,              ...5
             termcmd_at_abort nouse,
             fence_reset nouse,                                       ...6
             fence_scsi use,                                          ...7
             fence_lan nouse;

[説明]

  1. このノードのリセット優先度を指定します。このノードは,セカンダリノードhadb02の次にリセット優先度を高くしたいため,3を指定します。

  2. patrolオペランドには,30以下の値を指定してください。

  3. HAモニタの監視パスとして使用するLANのホスト名を指定します。IPアドレス172.16.0.13に対応するホスト名path31を指定します。

  4. HAモニタの監視パスとして使用するLANのサービス名を指定します。ポート番号7777に対応するサービス名HAmon1を指定します。

  5. マルチノード機能で使用するユーザコマンドの絶対パスを指定します。

  6. 系のリセットを使用しないため,nouseを指定します。

  7. 共有ディスクのSCSIリザーブを使用するため,useを指定します。

(b) serversファイルの指定例(シングルパス構成の場合)

シングルパス構成の場合のserversファイルの指定例を説明します。

ここで説明している例は,ファイルシステムにext4を使用していることを前提としています。ext4以外のファイルシステムを使用する場合は,OSのmountコマンドのオプションがここで説明している例とは異なります。

プライマリノードhadb01serversファイルの指定例
server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/sys_hadb:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":       ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",              ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",        ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                                                     ...9
       fs_neck use:use,                                                     ...10
       scsi_device /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b53e0a:  ...11
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b6c44d:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b828e9:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b7d9fd:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b87793:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b8c6d3:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b9160f,
       initial online;                                                      ...12

[説明]

  1. サーバディレクトリの絶対パスを指定します。

  2. 次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

    • システムディレクトリ

    • 同義語辞書ファイルの格納ディレクトリ(同義語検索を行う場合に作成するディレクトリです)

  3. 2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

  4. 2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

  5. 2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

  6. マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

  7. マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

  8. マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

  9. 2.で示したディレクトリを作成するファイルシステムがあるVGに対しては,useを指定します。

  10. 2.で示したディレクトリを作成するファイルシステムに対しては,useを指定します。

  11. 次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

    • システムディレクトリを作成するファイルシステム

    • 同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

    • DBエリアファイル(作業表用DBエリアファイルを除く)

    プライマリノードおよびセカンダリノードで,絶対パスの指定順序を同じにしてください。

  12. プライマリノードとするため,onlineを指定します。

セカンダリノードhadb02serversファイルの指定例
server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/sys_hadb:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":       ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",              ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",        ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                                                     ...9
       fs_neck use:use,                                                     ...10
       scsi_device /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b53e0a:  ...11
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b6c44d:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b828e9:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b7d9fd:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b87793:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b8c6d3:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b9160f,
       initial standby,                                                     ...12
       standbypri 1;                                                        ...13

[説明]

  1. サーバディレクトリの絶対パスを指定します。

  2. 次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

    • システムディレクトリ

    • 同義語辞書ファイルの格納ディレクトリ(同義語検索を行う場合に作成するディレクトリです)

  3. 2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

  4. 2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

  5. 2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

  6. マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

  7. マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

  8. マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

  9. 2.で示したディレクトリを作成するファイルシステムがあるVGに対しては,useを指定します。

  10. 2.で示したディレクトリを作成するファイルシステムに対しては,useを指定します。

  11. 次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

    • システムディレクトリを作成するファイルシステム

    • 同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

    • DBエリアファイル(作業表用DBエリアファイルを除く)

    プライマリノードおよびセカンダリノードで,絶対パスの指定順序を同じにしてください。

  12. セカンダリノードとするため,standbyを指定します。

  13. プライマリノードの切り替えが発生した際,新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位をいちばん高くしたいため,1を指定します。

セカンダリノードhadb03serversファイルの指定例
server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/sys_hadb:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":       ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",              ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",       ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",        ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                                                     ...9
       fs_neck use:use,                                                     ...10
       scsi_device /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b53e0a:  ...11
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b6c44d:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b828e9:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b7d9fd:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b87793:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b8c6d3:
                   /dev/disk/by-id/scsi-3600605b0041db9c016ea34c3b1b9160f,
       initial standby,                                                     ...12
       standbypri 2;                                                        ...13

[説明]

  1. サーバディレクトリの絶対パスを指定します。

  2. 次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

    • システムディレクトリ

    • 同義語辞書ファイルの格納ディレクトリ(同義語検索を行う場合に作成するディレクトリです)

  3. 2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

  4. 2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

  5. 2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

  6. マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

  7. マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

  8. マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

  9. 2.で示したディレクトリを作成するファイルシステムがあるVGに対しては,useを指定します。

  10. 2.で示したディレクトリを作成するファイルシステムに対しては,useを指定します。

  11. 次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

    • システムディレクトリを作成するファイルシステム

    • 同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

    • DBエリアファイル(作業表用DBエリアファイルを除く)

    プライマリノードおよびセカンダリノードで,絶対パスの指定順序を同じにしてください。

  12. セカンダリノードとするため,standbyを指定します。

  13. プライマリノードの切り替えが発生した際,新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位は,ノードhadb02の次にしたいため,2を指定します。

(c) serversファイルの指定例(マルチパスソフトウェアによる冗長化構成の場合)

マルチパスソフトウェアによる冗長化構成の場合のserversファイルの指定例を説明します。

ここで説明している例は,ファイルシステムにext4を使用していることを前提としています。ext4以外のファイルシステムを使用する場合は,OSのmountコマンドのオプションがここで説明している例とは異なります。

プライマリノードhadb01serversファイルの指定例
server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/sys_hadb:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":   ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",          ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",   ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",    ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                   ...9
       fs_neck use:use,                   ...10
       dmmp_device /dev/mapper/mpath1:    ...11
                   /dev/mapper/mpath2:
                   /dev/mapper/mpath11:
                   /dev/mapper/mpath12:
                   /dev/mapper/mpath13:
                   /dev/mapper/mpath14:
                   /dev/mapper/mpath15,
       initial online;                    ...12

[説明]

  1. サーバディレクトリの絶対パスを指定します。

  2. 次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

    • システムディレクトリ

    • 同義語辞書ファイルの格納ディレクトリ(同義語検索を行う場合に作成するディレクトリです)

  3. 2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

  4. 2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

  5. 2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

  6. マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

  7. マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

  8. マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

  9. 2.で示したディレクトリを作成するファイルシステムがあるVGに対しては,useを指定します。

  10. 2.で示したディレクトリを作成するファイルシステムに対しては,useを指定します。

  11. 次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

    • システムディレクトリを作成するファイルシステム

    • 同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

    • DBエリアファイル(作業表用DBエリアファイルを除く)

    プライマリノードおよびセカンダリノードで,絶対パスの指定順序を同じにしてください。

  12. プライマリノードとするため,onlineを指定します。

セカンダリノードhadb02serversファイルの指定例
server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/sys_hadb:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":   ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",          ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",   ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",    ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                   ...9
       fs_neck use:use,                   ...10
       dmmp_device /dev/mapper/mpath1:    ...11
                   /dev/mapper/mpath2:
                   /dev/mapper/mpath11:
                   /dev/mapper/mpath12:
                   /dev/mapper/mpath13:
                   /dev/mapper/mpath14:
                   /dev/mapper/mpath15,
       initial standby,                   ...12
       standbypri 1;                      ...13

[説明]

  1. サーバディレクトリの絶対パスを指定します。

  2. 次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

    • システムディレクトリ

    • 同義語辞書ファイルの格納ディレクトリ(同義語検索を行う場合に作成するディレクトリです)

  3. 2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

  4. 2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

  5. 2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

  6. マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

  7. マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

  8. マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

  9. 2.で示したディレクトリを作成するファイルシステムがあるVGに対しては,useを指定します。

  10. 2.で示したディレクトリを作成するファイルシステムに対しては,useを指定します。

  11. 次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

    • システムディレクトリを作成するファイルシステム

    • 同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

    • DBエリアファイル(作業表用DBエリアファイルを除く)

    プライマリノードおよびセカンダリノードで,絶対パスの指定順序を同じにしてください。

  12. セカンダリノードとするため,standbyを指定します。

  13. プライマリノードの切り替えが発生した際,新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位をいちばん高くしたいため,1を指定します。

セカンダリノードhadb03serversファイルの指定例
server name /HADB/server,                         ...1
       alias HADB,
       acttype monitor,
       disk /dev/vg_hadb:                         ...2
            /dev/vg_hadb02,
       lan_updown use,
       fs_name /dev/vg_hadb/sys_hadb:             ...3
               /dev/vg_hadb02/hadb_syndict,
       fs_mount_dir /HADB/db/ADBSYS:              ...4
                    /mnt/syndict,
       fs_mount_opt "-t ext4 -o defaults,noatime,_netdev":   ...5
                    "-t ext4 -o defaults,noatime,_netdev",
       actcommand "/HADB/scripts/multinode_act.sh",          ...6
       termcommand "/HADB/scripts/multinode_term_scsi.sh",   ...7
       patrolcommand "/HADB/scripts/multinode_patrol.sh",    ...8
       servexec_retry 0,
       waitserv_exec yes,
       ip_neck use,
       uoc_neck nouse,
       vg_neck use:use,                   ...9
       fs_neck use:use,                   ...10
       dmmp_device /dev/mapper/mpath1:    ...11
                   /dev/mapper/mpath2:
                   /dev/mapper/mpath11:
                   /dev/mapper/mpath12:
                   /dev/mapper/mpath13:
                   /dev/mapper/mpath14:
                   /dev/mapper/mpath15,
       initial standby,                   ...12
       standbypri 2;                      ...13

[説明]

  1. サーバディレクトリの絶対パスを指定します。

  2. 次のディレクトリを作成するファイルシステムがあるVGの絶対パスを指定します。

    • システムディレクトリ

    • 同義語辞書ファイルの格納ディレクトリ(同義語検索を行う場合に作成するディレクトリです)

  3. 2.で示したディレクトリを作成するファイルシステムを構築したLVの絶対パスを指定します。

  4. 2.で示したディレクトリを作成するファイルシステムをマウントするマウントポイントの絶対パスを指定します。

  5. 2.で示したディレクトリを作成するファイルシステムをマウントするためのmountコマンドのオプションを指定します。

  6. マルチノード機能で使用するサーバの起動コマンドの絶対パスを指定します。

  7. マルチノード機能で使用するサーバの停止コマンドの絶対パスを指定します。

  8. マルチノード機能で使用するサーバの監視コマンドの絶対パスを指定します。

  9. 2.で示したディレクトリを作成するファイルシステムがあるVGに対しては,useを指定します。

  10. 2.で示したディレクトリを作成するファイルシステムに対しては,useを指定します。

  11. 次のファイルシステムおよびファイルがあるディスクの絶対パスを指定します。

    • システムディレクトリを作成するファイルシステム

    • 同義語辞書ファイルの格納ディレクトリを作成するファイルシステム

    • DBエリアファイル(作業表用DBエリアファイルを除く)

    プライマリノードおよびセカンダリノードで,絶対パスの指定順序を同じにしてください。

  12. セカンダリノードとするため,standbyを指定します。

  13. プライマリノードの切り替えが発生した際,新たにプライマリノードにするノードの優先順位を指定します。このノードの優先順位は,ノードhadb02の次にしたいため,2を指定します。

(d) コマンド用環境変数定義ファイルの指定例

コマンド用環境変数定義ファイルの指定例については,「(5) 各ファイルの指定例(系のリセットを使用する場合)」の「(c) コマンド用環境変数定義ファイルの指定例」を参照してください。

(e) ユーザコマンドファイルの指定例

ユーザコマンドファイルの指定例については,「(5) 各ファイルの指定例(系のリセットを使用する場合)」の「(d) ユーザコマンドファイルの指定例」を参照してください。

(f) サーバの起動コマンドファイルの指定例

サーバの起動コマンドファイルの指定例については,「(5) 各ファイルの指定例(系のリセットを使用する場合)」の「(e) サーバの起動コマンドファイルの指定例」を参照してください。

(g) サーバの停止コマンドファイルの指定例

この例では,サーバの停止コマンドを/HADB/scripts/multinode_term_scsi.shに格納しています。指定内容は,プライマリノードおよびセカンダリノードで同じにしてください。

■サーバの停止コマンドファイルの指定例
#!/bin/sh

# Sample of the termcommand for HADB

STS_ACTIVE="ACTIVE"
STS_STOP="STOP"
STS_STARTING="STARTING"
STS_STOPPING="STOPPING"
STS_ABORT="ABORT"
STS_QUIESCE="QUIESCE"
STS_OFFLINE="OFFLINE"
STS_CHGMODE="CHGMODE"
STS_STOPWAIT="STOPWAIT"
STS_COREDUMP="COREDUMP"
STS_FORCE="FORCE"
STS_MAINTNCE="MAINTNCE"

AWK=/bin/awk
ECHO=/bin/echo
GREP=/bin/grep
SU=/bin/su

# Setting environment variables for HADB
source /HADB/scripts/multinode.env      ...1

# Execute adbstop command
while :
do

  GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`

  case "$1" in
  "-e" )
    # Normal stop operations of primary node.
    # (when the monend command is executed.)
    if [ "$GET_STS" = "$STS_ACTIVE"   -o \
         "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o \
         "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o \
         "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
    then
      $SU - $ADBMGR -c "$ADBDIR/bin/adbstop --cancel"
      STOPRES=$?
      if [ "$STOPRES" = "0" -o "$STOPRES" = "4" ]
      then
        break
      fi
    elif [ "$GET_STS" = "$STS_STARTING" ]
    then
      break
    else
      break
    fi

    ;;
  "-w" )
    # Plan stop operations of primary node.
    # (When the monswap command is executed or a monitoring path failure occurs.)
    if [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o \
         "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o \
         "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o \
         "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_MAINTNCE" ]
    then
      $SU - $ADBMGR -c "$ECHO y|$ADBDIR/bin/adbstop --force"
      STOPRES=$?
      if [ "$STOPRES" = "0" -o "$STOPRES" = "4" ]
      then
        break
      fi
    else
      break
    fi

    ;;
  "-c" )
    break
    
    ;;
  esac

done

# stop HADB
if [ "$GET_STS" = "$STS_STARTING" ]
then
  ADB_ID=`$SU - $ADBMGR -c "ps x" | $GREP adbsrvd | $GREP -v $GREP | awk '{print $1}'`
  $SU - $ADBMGR -c "kill $ADB_ID"
  
  exit 0
fi

# Wait for end of HADB
while [ "$GET_STS" = "$STS_ACTIVE"   -o "$GET_STS" = "$STS_STARTING" -o \
        "$GET_STS" = "$STS_STOPPING" -o "$GET_STS" = "$STS_QUIESCE"  -o \
        "$GET_STS" = "$STS_OFFLINE"  -o "$GET_STS" = "$STS_CHGMODE"  -o \
        "$GET_STS" = "$STS_STOPWAIT" -o "$GET_STS" = "$STS_COREDUMP" -o \
        "$GET_STS" = "$STS_MAINTNCE" ]
do
  GET_STS=`$SU - $ADBMGR -c "$ADBDIR/bin/adbls -d srv 2>/dev/null" | $GREP -v SVID | $AWK '{ if ($1 ~ /[0-9]+/) { print $2 } else { print $1 } }'`
  sleep 1
done

exit 0

[説明]

  1. source文には,コマンド用環境変数定義ファイルの絶対パス/HADB/scripts/multinode.envを指定します。

(h) サーバの監視コマンドファイルの指定例

サーバの監視コマンドファイルの指定例については,「(5) 各ファイルの指定例(系のリセットを使用する場合)」の「(g) サーバの監視コマンドファイルの指定例」を参照してください。

(7) HAモニタの起動設定

OSの起動時に,自動的にHAモニタが起動するように設定してください。設定方法については,マニュアルHAモニタ Linux(R)(x86)編システムの起動からサーバの起動までを自動化するを参照してください。