ここでは、Sun Cluster HA for WebSphere MQ のインストールと構成の計画について説明します。
広域ファイルシステムは /global、フェイルオーバーファイルシステムは /local という接頭辞を指定してマウントすることをお勧めします。
ここでは、Sun Cluster HA for WebSphere MQ にのみ適用されるソフトウェアとハードウェア構成の制限事項を示します。すべてのデータサービスに適用される制限事項については、『Sun Cluster Release Notes』を参照してください。
これらの制限事項を守らないと、データサービスの構成がサポートされない場合があります。
Sun Cluster HA for WebSphere MQ データサービスは、フェイルオーバーサービスとしてのみ構成できます – WebSphere MQ はスケーラブルなサービスとしては運用できないため、Sun Cluster HA for WebSphere MQ データサービスは、フェイルオーバーサービスとして運用するようにのみ構成できます。
/var/mqm を広域ファイルシステムとしてマウント – WebSphere MQ Manager を複数インストールする場合は、/var/mqm を広域ファイルシステムとしてマウントする必要があります。
/var/mqm を広域ファイルシステムとしてマウントしたあと、WebSphere MQ が動作する Sun Cluster 内の各ノード上のローカルファイルシステムに対して、/var/mqm/qmgrs/@SYSTEM のシンボリックリンクを作成する必要もあります。例を示します。
# mkdir -p /var/mqm_local/qmgrs/@SYSTEM # mkdir -p /var/mqm/qmgrs # ln -s /var/mqm_local/qmgrs/@SYSTEM /var/mqm/qmgrs/@SYSTEM # |
この制約が生じるのは、WebSphere MQ がキーを使用して内部制御構造を作成するからです。これらのキーは ftok() 関数呼び出しから生成され、各ノード上で一意である必要があります。ローカルファイルシステムに対する /var/mqm/qmgrs/@SYSTEM のシンボリックリンクを使用して、/var/mqm を広域ファイルシステムとしてマウントすると、生成される共有メモリーセグメントのキーは各ノード上で一意になります。
/var/mqm/qmgrs/@SYSTEM のシンボリックリンクを設定する前に Queue Manager を作成した場合、シンボリックリンクを作成する前に権限を使用して、/var/mqm/qmgrs/@SYSTEM の内容を /var/mqm_local/qmgrs/@SYSTEM にコピーする必要があります。また、この作業の前にはすべての Queue Manager を停止する必要があります。
/var/mqm をフェイルオーバーファイルシステムとしてマウント – WebSphere MQ Manager を 1 つだけインストールする場合は、/var/mqm をフェイルオーバーファイルシステムとしてマウントできます。ただし、/var/mqm を広域ファイルシステムとしてマウントして、将来複数の WebSphere MQ Manager をインストールできるようにすることをお勧めします。
フェイルオーバーファイルシステムを備えた複数の WebSphere MQ Manager – すでに説明したように、複数の WebSphere MQ Manager をインストールする場合、/var/mqm を広域ファイルシステムとしてマウントする必要があります。ただし、/var/mqm からフェイルオーバーファイルシステムへのシンボリックリンクを介して、各 Queue Manager のデータファイルはフェイルオーバーファイルシステムとしてマウントできます。例 1 を参照してください。
広域ファイルシステムを備えた複数の WebSphere MQ Manager – すでに説明したように、複数の WebSphere MQ Manager をインストールする場合、/var/mqm を広域ファイルシステムとしてマウントする必要があります。ただし、各 Queue Manager のデータファイルは、広域ファイルシステムとしてマウントできます。例 2 を参照してください。
WebSphere MQ をクラスタファイルシステムにインストール – WebSphere MQ 製品は最初、 /opt/mqm および /var/mqm にインストールされます。WebSphere MQ Manager の作成時に、作成されるデフォルトのディレクトリは /var/mqm/qmgrs/<qmgr_name> および /var/mqm/log/<qmgr_name> です。pkgadd mqm を実行する前に、 WebSphere MQ が動作する Sun Cluster 内のすべてのノード上で、これらの位置をフェイルオーバーファイルシステムと広域ファイルシステムのいずれかとしてマウントする必要があります。
例 1 に、フェイルオーバーファイルシステムを備えた 2 つの WebSphere MQ Manager を示します。/var/mqm は、シンボリックリンクを介して、広域ファイルシステムとしてマウントされます。WebSphere MQ の /etc/vfstab エントリのサブセットが表示されます。
例 2 に、広域フェイルオーバーファイルシステムを備えた 2 つの WebSphere MQ Manager を示します。/var/mqm は、シンボリックリンクを介して、広域ファイルシステムとしてマウントされます。WebSphere MQ の /etc/vfstab エントリのサブセットが表示されます。
# ls -l /var/mqm lrwxrwxrwx 1 root other 11 Sep 17 16:53 /var/mqm -> /global/mqm # # ls -l /global/mqm/qmgrs total 6 lrwxrwxrwx 1 root other 512 Sep 17 09:57 @SYSTEM -> /var/mqm_local/qmgrs/@SYSTEM lrwxrwxrwx 1 root other 22 Sep 17 17:19 qmgr1 -> /local/mqm/qmgrs/qmgr1 lrwxrwxrwx 1 root other 22 Sep 17 17:19 qmgr2 -> /local/mqm/qmgrs/qmgr2 # # ls -l /global/mqm/log total 4 lrwxrwxrwx 1 root other 20 Sep 17 17:18 qmgr1 -> /local/mqm/log/qmgr1 lrwxrwxrwx 1 root other 20 Sep 17 17:19 qmgr2 -> /local/mqm/log/qmgr2 # # more /etc/vfstab (Subset of the output) /dev/md/dg_d3/dsk/d30 /dev/md/dg_d3/rdsk/d30 /global/mqm ufs 3 yes logging,global /dev/md/dg_d3/dsk/d33 /dev/md/dg_d3/rdsk/d33 /local/mqm/qmgrs/qmgr1 ufs 4 no logging /dev/md/dg_d3/dsk/d36 /dev/md/dg_d3/rdsk/d36 /local/mqm/log/qmgr1 ufs 4 no logging /dev/md/dg_d4/dsk/d43 /dev/md/dg_d4/rdsk/d43 /local/mqm/qmgrs/qmgr2 ufs 4 no logging /dev/md/dg_d4/dsk/d46 /dev/md/dg_d4/rdsk/d46 /local/mqm/log/qmgr2 ufs 4 no logging # |
# ls -l /var/mqm lrwxrwxrwx 1 root other 11 Jan 8 14:17 /var/mqm -> /global/mqm # # ls -l /global/mqm/qmgrs total 6 lrwxrwxrwx 1 root other 512 Dec 16 09:57 @SYSTEM -> /var/mqm_local/qmgrs/@SYSTEM drwxr-xr-x 4 root root 512 Dec 18 14:20 qmgr1 drwxr-xr-x 4 root root 512 Dec 18 14:20 qmgr2 # # ls -l /global/mqm/log total 4 drwxr-xr-x 4 root root 512 Dec 18 14:20 qmgr1 drwxr-xr-x 4 root root 512 Dec 18 14:20 qmgr2 # # more /etc/vfstab (Subset of the output) /dev/md/dg_d4/dsk/d40 /dev/md/dg_d4/rdsk/d40 /global/mqm ufs 3 yes logging,global /dev/md/dg_d4/dsk/d43 /dev/md/dg_d4/rdsk/d43 /global/mqm/qmgrs/qmgr1 ufs 4 yes logging,global /dev/md/dg_d4/dsk/d46 /dev/md/dg_d4/rdsk/d46 /global/mqm/log/qmgr1 ufs 4 yes logging,global /dev/md/dg_d5/dsk/d53 /dev/md/dg_d5/rdsk/d53 /global/mqm/qmgrs/qmgr2 ufs 4 yes logging,global /dev/md/dg_d5/dsk/d56 /dev/md/dg_d5/rdsk/d56 /global/mqm/log/qmgr2 ufs 4 yes logging,global |
ここで説明する要件が適用されるのは、Sun Cluster HA for WebSphere MQ に限られます。Sun Cluster HA for WebSphere MQ のインストールと構成を始める前に、次の要件を満たしておく必要があります。
次の要件を満たさないと、データサービスの構成がサポートされない場合があります。
WebSphere MQ コンポーネントと依存関係 — Sun Cluster HA for WebSphere MQ データサービスは、WebSphere MQ インスタンスとそれぞれのコンポーネントを保護するように構成できます。ここでは、このようなコンポーネントとその依存関係について説明します。
構成要素 |
説明 |
---|---|
Queue Manager (必須) |
-> SUNW.HAStoragePlus リソース SUNW.HAStoragePlus リソースは、WebSphere MQ ファイルシステムのマウントポイントを管理し、WebSphere MQ がマウント後に起動することを保証します。 |
Channel Initiator (任意) |
-> Queue_Manager および Listener リソース Listener に依存しなければならないのは、inetd の代わりに runmqlsr を使用する場合だけです。 デフォルトでは、WebSphere MQ が Channel Initiator を起動します。ただし、デフォルト (SYSTEM.CHANNEL.INITQ) 以外の別のチャネル開始キューが必要な場合は、このコンポーネントを配備するべきです。 |
Command Server (任意l) |
-> Queue_Manager および Listener リソース Listener に依存しなければならないのは、inetd の代わりに runmqlsr を使用する場合だけです。 このコンポーネントは、コマンドキューに送られたコマンドを処理するために WebSphere MQ が必要な場合です。 |
Listener (任意) |
->Queue_Manager リソース このコンポーネントを配備するのは、専用のリスナー (runmqlsr) が必要で、inetd リスナーを使用しない場合です。 |
Trigger Monitor (任意) |
->Queue_Manager および Listener リソース Listener に依存しなければならないのは、inetd の代わりに runmqlsr を使用する場合だけです。 このコンポーネントを配備するのは、トリガーモニターが必要な場合です。 |
各 WebSphere MQ コンポーネントの詳細は、IBM の WebSphere MQ Application Programming マニュアルを参照してください。
各 WebSphere MQ コンポーネントは、/opt/SUNWscmqs/xxx/util に構成/登録ファイルがあります。xxx は個々の WebSphere MQ コンポーネントを表す 3 文字の略語です。これらのファイルによって、Sun Cluster に WebSphere MQ コンポーネントを登録できます。
これらのファイル内では、適切な依存関係が適用されます。
# cd /opt/SUNWscmqs # # ls -l chi/util total 4 -rwxr-xr-x 1 root sys 720 Dec 20 14:44 chi_config -rwxr-xr-x 1 root sys 586 Dec 20 14:44 chi_register # # ls -l csv/util total 4 -rwxr-xr-x 1 root sys 645 Dec 20 14:44 csv_config -rwxr-xr-x 1 root sys 562 Dec 20 14:44 csv_register # # ls -l lsr/util total 4 -rwxr-xr-x 1 root sys 640 Dec 20 14:44 lsr_config -rwxr-xr-x 1 root sys 624 Dec 20 14:44 lsr_register # # ls -l mgr/util total 4 -rwxr-xr-x 1 root sys 603 Dec 20 14:44 mgr_config -rwxr-xr-x 1 root sys 515 Dec 20 14:44 mgr_register # # ls -l trm/util total 4 -rwxr-xr-x 1 root sys 717 Dec 20 14:44 trm_config -rwxr-xr-x 1 root sys 586 Dec 20 14:44 trm_register # # # more mgr/util/* :::::::::::::: mgr_config :::::::::::::: # # Copyright 2003 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # This file will be sourced in by mgr_register and the parameters # listed below will be used. # # These parameters can be customized in (key=value) form # # RS - name of the resource for the application # RG - name of the resource group containing RS # QMGR - name of the Queue Manager # PORT - name of the Queue Manager port number # LH - name of the LogicalHostname SC resource # HAS_RS - name of the Queue Manager HAStoragePlus SC resource # CLEANUP - Cleanup IPC entries YES or NO (Default CLEANUP=YES) # USERID - name of userid to issue strmqm/endmqm commands # (Default USERID=mqm) # # +++ Optional parameters +++ # # DB2INSTANCE - name of the DB2 Instance name # ORACLE_HOME - name of the Oracle Home Directory # ORACLE_SID - name of the Oracle SID # START_CMD - pathname and name of the renamed strmqm program # STOP_CMD - pathname and name of the renamed endmqm program # # Note 1: Optional parameters # # Null entries for optional parameters are allowed if not used. # # Note 2: XAResourceManager processing # # If DB2 will participate in global units of work then set # DB2INSTANCE= # # If Oracle will participate in global units of work then set # ORACLE_HOME= # ORACLE_SID= # # Note 3: Renamed strmqm/endmqm programs # # This is only recommended if WebSphere MQ is deployed onto # Global File Systems for qmgr/log files. You should specify # the full pathname/program, i.e. /opt/mqm/bin/<renamed_strmqm> # # Note 4: Cleanup IPC # # Under normal shutdown and startup WebSphere MQ manages it's # cleanup of IPC resources with the following fix packs. # # MQSeries v5.2 Fix Pack 07 (CSD07) or later # WebSphere MQ v5.3 Fix Pack 04 (CSD04) or later # # Please refer to APAR number IY38428. # # However, while running in a failover environment, the IPC keys # that get generated will be different between nodes. As a result # after a failover of a Queue Manager, some shared memory segments # can remain allocated on the node although not used. # # Although this does not cause WebSphere MQ a problem when starting # or stopping (with the above fix packs applied), it can deplete # the available swap space and in extreme situations a node may # run out of swap space. # # To resolve this issue, setting CLEANUP=YES will ensure that # IPC shared memory segments for WebSphere MQ are removed whenever # a Queue Manager is stopped. However IPC shared memory segments # are only removed under strict conditions, namely # # - The shared memory segment(s) are owned by # CREATOR=mqm and CGROUP=mqm # - The shared memory segment has no attached processes # - The CPID and LPID process ids are not running # - The shared memory removal is performed by userid mqm # # Setting CLEANUP=NO will not remove any shared memory segments. # # Setting CLEANUP=YES will cleanup shared memory segments under the # conditions described above. # RS= RG= QMGR= PORT= LH= HAS_RS= CLEANUP=YES USERID=mqm DB2INSTANCE= ORACLE_HOME= ORACLE_SID= START_CMD= STOP_CMD= :::::::::::::: mgr_register :::::::::::::: # # Copyright 2003 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . `dirname $0`/mgr_config scrgadm -a -j $RS -g $RG -t SUNW.gds \ -x Start_command="/opt/SUNWscmqs/mgr/bin/start-qmgr \ -R $RS -G $RG -Q $QMGR -C $CLEANUP \ -U $USERID -D '$DB2INSTANCE' -O '$ORACLE_HOME' -I '$ORACLE_SID' \ -S '$START_CMD' -E '$STOP_CMD' " \ -x Stop_command="/opt/SUNWscmqs/mgr/bin/stop-qmgr \ -R $RS -G $RG -Q $QMGR -C $CLEANUP \ -U $USERID -D '$DB2INSTANCE' -O '$ORACLE_HOME' -I '$ORACLE_SID' \ -S '$START_CMD' -E '$STOP_CMD' " \ -x Probe_command="/opt/SUNWscmqs/mgr/bin/test-qmgr \ -R $RS -G $RG -Q $QMGR -C $CLEANUP \ -U $USERID -D '$DB2INSTANCE' -O '$ORACLE_HOME' -I '$ORACLE_SID' \ -S '$START_CMD' -E '$STOP_CMD' " \ -y Port_list=$PORT/tcp -y Network_resources_used=$LH \ -x Stop_signal=9 \ -y Resource_dependencies=$HAS_RS # |
WebSphere MQ Manager の保護—
WebSphere MQ インスタンス、すなわち /global/mqm/qmgrs/<qmgr> および /global/mqm/log/<qmgr> に広域ファイルシステムを使用している場合、WebSphere MQ は Sun Cluster 内の別のノード上ですでに Queue Manager が稼働しているかどうかを判別できません。
通常は使用しているクラスタファイルシステム (すなわち FFS なのか GFS なのか) に関係なく、Sun Cluster HA for WebSphere MQ データサービスが Queue Manager の起動と停止を管理します。
しかし、WebSphere MQ インスタンスが広域ファイルシステム上で稼働しているときに、 だれかが Sun Cluster 内の別のノードで Queue Manager を手動で起動する可能性もあります。
この問題は IBM に報告済みであり、現在、修正作業中です。
この問題を回避する方法は 2つあります。
WebSphere MQ インスタンスにフェイルオーバーファイルシステムを使用します。
WebSphere MQ インスタンスファイルをマウントできるのが、1 時点で 1 ノードだけになるので、この方法を推奨します。この構成の場合、WebSphere MQ は Queue Manager が稼働しているかどうかを判別できます。
strmqm/endmqm にシンボリックリンクを作成して check-start (提供スクリプト) を実行します。
/opt/SUNWscmqs/mgr/bin/check-start によって、WebSphere MQ Manager が起動または停止されることがないよう防止されます。
check-start スクリプトは、WebSphere MQ Manager が Sun Cluster によって起動または停止されることを確認し、手動で WebSphere MQ Manager の起動または停止が試行されるとエラーを報告します。
例 3 に、WebSphere MQ Manager を手動で起動しようとする場合を示します。応答は check-start スクリプトによって生成されています。
Sun Cluster HA for WebSphere MQ データサービスのホストとなるクラスタノードごとに、この作業を行う必要があります。crtmqm が代わりに strmqm と endmqm を呼び出すので、Queue Manager を作成するまではこの手順を実行しないでください。
この回避方法を採用した場合、WebSphere MQ のメンテナンスが必要になるたびに、元に戻さなければなりません。その後、再びこの回避方法を適用する必要があります。WebSphere MQ が修正されるまでの間は、WebSphere MQ インスタンスにフェイルオーバーファイルシステムを使用するよう推奨します。
# strmqm qmgr1 # Request to run </usr/bin/strmqm qmgr1> within SC3.0 has been refused # |
この方法を使用しなければならないのは、WebSphere MQ インスタンスに広域ファイルシステムが必要な場合だけです。例 4 に、この場合に必要な手順の詳細を示します。
# cd /opt/mqm/bin # # mv strmqm strmqm_sc3 # mv endmqm endmqm_sc3 # # ln -s /opt/SUNWscmqs/mgr/bin/check-start strmqm # ln -s /opt/SUNWscmqs/mgr/bin/check-start endmqm # |
/opt/SUNWscmqs/mgr/etc/configファイルを編集し、START_COMMAND と STOP_COMMAND の以下のエントリを変更します。この例では、_sc3 を使用してコマンド名に接尾辞を追加しています。別の名前も選択できます。
# cat /opt/SUNWscmqs/mgr/etc/config # Copyright 2003 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # Usage: # DEBUG=<RESOURCE_NAME> or ALL # START_COMMAND=/opt/mqm/bin/<renamed_strmqm_program> # STOP_COMMAND=/opt/mqm/bin/<renamed_endmqm_program> # DEBUG= START_COMMAND=/opt/mqm/bin/strmqm_sc3 STOP_COMMAND=/opt/mqm/bin/endmqm_sc3 # |