ページの先頭行へ戻る
Systemwalker Operation Manager V17.0.1 クラスタ適用ガイド UNIX編

7.1.1 スクリプトの作成

Systemwalker Operation Managerを、MC/ServiceGuardのパッケージとして登録、制御、監視するための、以下のファイルおよびスクリプトを作成します。

パッケージ構成ファイルは、運用系、待機系のどちらかに作成します。

パッケージ制御スクリプトおよびパッケージ監視スクリプトは、運用系、待機系のそれぞれに作成し、同じディレクトリパス上に配置します。スクリプトファイルは、共有ディスクには作成しないでください。MC/ServiceGuardでは、セキュリティ上、/etc/cmcluster配下にディレクトリを作成し、格納することが推奨されています。スクリプトの作成後、実行権を必ず設定してください。

これらのファイルおよびスクリプトは、すべてサンプルが提供されています。複写後、環境に応じて変更してご利用ください。

7.1.1.1 パッケージ構成ファイルの作成

Systemwalker Operation Managerのジョブスケジューラデーモンおよびジョブ実行制御デーモンを、MC/ServiceGuardのアプリケーション・サービスとして定義する、パッケージ構成ファイルを作成します。

Systemwalker Operation Managerのパッケージ構成ファイルは、以下にサンプルが提供されています。

/opt/FHPJMCMN/etc/script/omgr.conf

サンプルを複写後、クラスタシステムの運用に合わせて、変更してご利用ください。

パッケージ構成ファイルは、1:1運用待機の場合には1個、N:1運用待機の場合はN個、2ノード相互待機の場合は2個作成する必要があります。

パッケージ構成ファイルの定義情報、および変更例を説明します。

パッケージ構成ファイルの定義情報

パッケージ構成ファイルを作成するために必要な情報、およびクラスタシステムの環境に合わせて変更する内容を記載します。サンプルは、MC/ServiceGuard A.11.09を例として記載しています。バージョンが違う場合は、MC/ServiceGuardのマニュアルを参照して、適用するクラスタのバージョンに対応した定義名を定義してください。

定義名

サンプルの内容

環境に合わせて変更する内容

PACKAGE_NAME

omgr

任意のパッケージ名を指定します。この名称がパッケージ名としてMC/ServiceGuardに認識されます。

FAILOVER_POLICY

CONFIGURED_NODE

FAILBACK_POLICY

MANUAL

NODE_NAME

hp01

運用系にするノード名を指定します。

NODE_NAME

hp02

待機系にするノード名を指定します。

RUN_SCRIPT

/etc/cmcluster/omgr/omgr.sh

パッケージ制御スクリプトの場所を指定します。

RUN_SCRIPT_TIMEOUT

NO_TIMEOUT

HALT_SCRIPT

/etc/cmcluster/omgr/omgr.sh

パッケージ制御スクリプトの場所を指定します。

HALT_SCRIPT_TIMEOUT

NO_TIMEOUT

SERVICE_NAME

service1

任意のサービス名を指定します。パッケージ制御スクリプトのSERVECE_NAME[0]=の内容と合わせてください。

SERVICE_FAIL_FAST_ENABLED

NO

SERVICE_HALT_TIMEOUT

300

SUBNET

xxx.xxx.xxx.xxx

サブネットアドレスを指定します。

PKG_SWITCHING_ENABLED

YES

NET_SWITCHING_ENABLED

YES

NODE_FAIL_FAST_ENABLED

NO

N:1運用待機の場合の変更例

N:1運用待機の場合は、ファイル名を変更してパッケージ構成ファイルをN個作成し、環境に合わせてそれぞれのファイルで情報を変更します。

3ノード存在する場合の変更例を以下に示します。

2ノード相互待機の場合の変更例

2ノード相互待機の場合は、ファイル名を変更してパッケージ構成ファイルを2個作成し、環境に合わせてそれぞれのファイルで情報を変更します。

変更例を以下に示します。

7.1.1.2 パッケージ制御スクリプトの作成

MC/ServiceGuardに登録したアプリケーション・サービスの実行、監視、障害への対応に関する情報を定義します。

Systemwalker Operation Managerのパッケージ制御スクリプトは、以下にサンプルが提供されています。

/opt/FHPJMCMN/etc/script/omgr.sh

サンプルを複写後、クラスタシステムの運用に合わせて、変更してご利用ください。

