Systemwalker Operation Managerを、MC/ServiceGuardのパッケージとして登録、制御、監視するための、以下のファイルおよびスクリプトを作成します。
パッケージ構成ファイル
パッケージ制御スクリプト
パッケージ監視スクリプト
パッケージ構成ファイルは、運用系、待機系のどちらかに作成します。
パッケージ制御スクリプトおよびパッケージ監視スクリプトは、運用系、待機系のそれぞれに作成し、同じディレクトリパス上に配置します。スクリプトファイルは、共有ディスクには作成しないでください。MC/ServiceGuardでは、セキュリティ上、/etc/cmcluster配下にディレクトリを作成し、格納することが推奨されています。スクリプトの作成後、実行権を必ず設定してください。
これらのファイルおよびスクリプトは、すべてサンプルが提供されています。複写後、環境に応じて変更してご利用ください。
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ノード存在する場合の変更例を以下に示します。
パッケージ構成ファイル1:omgr1.conf
PACKAGE_NAME:omgr1 NODE_NAME:hp01 NODE_NAME:hpsub RUN_SCRIPT:/etc/cmcluster/omgr/omgr1.sh HALT_SCRIPT:/etc/cmcluster/omgr/omgr1.sh SERVICE_NAME:service1
パッケージ構成ファイル2:omgr2.conf
PACKAGE_NAME:omgr2 NODE_NAME:hp02 NODE_NAME:hpsub RUN_SCRIPT:/etc/cmcluster/omgr/omgr2.sh HALT_SCRIPT:/etc/cmcluster/omgr/omgr2.sh SERVICE_NAME:service2
パッケージ構成ファイル3:omgr3.conf
PACKAGE_NAME:omgr3 NODE_NAME:hp03 NODE_NAME:hpsub RUN_SCRIPT:/etc/cmcluster/omgr/omgr3.sh HALT_SCRIPT:/etc/cmcluster/omgr/omgr3.sh SERVICE_NAME:service3
2ノード相互待機の場合の変更例
2ノード相互待機の場合は、ファイル名を変更してパッケージ構成ファイルを2個作成し、環境に合わせてそれぞれのファイルで情報を変更します。
変更例を以下に示します。
パッケージ構成ファイル1:omgr1.conf
PACKAGE_NAME:omgr1 NODE_NAME:hp01 NODE_NAME:hp02 RUN_SCRIPT:/etc/cmcluster/omgr/omgr1.sh HALT_SCRIPT:/etc/cmcluster/omgr/omgr1.sh SERVICE_NAME:service1
パッケージ構成ファイル2:omgr2.conf
PACKAGE_NAME:omgr2 NODE_NAME:hp02 NODE_NAME:hp01 RUN_SCRIPT:/etc/cmcluster/omgr/omgr2.sh HALT_SCRIPT:/etc/cmcluster/omgr/omgr2.sh SERVICE_NAME:service2
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のみクラスタ運用する場合の例です。
パッケージ制御スクリプトの、“SUBSYSTEM”の変数を“PLU_SUBSYSTEM”とし、値はサブシステム番号に変更します。1:1運用待機(サブシステムあり、一部クラスタ運用)の場合は、クラスタ運用するサブシステム番号だけを記述するよう変更します。
[変更前]
SUBSYSTEM="0"
[変更後]
1:1運用待機(サブシステムあり)の場合
PLU_SUBSYSTEM="0 1"
1:1運用待機(サブシステムあり、一部クラスタ運用)の場合
PLU_SUBSYSTEM="1"
ジョブスケジューラとジョブ実行制御をサブシステムごとに起動するように、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
ジョブスケジューラとジョブ実行制御がサブシステムごとに終了するように、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 `
customer_defined_halt_cmdsの最後にdone文を追加します。
[変更前]
fi cnt=`expr $cnt + 1` sleep 3 done
[変更後]
fi cnt=`expr $cnt + 1` sleep 3 done done
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ノード相互待機の場合の変更例
パッケージ制御スクリプトの、“SUBSYSTEM”の変数を“1”に変更します。
[変更前]
SUBSYSTEM="0"
[変更後]
SUBSYSTEM="1"
“- 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
変更後と同じ内容で、ファイル名を変更したパッケージ制御スクリプトをもう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ノード存在する場合の変更例を以下に示します。
パッケージ制御スクリプト1:omgr1.sh
VG[0]="vg01" LV[0]="/dev/vg01/lvol1" FS[0]="/disk1" IP[0]="111.111.111.111" SERVICE_NAME[0]="service1" SERVICE_CMD[0]= "/etc/cmcluster/omgr/omgr_fmonitor1"
パッケージ制御スクリプト2:omgr2.sh
VG[0]="vg02" LV[0]="/dev/vg02/lvol1" FS[0]="/disk1" IP[0]="111.111.111.112" SERVICE_NAME[0]="service2" SERVICE_CMD[0]= "/etc/cmcluster/omgr/omgr_fmonitor2"
パッケージ制御スクリプト3:omgr3.sh
VG[0]="vg03" LV[0]="/dev/vg03/lvol1" FS[0]="/disk1" IP[0]="111.111.111.113" SERVICE_NAME[0]="service3" SERVICE_CMD[0]= "/etc/cmcluster/omgr/omgr_fmonitor3"
2ノード相互待機の場合の変更例
2ノード相互待機の場合は、ファイル名を変更して2個作成したパッケージ制御スクリプトのそれぞれのファイルを、環境に合わせて変更します。
変更例を以下に示します。
パッケージ制御スクリプト1:omgr1.sh
VG[0]="vg01" LV[0]="/dev/vg01/lvol1" FS[0]="/disk1" IP[0]="111.111.111.111" SERVICE_NAME[0]="service1" SERVICE_CMD[0]= "/etc/cmcluster/omgr/omgr_fmonitor1"
パッケージ制御スクリプト2:omgr2.sh
VG[0]="vg02" LV[0]="/dev/vg02/lvol1" FS[0]="/disk2" IP[0]="111.111.111.112" SERVICE_NAME[0]="service2" SERVICE_CMD[0]= "/etc/cmcluster/omgr/omgr_fmonitor2"
パッケージ監視スクリプトを作成し、パッケージ制御スクリプトにパッケージ監視スクリプトファイルを指定することによって、クラスタシステムで動作する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のみクラスタ運用する場合の例です。
パッケージ監視スクリプトの、“SUBSYSTEM”の変数を“PLU_SUBSYSTEM”とし、値はサブシステム番号に変更します。1:1運用待機(サブシステムあり、一部クラスタ運用)の場合は、クラスタ運用するサブシステム番号だけを記述するよう変更します。
[変更前]
SUBSYSTEM="0"
[変更後]
1:1運用待機(サブシステムあり)の場合
PLU_SUBSYSTEM="0 1"
1:1運用待機(サブシステムあり、一部クラスタ運用)の場合
PLU_SUBSYSTEM="1"
サブシステムごとにデーモン監視するように、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 `
sleep 10 の前にdone文を追加します。
[変更前]
sleep 10 done
[変更後]
done sleep 10 done
N:1運用待機の場合の変更例
N:1運用待機の場合は、ファイル名を変更してパッケージ監視スクリプトをN個作成します。スクリプトのファイルは変更する必要はありません。
3ノード存在する場合の作成例を以下に示します。
パッケージ監視スクリプト1:omgr_fmonitor1
パッケージ監視スクリプト2:omgr_fmonitor2
パッケージ監視スクリプト3:omgr_fmonitor3
2ノード相互待機の場合の変更例
2ノード相互待機の場合は、スクリプトの編集、2個のスクリプトファイルの作成が必要です。
パッケージ監視スクリプトの、“SUBSYSTEM”の変数を“1”に変更します。
[変更前]
SUBSYSTEM="0"
[変更後]
SUBSYSTEM="1"
変更後と同じ内容で、ファイル名を変更したパッケージ制御スクリプトをもう1個用意して、“SUBSYSTEM”の変数を“2”に変更します。
[変更前]
SUBSYSTEM="1"
[変更後]
SUBSYSTEM="2"