サンプルのパッケージ制御スクリプトは、1:1運用待機(サブシステムなし)用です。1:1運用待機(サブシステムあり)の場合、1:1運用待機(サブシステムあり、一部クラスタ運用)の場合、N:1運用待機および2ノード相互待機の場合は、変更が必要です。

ユーザ定義関数を変更したパッケージ制御スクリプトは、1:1運用待機の場合には1個、N:1運用待機の場合はN個、2ノード相互待機の場合は2個作成した後、パッケージ制御スクリプトの定義情報を実際の運用に合わせて変更する必要があります。

ユーザ定義関数の変更例およびパッケージ制御スクリプトの定義情報の変更例を説明します。

ユーザ定義関数の変更

1:1運用待機(サブシステムあり)の場合、1:1運用待機(サブシステムあり、一部クラスタ運用)の場合、N:1運用待機および2ノード相互待機の場合の、ユーザ定義関数の変更例を説明します。

1:1運用待機(サブシステムあり)、1:1運用待機(サブシステムあり、一部クラスタ運用)の場合の変更例

複数サブシステム運用を実施している場合、サブシステムごとにジョブスケジューラ、ジョブ実行制御のデーモンを起動/停止します。

以下は、1:1運用待機(サブシステムあり)においてサブシステム0とサブシステム1を運用している場合の例、および1:1運用待機(サブシステムあり、一部クラスタ運用)において、サブシステム0はクラスタ運用せずに、サブシステム1のみクラスタ運用する場合の例です。

  1. パッケージ制御スクリプトの、“SUBSYSTEM”の変数を“PLU_SUBSYSTEM”とし、値はサブシステム番号に変更します。1:1運用待機(サブシステムあり、一部クラスタ運用)の場合は、クラスタ運用するサブシステム番号だけを記述するよう変更します。

    [変更前]

    SUBSYSTEM="0"

    [変更後]

    1:1運用待機(サブシステムあり)の場合
    PLU_SUBSYSTEM="0 1"
    1:1運用待機(サブシステムあり、一部クラスタ運用)の場合
    PLU_SUBSYSTEM="1"
  2. ジョブスケジューラとジョブ実行制御をサブシステムごとに起動するように、customer_defined_run_cmdsの最後にfor文、do文、done文を追加します。

    [変更前]

    # - 1:1 standby, N:1 standby, 2 nodes mutual standby
    sh /opt/FHPMJS/usr/lib/mjes/S99MJS -sys $SUBSYSTEM
    sh /opt/FHPJOBSCH/bin/S99JOBSCH -sys $SUBSYSTEM

    [変更後]

    # - 1:1 standby, N:1 standby, 2 nodes mutual standby
    for SUBSYSTEM in $PLU_SUBSYSTEM
    do
    sh /opt/FHPMJS/usr/lib/mjes/S99MJS -sys $SUBSYSTEM
    sh /opt/FHPJOBSCH/bin/S99JOBSCH -sys $SUBSYSTEM
    done
  3. ジョブスケジューラとジョブ実行制御がサブシステムごとに終了するように、customer_defined_halt_cmdsの最初にfor文、do文を追加します。

    [変更前]

    function customer_defined_halt_cmds
    {
    # ADD customer defined halt commands.
    : # do nothing instruction, because a function must contain some command.
    
    MJSDAEMON=`ps -ef | grep "/usr/lib/mjes/mjsdaemon -sys $SUBSYSTEM" | grep -v "grep" | wc -l `

    [変更後]

    function customer_defined_halt_cmds
    {
    # ADD customer defined halt commands.
    : # do nothing instruction, because a function must contain some command.
    
    for SUBSYSTEM in $PLU_SUBSYSTEM
    do
    MJSDAEMON=`ps -ef | grep "/usr/lib/mjes/mjsdaemon -sys $SUBSYSTEM" | grep -v "grep" | wc -l `
  4. customer_defined_halt_cmdsの最後にdone文を追加します。

    [変更前]

    	    fi
    	    cnt=`expr $cnt + 1`
    	    sleep 3
    done

    [変更後]

    	      fi
    	      cnt=`expr $cnt + 1`
    	      sleep 3
    done
    done
  5. 1:1運用待機(サブシステムあり、一部クラスタ運用)の場合は、セキュリティ情報をサブシステムごとに自動反映するように、customer_defined_run_cmdsの最後にfor文、do文、done文を追加します。

    [変更前]

    # - 1:1 standby, N:1 standby
            /opt/FJSVfwseo/bin/mpaclcls
            sh /opt/FJSVfwseo/bin/jmacltrn.sh

    [変更後]

    # - 1:1 standby, N:1 standby
            for SUBSYSTEM in $PLU_SUBSYSTEM
            do
            /opt/FJSVfwseo/bin/mpaclcls -s $SUBSYSTEM
            sh /opt/FJSVfwseo/bin/jmacltrn.sh $SUBSYSTEM
            done

N:1運用待機の場合の変更例

N:1運用待機の場合は、シンボリックリンクをパッケージ制御スクリプトで設定、解除するように記載を変更します。

“Make symbolic links.(if N:1 standby)”および“# remove symbolic links.(if N:1 standby)”の部分のコメントを外します(“#”を削除します)。

[変更前]

# Make symbolic links.(if N:1 standby)
# ACL Manager
#if [ ! "(" -h "/var/opt/FJSVfwseo/JM" -o -f "/var/opt/FJSVfwseo/JM" ")" ]
#then
#   ln -s /disk1/FJSVfwseo/JM /var/opt/FJSVfwseo/JM
#fi
# Job Scheduler
#if [ ! "(" -h "/opt/FHPJOBSCH/db" -o -f "/opt/FHPJOBSCH/db" ")" ]
#then
#   ln -s /disk1/FHPJOBSCH /opt/FHPJOBSCH/db
#fi
# Job Execution Control
#if [ ! "(" -h "/var/spool/mjes" -o -f "/var/spool/mjes" ")" ]
#then
#   ln -s /disk1/FHPMJS/var/spool/mjes /var/spool/mjes
#fi
#if [ ! "(" -h "/etc/mjes" -o -f "/etc/mjes" ")" ]
#then
#   ln -s /disk1/FHPMJS/etc/mjes /etc/mjes
#fi
# Calendar
#if [ ! "(" -h "/opt/FHPjmcal/post" -o -f "/opt/FHPjmcal/post" ")" ]
#then
#   ln -s /disk1/FHPjmcal/post /opt/FHPjmcal/post
#fi
# Stem
#if [ ! "(" -h "/var/opt/FJSVstem" -o -f "/var/opt/FJSVstem" ")" ]
#then
#  ln -s /disk1/FJSVstem /var/opt/FJSVstem
#fi

(中略)

# remove symbolic links.(if N:1 standby)
# Job Scheduler
#if [ -h "/opt/FHPJOBSCH/db" ]
#then
#   rm /opt/FHPJOBSCH/db
#fi
# Job Execution Control
#if [ -h "/var/spool/mjes" ]
#then
#   rm /var/spool/mjes
#fi
#if [ -h "/etc/mjes" ]
#then
#   rm /etc/mjes
#fi
# ACL Manager
#/opt/FJSVfwseo/bin/mpaclcls -u
#if [ -h "/var/opt/FJSVfwseo/JM" ]
#then
#   rm /var/opt/FJSVfwseo/JM
#fi
# Calendar
#if [ -h "/opt/FHPjmcal/post" ]
#then
#   rm /opt/FHPjmcal/post
#fi
# Stem
#if [ -h "/var/opt/FJSVstem" ]
#then
#      rm /var/opt/FJSVstem
#fi

[変更後]

# Make symbolic links.(if N:1 standby)
# ACL Manager
if [ ! "(" -h "/var/opt/FJSVfwseo/JM" -o -f "/var/opt/FJSVfwseo/JM" ")" ]
then
   ln -s /disk1/FJSVfwseo/JM /var/opt/FJSVfwseo/JM
fi
# Job Scheduler
if [ ! "(" -h "/opt/FHPJOBSCH/db" -o -f "/opt/FHPJOBSCH/db" ")" ]
then
   ln -s /disk1/FHPJOBSCH /opt/FHPJOBSCH/db
fi
# Job Execution Control
if [ ! "(" -h "/var/spool/mjes" -o -f "/var/spool/mjes" ")" ]
then
   ln -s /disk1/FHPMJS/var/spool/mjes /var/spool/mjes
fi
if [ ! "(" -h "/etc/mjes" -o -f "/etc/mjes" ")" ]
then
   ln -s /disk1/FHPMJS/etc/mjes /etc/mjes
fi
# Calendar
if [ ! "(" -h "/opt/FHPjmcal/post" -o -f "/opt/FHPjmcal/post" ")" ]
then
   ln -s /disk1/FHPjmcal/post /opt/FHPjmcal/post
fi
# Stem  (注)
if [ ! "(" -h "/var/opt/FJSVstem" -o -f "/var/opt/FJSVstem" ")" ]
then
  ln -s /disk1/FJSVstem /var/opt/FJSVstem
fi

(中略)

# remove symbolic links.(if N:1 standby)
# Job Scheduler
if [ -h "/opt/FHPJOBSCH/db" ]
then
   rm /opt/FHPJOBSCH/db
fi
# Job Execution Control
if [ -h "/var/spool/mjes" ]
then
   rm /var/spool/mjes
fi
if [ -h "/etc/mjes" ]
then
   rm /etc/mjes
fi
# ACL Manager
/opt/FJSVfwseo/bin/mpaclcls -u
if [ -h "/var/opt/FJSVfwseo/JM" ]
then
   rm /var/opt/FJSVfwseo/JM
fi
# Calendar
if [ -h "/opt/FHPjmcal/post" ]
then
   rm /opt/FHPjmcal/post
fi
# Stem (注)
if [ -h "/var/opt/FJSVstem" ]
then
   rm /var/opt/FJSVstem
fi
備考.

“/disk1”は、実際の共有ディスクのマウントポイントに合わせて変更してください。

注)

マスタスケジュール管理機能が有効な場合のみコメントを外します。

2ノード相互待機の場合の変更例

  1. パッケージ制御スクリプトの、“SUBSYSTEM”の変数を“1”に変更します。

    [変更前]

    SUBSYSTEM="0"

    [変更後]

    SUBSYSTEM="1"
  2. “- 1:1 standby, N:1 standby”および“- 2 nodes mutual standby”の部分を、2ノード相互待機用に変更します (“#”の位置を変更します)。

    [変更前]

    # - 1:1 standby, N:1 standby
    /opt/FJSVfwseo/bin/mpaclcls
    sh /opt/FJSVfwseo/bin/jmacltrn.sh
    # - 2 nodes mutual standby
    #/opt/FJSVfwseo/bin/mpaclcls -s $SUBSYSTEM
    #sh /opt/FJSVfwseo/bin/jmacltrn.sh $SUBSYSTEM

    [変更後]

    # - 1:1 standby, N:1 standby
    #/opt/FJSVfwseo/bin/mpaclcls
    #sh /opt/FJSVfwseo/bin/jmacltrn.sh
    # - 2 nodes mutual standby
    /opt/FJSVfwseo/bin/mpaclcls -s $SUBSYSTEM
    sh /opt/FJSVfwseo/bin/jmacltrn.sh $SUBSYSTEM
  3. 変更後と同じ内容で、ファイル名を変更したパッケージ制御スクリプトをもう1個用意して、“SUBSYSTEM”の変数を“2”に変更します。

    [変更前]

    SUBSYSTEM="1"

    [変更後]

    SUBSYSTEM="2"

パッケージ制御スクリプトの定義情報

パッケージ制御スクリプトを作成するために必要な情報、およびクラスタシステムの環境に合わせて変更する内容を記載します。サンプルは、MC/ServiceGuard A.11.09を例として記載しています。バージョンが違う場合は、MC/ServiceGuardのマニュアルを参照して、適用するクラスタのバージョンに対応した定義名を定義してください。

定義名

サンプルの内容

環境に合わせて変更する内容

VGCHANGE

"vgchange -a e"

VG[0]

"vg02"

任意のボリュームグループ名を指定します。

LV[0]

"/dev/vg02/lvol1"

共有ディスクのデバイス装置を指定します。

FS[0]

"/disk1"

共有ディスクのマウントポイントを指定します。

FS_MOUNT_OPT[0]

""

FS_UMOUNT_COUNT

1

FS_MOUNT_RETRY_COUNT

0

IP[0]

"yyy.yyy.yyy.yyy"

論理IPアドレスを指定します。

SUBNET[0]

"xxx.xxx.xxx.xxx"

サブネットアドレスを指定します。

SERVICE_NAME[0]

"service1"

任意のサービス名を指定します。パッケージ構成ファイルのSERVICE_NAMEの内容と合わせてください。

SERVICE_CMD[0]

"/etc/cmcluster/omgr/omgr_fmonitor"

パッケージ監視スクリプトの場所を指定します。

SERVICE_RESTART[0]

"-r 0"

N:1運用待機の場合の変更例

N:1運用待機の場合は、ファイル名を変更してパッケージ制御スクリプトをN個作成し、環境に合わせてそれぞれのファイルで情報を変更します。

3ノード存在する場合の変更例を以下に示します。

2ノード相互待機の場合の変更例

2ノード相互待機の場合は、ファイル名を変更して2個作成したパッケージ制御スクリプトのそれぞれのファイルを、環境に合わせて変更します。

変更例を以下に示します。

7.1.1.3 パッケージ監視スクリプトの作成

パッケージ監視スクリプトを作成し、パッケージ制御スクリプトにパッケージ監視スクリプトファイルを指定することによって、クラスタシステムで動作するSystemwalker Operation Managerのデーモンを監視し、フェールオーバの契機をクラスタシステムに通知することができます。

Systemwalker Operation Managerのパッケージ監視スクリプトは、以下にサンプルが提供されています。

/opt/FHPJMCMN/etc/script/omgr_fmonitor

サンプルを複写後、クラスタシステムの運用に合わせて、変更してご利用ください。

サンプルは、ジョブスケジューラおよびジョブ実行制御のデーモンプロセスの実行状況を監視し、両方のデーモンプロセスが停止した場合に、フェールオーバするように記載しています。どちらかのデーモンプロセスのみ監視する運用の場合は、運用に合わせてサンプルを変更してください。

サンプルのパッケージ監視スクリプトは、1:1運用待機(サブシステムなし)用およびN:1運用待機用です。1:1運用待機(サブシステムあり)の場合、1:1運用待機(サブシステムあり、一部クラスタ運用)の場合、2ノード相互待機の場合は、変更が必要です。また、パッケージ監視スクリプトは、1:1運用待機の場合には1個、N:1運用待機の場合はN個、2ノード相互待機の場合は2個作成する必要があります。

パッケージ監視スクリプトの変更例を説明します。

1:1運用待機(サブシステムあり)、1:1運用待機(サブシステムあり、一部クラスタ運用)の場合の変更例

複数サブシステム運用を実施している場合、サブシステムごとにデーモン監視を行います。以下は、1:1運用待機(サブシステムあり)においてサブシステム0とサブシステム1を運用している場合の例、および1:1運用待機(サブシステムあり、一部クラスタ運用)において、サブシステム0はクラスタ運用せずに、サブシステム1のみクラスタ運用する場合の例です。

  1. パッケージ監視スクリプトの、“SUBSYSTEM”の変数を“PLU_SUBSYSTEM”とし、値はサブシステム番号に変更します。1:1運用待機(サブシステムあり、一部クラスタ運用)の場合は、クラスタ運用するサブシステム番号だけを記述するよう変更します。

    [変更前]

    SUBSYSTEM="0"

    [変更後]

    1:1運用待機(サブシステムあり)の場合
    PLU_SUBSYSTEM="0 1"
    1:1運用待機(サブシステムあり、一部クラスタ運用)の場合
    PLU_SUBSYSTEM="1"
  2. サブシステムごとにデーモン監視するように、while doのすぐ後にfor文とdo文を追加します。

    [変更前]

    while /bin/true
    do
    	    # - 1:1 standby, N:1 standby, 2 nodes mutual standby
    	    MJSDAEMON=`ps -ef | grep "/usr/lib/mjes/mjsdaemon -sys $SUBSYSTEM" | grep -v "grep" | wc -l `

    [変更後]

    while /bin/true
    do
    	    for SUBSYSTEM in $PLU_SUBSYSTEM
    	    do
    	    # - 1:1 standby, N:1 standby, 2 nodes mutual standby
    	    MJSDAEMON=`ps -ef | grep "/usr/lib/mjes/mjsdaemon -sys $SUBSYSTEM" | grep -v "grep" | wc -l `
  3. sleep 10 の前にdone文を追加します。

    [変更前]

    	    sleep 10
    done

    [変更後]

    	    done
    	    sleep 10
    done

N:1運用待機の場合の変更例

N:1運用待機の場合は、ファイル名を変更してパッケージ監視スクリプトをN個作成します。スクリプトのファイルは変更する必要はありません。

3ノード存在する場合の作成例を以下に示します。

2ノード相互待機の場合の変更例

2ノード相互待機の場合は、スクリプトの編集、2個のスクリプトファイルの作成が必要です。

  1. パッケージ監視スクリプトの、“SUBSYSTEM”の変数を“1”に変更します。

    [変更前]

    SUBSYSTEM="0"

    [変更後]

    SUBSYSTEM="1"
  2. 変更後と同じ内容で、ファイル名を変更したパッケージ制御スクリプトをもう1個用意して、“SUBSYSTEM”の変数を“2”に変更します。

    [変更前]

    SUBSYSTEM="1"

    [変更後]

    SUBSYSTEM="2"