Monday, September 10, 2012

MQ Series: Configuration - Linux


Configuration


Prepare Share Storage for MQ Multi-Instance

Mount nfs volume to the servers for shared file system.
nfsserver:/vol/mqshare/GW  to  mqsvr01 and mqsvr02
nfsserver:/vol/mqshare/QM1 to  mqsvr03 and mqsvr04
nfsserver:/vol/mqshare/QM2 to  mqsvr05 and mqsvr06

7.3 Configure MQ Multi-Instance
7.3.1 Verify MQ Shared File System
NOTE: Execute following steps as user “mqm”
• Run amqmfsck on both App server per site (mqsvr01, mqsvr02), (mqsvr03, mqsvr04) (mqsvr05, mqsvr06)
amqmfsck /var/mqm/share
The tests on the directory completed successfully.
• Run amqmfsck -c
NOTE: Run on BOTH App server per site (mqsvr01, mqsvr02), (mqsvr03, mqsvr04) (mqsvr05, mqsvr06) at the SAME TIME
amqmfsck -c /var/mqm/share
Writing to test file. This will normally complete within about 60 seconds.
...........................................................
The tests on the directory completed successfully.
• Run amqmfsck -w
NOTE: Run on BOTH App server per site (mqsvr01, mqsvr02), (mqsvr03, mqsvr04) (mqsvr05, mqsvr06) at the SAME TIME
On one node you should see “File lock acquired” while on other node, it’s “Waiting for the file lock”
Hit Enter on the node which gets the file lock to release the lock. On the other node, you should see “File lock acquired”
amqmfsck -w /var/mqm/share
Start a second copy of this program with the same parameters on another server.
File lock acquired.
Press Enter or terminate this process to release the lock.
File lock released.
The tests on the directory completed successfully.
amqmfsck -w /var/mqm/share
Waiting for the file lock.
Waiting for the file lock.
Waiting for the file lock.
Waiting for the file lock.
Waiting for the file lock.
Waiting for the file lock.
File lock acquired.
Press Enter or terminate this process to release the lock.
File lock released.
The tests on the directory completed successfully.
7.3.2 Configure MQ Multi-Instance for ART MQ GateWay:
NOTE: Execute following steps as user “mqm”
• Create folder for MQ instance
mkdir -p /var/mqm/share/log
mkdir -p /var/mqm/share/qmgrs
• Create MQ instance on GW (mqsvr01)
crtmqm -ll -lf 32000 -lp 10 -ls 3 -u DL.ART.POCGW.QMGR01.DEAD.LETTER.QUEUE  \
-ld /var/mqm/share/log -md /var/mqm/share/qmgrs ART.POCGW.QMGR01

WebSphere MQ queue manager created.
Directory '/var/mqm/share/qmgrs/ART!POCGW!QMGR01' created.
Creating or replacing default objects for ART.POCGW.QMGR01.
Default objects statistics : 65 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.
• Verify MQ instance on (mqsvr01)
strmqm ART.POCGW.QMGR01
WebSphere MQ queue manager 'ART.POCGW.QMGR01' starting.
11 log records accessed on queue manager 'ART.POCGW.QMGR01' during the log replay phase.
Log replay for queue manager 'ART.POCGW.QMGR01' complete.
Transaction manager state recovered for queue manager 'ART.POCGW.QMGR01'.
WebSphere MQ queue manager 'ART.POCGW.QMGR01' started.
dspmq
QMNAME(ART.POCGW.QMGR01)                                  STATUS(Running)
• Stop MQ instance on (mqsvr01)
endmqm ART.POCGW.QMGR01

Quiesce request accepted. The queue manager will stop when all outstanding work
is complete.
dspmq
QMNAME(ART.POCGW.QMGR01)                    STATUS(Ended normally)
• Verify MQ instance on (mqsvr01) with Multi-Instance Mode
strmqm -x ART.POCGW.QMGR01  

WebSphere MQ queue manager 'ART.POCGW.QMGR01' starting.
11 log records accessed on queue manager 'ART.POCGW.QMGR01' during the log replay phase.
Log replay for queue manager 'ART.POCGW.QMGR01' complete.
Transaction manager state recovered for queue manager 'ART.POCGW.QMGR01'.
WebSphere MQ queue manager 'ART.POCGW.QMGR01' started.

dspmq -x -m ART.POCGW.QMGR01
QMNAME(CTPQMGR1)                                          STATUS(Running)
    INSTANCE(ctp-bcclprapp03) MODE(Active)
• Start Listener for MQ instance on (mqsvr01)
NOTE: Change the port 1415 to production value
nohup runmqlsr -p 1414 -t tcp -m ART.POCGW.QMGR01 > /dev/null 2>&1 &

• Import MQ instance on (mqsvr02)
addmqinf -v Name= ART.POCGW.QMGR01 -v Directory= ART.POCGW.QMGR01 -v Prefix=/var/mqm \
-v DataPath=/var/mqm/share/qmgrs/ ART.POCGW.QMGR01
WebSphere MQ configuration information added.
• Verify MQ instance configuration on BOTH servers (mqsvr01 and mqsvr02)
NOTE: the output should be identical
dspmqinf ART.POCGW.QMGR01
QueueManager:
   Name=ART.POCGW.QMGR01
   Directory=ART!POCGW!QMGR01
   Prefix=/var/mqm
   DataPath=/var/mqm/share/qmgrs/ART!POCGW!QMGR01
• Start MQ instance on mqsvr02 with Multi-Instance Mode
strmqm -x ART.POCGW.QMGR01
WebSphere MQ queue manager 'CTPQMGR1' starting.
A standby instance of queue manager 'CTPQMGR1' has been started. The active
instance is running elsewhere.
• Check MQ instance on Both server (mqsvr01 and mqsvr02)
dspmq -x -m ART.POCGW.QMGR01
QMNAME(CTPQMGR1)                                          STATUS(Running as standby)
    INSTANCE(ctp-bcclprapp03) MODE(Active)
    INSTANCE(ctp-bcclprapp04) MODE(Standby)
• Start Listener for MQ instance on mqsvr02
NOTE: Change the port 1415 to production value
nohup runmqlsr -p 1414 -t tcp -m ART.POCGW.QMGR01 > /dev/null 2>&1 &
7.3.3 Verify Multi-Instance Failover
• Stop MQ instance on the Active node (mqsvr01)
endmqm -s ART.POCGW.QMGR01
Quiesce request accepted. The queue manager will stop when all outstanding work
is complete, permitting switchover to a standby instance.

dspmq -x -m ART.POCGW.QMGR01
QMNAME(ART.POCGW.QMGR01)                                  STATUS(Quiescing)
    INSTANCE(mqsvr01) MODE(Active)
    INSTANCE(mqsvr02) MODE(Standby)

dspmq -x -m ART.POCGW.QMGR01
QMNAME(ART.POCGW.QMGR01)                                  STATUS(Running elsewhere)
    INSTANCE(mqsvr02) MODE(Active)
7.3.4 Configure MQ for JMS
• Run following on the Active Node of MQ as mqm
runmqsc ART.POCGW.QMGR01 < /opt/mqm/java/bin/MQJMS_PSQ.mqsc

8 MQSC commands read.
No commands have a syntax error.
All valid MQSC commands were processed.
7.3.5 Configure MQ Multi-Instance for ART MQ B1
NOTE: Execute following steps as user “mqm”
• Create folder for MQ instance
mkdir -p /var/mqm/share/log
mkdir -p /var/mqm/share/qmgrs
• Create MQ instance on GW (mqsvr03)
crtmqm -ll -lf 32000 -lp 10 -ls 3 -u DL.ART.POCB1.QMGR01.DEAD.LETTER.QUEUE  \
-ld /var/mqm/share/log -md /var/mqm/share/qmgrs ART.POCB1.QMGR01

WebSphere MQ queue manager created.
Directory '/var/mqm/share/qmgrs/ART!POCB1!QMGR01' created.
Creating or replacing default objects for ART.POCB1.QMGR01.
Default objects statistics : 65 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.
• Verify MQ instance on (mqsvr03)
strmqm ART.POCB1.QMGR01
WebSphere MQ queue manager 'ART.POCB1.QMGR01' starting.
11 log records accessed on queue manager 'ART.POCB1.QMGR01' during the log replay phase.
Log replay for queue manager 'ART.POCB1.QMGR01' complete.
Transaction manager state recovered for queue manager 'ART.POCB1.QMGR01'.
WebSphere MQ queue manager 'ART.POCB1.QMGR01' started.
dspmq
QMNAME(ART.POCB1.QMGR01)                      STATUS(Running)
• Stop MQ instance on (mqsvr03)
endmqm ART.POCB1.QMGR01

Quiesce request accepted. The queue manager will stop when all outstanding work
is complete.
dspmq
QMNAME(ART.POCB1.QMGR01)               STATUS(Ended normally)
• Verify MQ instance on (mqsvr03) with Multi-Instance Mode
strmqm -x ART.POCB1.QMGR01  

WebSphere MQ queue manager 'ART.POCB1.QMGR01' starting.
11 log records accessed on queue manager 'ART.POCB1.QMGR01' during the log replay phase.
Log replay for queue manager 'ART.POCB1.QMGR01' complete.
Transaction manager state recovered for queue manager 'ART.POCB1.QMGR01'.
WebSphere MQ queue manager 'ART.POCB1.QMGR01' started.

dspmq -x -m ART.POCB1.QMGR01
QMNAME(ART.POCB1.QMGR01)                                  STATUS(Running)
    INSTANCE(mqsvr03) MODE(Active)
• Start Listener for MQ instance on (mqsvr03)
NOTE: Change the port 1415 to production value
nohup runmqlsr -p 1414 -t tcp -m ART.POCB1.QMGR01 > /dev/null 2>&1 &
• Import MQ instance on (mqsvr04)
addmqinf -v Name=ART.POCB1.QMGR01 -v Directory='ART!POCB1!QMGR01' -v Prefix=/var/mqm -v DataPath='/var/mqm/share/qmgrs/ART!POCB1!QMGR01'
WebSphere MQ configuration information added.
• Verify MQ instance configuration on BOTH servers (mqsvr03 and mqsvr04)
NOTE: the output should be identical
dspmqinf ART.POCB1.QMGR01

QueueManager:
   Name=ART.POCB1.QMGR01
   Directory=ART!POCB1!QMGR01
   Prefix=/var/mqm
   DataPath=/var/mqm/share/qmgrs/ART!POCB1!QMGR01
• Start MQ instance on mqsvr04 with Multi-Instance Mode
strmqm -x ART.POCB1.QMGR01

WebSphere MQ queue manager 'ART.POCB1.QMGR01' starting.
A standby instance of queue manager 'ART.POCB1.QMGR01' has been started. The
active instance is running elsewhere.
• Check MQ instance on Both server (mqsvr03 and mqsvr04)
dspmq -x -m ART.POCB1.QMGR01
QMNAME(ART.POCB1.QMGR01)                                  STATUS(Running as standby)
    INSTANCE(mqsvr03) MODE(Active)
    INSTANCE(mqsvr04) MODE(Standby)
• Start Listener for MQ instance on mqsvr04
NOTE: Change the port 1415 to production value
nohup runmqlsr -p 1414 -t tcp -m ART.POCB1.QMGR01 > /dev/null 2>&1 &
7.3.6 Verify Multi-Instance Failover
• Stop MQ instance on the Active node (mqsvr03)
endmqm -s ART.POCB1.QMGR01
Quiesce request accepted. The queue manager will stop when all outstanding work
is complete, permitting switchover to a standby instance.

dspmq -x -m ART.POCB1.QMGR01
QMNAME(ART.POCB1.QMGR01)                                  STATUS(Quiescing)
    INSTANCE(mqsvr03) MODE(Active)
    INSTANCE(mqsvr04) MODE(Standby)

dspmq -x -m ART.POCB1.QMGR01

QMNAME(ART.POCB1.QMGR01)                                  STATUS(Running elsewhere)
    INSTANCE(mqsvr04) MODE(Active)

7.3.7 Configure MQ for JMS
• Run following on the Active Node of MQ as mqm
runmqsc ART.POCB1.QMGR01 < /opt/mqm/java/bin/MQJMS_PSQ.mqsc
8 MQSC commands read.
No commands have a syntax error.
All valid MQSC commands were processed.

7.3.8 Configure MQ Multi-Instance for ART MQ B2
NOTE: Execute following steps as user “mqm”
• Create folder for MQ instance
mkdir -p /var/mqm/share/log
mkdir -p /var/mqm/share/qmgrs
• Create MQ instance on GW (mqsvr05)
crtmqm -ll -lf 32000 -lp 10 -ls 3 -u DL.ART.POCB2.QMGR01.DEAD.LETTER.QUEUE  \
-ld /var/mqm/share/log -md /var/mqm/share/qmgrs ART.POCB2.QMGR01

WebSphere MQ queue manager created.
Directory '/var/mqm/share/qmgrs/ART!POCB2!QMGR01' created.
Creating or replacing default objects for ART.POCB2.QMGR01.
Default objects statistics : 65 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.
• Verify MQ instance on (mqsvr05)
strmqm ART.POCB2.QMGR01
WebSphere MQ queue manager 'ART.POCB2.QMGR01' starting.
11 log records accessed on queue manager 'ART.POCB2.QMGR01' during the log replay phase.
Log replay for queue manager 'ART.POCB2.QMGR01' complete.
Transaction manager state recovered for queue manager 'ART.POCB2.QMGR01'.
WebSphere MQ queue manager 'ART.POCB2.QMGR01' started.
dspmq
QMNAME(ART.POCB2.QMGR01)                                  STATUS(Running)
• Stop MQ instance on (mqsvr05)
endmqm ART.POCB2.QMGR01

Quiesce request accepted. The queue manager will stop when all outstanding work
is complete.
dspmq
QMNAME(ART.POCB2.QMGR01)                  STATUS(Ended normally)
• Verify MQ instance on (mqsvr05) with Multi-Instance Mode
strmqm -x ART.POCB2.QMGR01  

WebSphere MQ queue manager 'ART.POCB2.QMGR01' starting.
11 log records accessed on queue manager 'ART.POCB2.QMGR01' during the log replay phase.
Log replay for queue manager 'ART.POCB2.QMGR01' complete.
Transaction manager state recovered for queue manager 'ART.POCB2.QMGR01'.
WebSphere MQ queue manager 'ART.POCB2.QMGR01' started.

dspmq -x -m ART.POCB2.QMGR01
QMNAME(ART.POCB2.QMGR01)                                  STATUS(Running)
    INSTANCE(mqsvr05) MODE(Active)
• Start Listener for MQ instance on (mqsvr05)
NOTE: Change the port 1415 to production value
nohup runmqlsr -p 1414 -t tcp -m ART.POCB2.QMGR01 > /dev/null 2>&1 &
• Import MQ instance on (mqsvr06)
addmqinf -v Name=ART.POCB2.QMGR01 -v Directory='ART!POCB2!QMGR01' -v Prefix=/var/mqm -v DataPath='/var/mqm/share/qmgrs/ART!POCB2!QMGR01'

WebSphere MQ configuration information added.
• Verify MQ instance configuration on BOTH servers (mqsvr05 and mqsvr06)
NOTE: the output should be identical
dspmqinf ART.POCB2.QMGR01
QueueManager:
   Name=ART.POCB2.QMGR01
   Directory=ART!POCB2!QMGR01
   Prefix=/var/mqm
   DataPath=/var/mqm/share/qmgrs/ART!POCB2!QMGR01

• Start MQ instance on mqsvr06 with Multi-Instance Mode
strmqm -x ART.POCB2.QMGR01
WebSphere MQ queue manager 'ART.POCB2.QMGR01' starting.
A standby instance of queue manager 'ART.POCB2.QMGR01' has been started. The
active instance is running elsewhere.
• Check MQ instance on Both server (mqsvr05 and mqsvr06)
dspmq -x -m ART.POCB2.QMGR01
QMNAME(ART.POCB2.QMGR01)                                  STATUS(Running as standby)
    INSTANCE(mqsvr05) MODE(Active)
    INSTANCE(mqsvr06) MODE(Standby)
• Start Listener for MQ instance on mqsvr06
NOTE: Change the port 1415 to production value
nohup runmqlsr -p 1414 -t tcp -m ART.POCB2.QMGR01 > /dev/null 2>&1 &
7.3.9 Verify Multi-Instance Failover:
• Stop MQ instance on the Active node (mqsvr05)
endmqm -s ART.POCB2.QMGR01
Quiesce request accepted. The queue manager will stop when all outstanding work
is complete, permitting switchover to a standby instance.

dspmq -x -m ART.POCB2.QMGR01
QMNAME(ART.POCB2.QMGR01)                                  STATUS(Quiescing)
    INSTANCE(mqsvr05) MODE(Active)
    INSTANCE(mqsvr06) MODE(Standby)


dspmq -x -m ART.POCB2.QMGR01
QMNAME(ART.POCB2.QMGR01)                                  STATUS(Ended normally)
    INSTANCE(mqsvr06) MODE(Active)

7.3.10 Configure MQ for JMS:
• Run following on the Active Node of MQ as mqm
runmqsc ART.POCB2.QMGR01 < /opt/mqm/java/bin/MQJMS_PSQ.mqsc
8 MQSC commands read.
No commands have a syntax error.
All valid MQSC commands were processed.


7.3.11 Configure Channels and Local Ques for Gateway MQ:
Run these on running instance QMgr.
• Define Server Channel:
DEFINE CHANNEL('SYSTEM.ADMIN.SVRCONN') CHLTYPE(SVRCONN) TRPTYPE(TCP)
• Define Dead Letter Queue:
DEFINE QLOCAL(DL.ART.POCGW.QMGR01.DEAD.LETTER.QUEUE) DESCR('Dead Letter Queue')
• Define Transmission Queue:
DEFINE QLOCAL('TQ.ART.POCB1.QMGR01')  TRIGGER INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(POCGW.TO.POCB1) PROCESS(start.sndr.channel) DESCR('Transmission Queue to B1 Qmgr') USAGE(XMITQ) DEFPSIST(YES)

DEFINE QLOCAL('TQ.ART.POCB2.QMGR01') TRIGGER INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(POCGW.TO.POCB1) PROCESS(start.sndr.channel.b2) DESCR('Transmission Queue to B2 Qmgr') USAGE(XMITQ) DEFPSIST(YES)
• Define local Queues:
DEFINE QLOCAL('LQ.ART.POCGW1') DESCR('Local Que ART.POCGW.QMGR01') DEFPSIST(YES) SHARE NOTRIGGER USAGE(NORMAL)
DEFINE QLOCAL('LQ.ART.POCGW2') DESCR('Local Que ART.POCGW.QMGR01') DEFPSIST(YES) SHARE NOTRIGGER USAGE(NORMAL)

• Define Remote Ques:
DEFINE QREMOTE('RQ.LQ.ART.POCB1') DESCR('Remote Q GWQmgr to B1Qmgr') RNAME('LQ.ART.POCB') RQMNAME('ART.POCB1.QMGR01') XMITQ('TQ.ART.POCB1.QMGR01') DEFPSIST(YES)

DEFINE QREMOTE('RQ.LQ.ART.POCB2') DESCR('Remote Q GWQmgr to B2Qmgr') RNAME('LQ.ART.POCB') RQMNAME('ART.POCB2.QMGR01') XMITQ('TQ.ART.POCB2.QMGR02') DEFPSIST(YES)
• Define Receiver Channels
DEFINE CHANNEL(POCB1.TO.POCGW) CHLTYPE(RCVR) TRPTYPE(TCP) DESCR('Receiver Channel from B1 queue manager')
DEFINE CHANNEL(POCB2.TO.POCGW) CHLTYPE(RCVR) TRPTYPE(TCP) DESCR('Receiver Channel from B1 queue manager')
• Define Sender Channels:
DEFINE CHANNEL('POCGW.TO.POCB1') CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('10.193.28.12(1414),10.193.28.13(1414)') XMITQ('TQ.ART.POCB1.QMGR01') DESCR('Sender Channel to B1 queue manager')
DEFINE CHANNEL('POCGW.TO.POCB2') CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('10.193.28.14(1414),10.193.28.15(1414)') XMITQ('TQ.ART.POCB2.QMGR01') DESCR('Sender Channel to B2 queue manager')

• Define auto sender channel start process:
DEFINE PROCESS(start.sndr.channel) DESCR('Autostart Sender Channel when message arrives') APPLTYPE(UNIX) APPLICID('CSQX START') USERDATA('POCGW.TO.POCB1')
DEFINE PROCESS(start.sndr.channel.b2) DESCR('Autostart Sender Channel when message arrives') APPLTYPE(UNIX) APPLICID('CSQX START') USERDATA('POCGW.TO.POCB2')


7.3.12 Configure Channels and Local Ques for B1 MQ:
Run these on running instance QMgr.
• Define Server Channel:
DEFINE CHANNEL('SYSTEM.ADMIN.SVRCONN') CHLTYPE(SVRCONN) TRPTYPE(TCP)
• Define Dead Letter Queue:
DEFINE QLOCAL(DL.ART.POCB1.QMGR01.DEAD.LETTER.QUEUE) DESCR('Dead Letter Queue')
• Define Transmission Queue:
DEFINE QLOCAL('TQ.ART.POCGW.QMGR01') TRIGGER INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(POCB1.TO.POCGW) PROCESS(start.sndr.channel) DESCR('Transmission Queue') USAGE(XMITQ) DEFPSIST(YES)
• Define local Queues:
DEFINE QLOCAL('LQ.ART.POCB') DESCR('Local Que ART.POCB1.QMGR01') MAXDEPTH(10000) MAXMSGL(64512) MSGDLVSQ(FIFO) SHARE NOTRIGGER DEFPSIST(YES) USAGE(NORMAL)
• Define local Queue Alias:
DEFINE QALIAS('ART.POCB') DESCR('Local ART Que for B1Qmgr') TARGQ('LQ.ART.POCB')
• Define Remote Queues:
DEFINE QREMOTE('RQ.LQ.ART.POCGW1') DESCR('Remote Q B1Qmgr to GWQmgr') RNAME('LQ.ART.POCGW1') RQMNAME('ART.POCGW.QMGR01')
XMITQ('TQ.ART.POCGW.QMGR01') DEFPSIST(YES)
• Define Receiver Channel:
DEFINE CHANNEL(POCGW.TO.POCB1) CHLTYPE(RCVR) TRPTYPE(TCP) DESCR('Receiver Channel GW to B1 queue manager')
• Define Sender Channel:
DEFINE CHANNEL('POCB1.TO.POCGW') CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('10.193.28.10(1414),10.193.28.11(1414)') XMITQ('TQ.ART.POCB1.01') DESCR('Sender Channel to Gateway queue manager')
• Define Process to auto start sender channel:
DEFINE PROCESS(start.sndr.channel)  DESCR(‘Autostart Sender Channel when message arrives’) APPLTYPE(UNIX) APPLICID(‘CSQX START’) USERDATA(‘POCB1.TO.POCGW’)

7.3.13 Configure Channels and Local Ques for B2 MQ:
Run these on running instance QMgr.
• Define Server Channel:
DEFINE CHANNEL('SYSTEM.ADMIN.SVRCONN') CHLTYPE(SVRCONN) TRPTYPE(TCP)
• Define Dead Letter Queue:
DEFINE QLOCAL(DL.ART.POCB2.QMGR01.DEAD.LETTER.QUEUE) DESCR('Dead Letter Queue')
• Define Transmission Queue:
DEFINE QLOCAL('TQ.ART.POCGW.QMGR01') TRIGGER INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(POCB2.TO.POCGW) PROCESS(start.sndr.channel) DESCR('Transmission Queue to GW Qmgr') USAGE(XMITQ) DEFPSIST(YES)
• Define local Queues:
DEFINE QLOCAL('LQ.ART.POCB') DESCR('Local Que ART.POCB2.QMGR01') MAXDEPTH(10000) MAXMSGL(64512) MSGDLVSQ(FIFO) SHARE NOTRIGGER DEFPSIST(YES) USAGE(NORMAL)
• Define local Queue Alias:
DEFINE QALIAS('ART.POCB') DESCR('Local ART Que for B2Qmgr') TARGQ('LQ.ART.POCB')
• Define Remote Queues:
DEFINE QREMOTE('RQ.LQ.ART.POCGW2') DESCR('Remote Q B2Qmgr to GWQmgr') RNAME('LQ.ART.POCGW2') RQMNAME('ART.POCGW.QMGR01') XMITQ('TQ.ART.POCGW.QMGR01') DEFPSIST(YES)
• Define Receiver Channel:
DEFINE CHANNEL(POCGW.TO.POCB2) CHLTYPE(RCVR) TRPTYPE(TCP) DESCR('Receiver Channel GW to B2 queue manager')
• Define Sender Channel:
DEFINE CHANNEL('POCB2.TO.POCGW') CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('10.193.28.10(1414),10.193.28.11(1414)') XMITQ('TQ.ART.POCGW.QMGR01') DESCR('Sender Channel to Gateway queue manager')
• Define Process to auto start Sender Channel:
DEFINE PROCESS(start.sndr.channel)  DESCR(‘Autostart Sender Channel when message arrives’) APPLTYPE(UNIX) APPLICID(‘CSQX START’) USERDATA(‘POCB2.TO.POCGW’)

7.3.14 Generate .binding files for GW MQ:
1 – Edit JMSAdmin.config file at /opt/mqm/java/bin/JMSAdmin.config
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
PROVIDER_URL=file:/var/mqm/jndi
SECURITY_AUTHENTICATION=none
2 – Create jndi directory under /var/mqm
$mkdir /var/mqm/jndi
3 – Generate binding file
Cd /opt/mqm/java/bin
./setjmsenv64
MQ_JAVA_DATA_PATH is /var/mqm
MQ_JAVA_LIB_PATH is /opt/mqm/java/lib64
CLASSPATH is :/opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/samp/jms/samples:/opt/mqm/samp/wmqjava/samples
4 – Run JMSAdmin from /opt/mqm/java/bin
$./JMSAdmin
(if  you get NoClassDefFoundError Exception export CLASSPATH manually)
$export CLASSPATH=/opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/samp/jms/samples:/opt/mqm/samp/wmqjava/samples
$echo $CLASSPATH
/opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/samp/jms/samples:/opt/mqm/samp/wmqjava/samples
Run JMSAdmin again
$./JMSAdmin
(Create QCF and Q at InitCtx prompt)
InitCtx> DEF QCF(ARTQCF) QMGR(ART.POCGW.QMGR01) TRAN(CLIENT) CHAN(SYSTEM.DEF.SVRCONN) HOST(10.193.28.10) PORT(1414)
InitCtx> DEF Q(ARTQ) QMGR(ART.POCGW.QMGR01) QUEUE(LQ.ART.POCGW1)
InitCtx> end
5 – Copy JMS binding file onto Client (BW):
Copy binding file from /var/mqm/jndi/.binding
If required copy following libraries from /opt/mqm/java/lib folder
com.ibm.mq.jar
com.ibm.mq.jmqi.jar
com.ibm.mqjms.jar
connector.jar
dhbcore.jar
fscontext.jar
jms.jar
jndi.jar
jta.jar
providerutil.jar

7.3.15 Generate .binding files for B1 MQ:
1 – Edit JMSAdmin.config file at /opt/mqm/java/bin/JMSAdmin.config
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
PROVIDER_URL=file:/var/mqm/jndi
SECURITY_AUTHENTICATION=none
2 – Create jndi directory under /var/mqm
$mkdir /var/mqm/jndi
3 – Generate binding file
Cd /opt/mqm/java/bin
./setjmsenv64
MQ_JAVA_DATA_PATH is /var/mqm
MQ_JAVA_LIB_PATH is /opt/mqm/java/lib64
CLASSPATH is :/opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/samp/jms/samples:/opt/mqm/samp/wmqjava/samples
4 – Run JMSAdmin from /opt/mqm/java/bin
$./JMSAdmin
(if  you get NoClassDefFoundError Exception export CLASSPATH manually)
$export CLASSPATH=/opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/samp/jms/samples:/opt/mqm/samp/wmqjava/samples
$echo $CLASSPATH
/opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/samp/jms/samples:/opt/mqm/samp/wmqjava/samples
Run JMSAdmin again
$./JMSAdmin
(Create QCF and Q at InitCtx prompt)
InitCtx> DEF QCF(ARTQCF) QMGR(ART.POCB1.QMGR01) TRAN(CLIENT) CHAN(SYSTEM.DEF.SVRCONN) HOST(10.193.28.12) port(1414)
InitCtx> DEF Q(ARTQ) QMGR(ART.POCB1.QMGR01) QUEUE(LQ.ART.POCB)
InitCtx> end
5 – Copy JMS binding file onto Client (BW):
Copy binding file from /var/mqm/jndi/.binding
If required copy following libraries from /opt/mqm/java/lib folder
com.ibm.mq.jar
com.ibm.mq.jmqi.jar
com.ibm.mqjms.jar
connector.jar
dhbcore.jar
fscontext.jar
jms.jar
jndi.jar
jta.jar
providerutil.jar

7.3.16 Generate .binding files for B2 MQ:
1 – Edit JMSAdmin.config file at /opt/mqm/java/bin/JMSAdmin.config
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
PROVIDER_URL=file:/var/mqm/jndi
SECURITY_AUTHENTICATION=none
2 – Create jndi directory under /var/mqm
$mkdir /var/mqm/jndi
3 – Generate binding file
Cd /opt/mqm/java/bin
./setjmsenv64
MQ_JAVA_DATA_PATH is /var/mqm
MQ_JAVA_LIB_PATH is /opt/mqm/java/lib64
CLASSPATH is :/opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/samp/jms/samples:/opt/mqm/samp/wmqjava/samples
4 – Run JMSAdmin from /opt/mqm/java/bin
$./JMSAdmin
(if  you get NoClassDefFoundError Exception export CLASSPATH manually)
$export CLASSPATH=/opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/samp/jms/samples:/opt/mqm/samp/wmqjava/samples
$echo $CLASSPATH
/opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/samp/jms/samples:/opt/mqm/samp/wmqjava/samples
Run JMSAdmin again
$./JMSAdmin
(Create QCF and Q at InitCtx prompt)
InitCtx> DEF QCF(ARTQCF) QMGR(ART.POCB2.QMGR01) TRAN(CLIENT) CHAN(SYSTEM.DEF.SVRCONN) HOST(10.193.28.14) port(1414)
InitCtx> DEF Q(ARTQ) QMGR(ART.POCB2.QMGR01) QUEUE(LQ.ART.POCB)
InitCtx> end
5 – Copy JMS binding file onto Client (BW):
Copy binding file from /var/mqm/jndi/.binding
If required copy following libraries from /opt/mqm/java/lib folder
com.ibm.mq.jar
com.ibm.mq.jmqi.jar
com.ibm.mqjms.jar
connector.jar
dhbcore.jar
fscontext.jar
jms.jar
jndi.jar
jta.jar
providerutil.jar


MQ Series: Installation - Linux


Install MQ Series

mkdir -p /export/home/mqm
groupadd -g 358 mqm
useradd -g 358 -u 246 -d /export/home/mqm -s /bin/bash mqm
chown -R mqm:mqm /export/home/mqm

 Prepare Installable

tar xzvf mq.tar.gz

Below system packages are required

compat-gcc 
compat-gcc-c++ 
compat-libstdc++
libstdc++ 
glibc-devel 
glibc-headers
Tune  System Parameters:
# /etc/sysctl.conf
# MQ
kernel.msgmni = 1024
kernel.shmmni = 4096
kernel.sem = 500 256000 250 1024
fs.file-max = 32768
net.ipv4.tcp_keepalive_time = 300
then run “sysctl –p” to take effect the new settings.

Update GSK7
cd /opt/installbinaries/MQ
rpm -Uvh gsk7bas64-7.0-4.23.x86_64.rpm
rpm -Uvh gsk7bas-7.0-4.23.i386.rpm

Process MQ License Agreement
cd /opt/installbinaries/MQ
./mqlicense.sh

Install MQ Binary
cd /opt/installbinaries/MQ
rpm -ivh MQSeriesRuntime-7.0.1-0.x86_64.rpm
rpm -ivh MQSeriesServer-7.0.1-0.x86_64.rpm
rpm -ivh MQSeriesJava-7.0.1-0.x86_64.rpm
rpm -ivh MQSeriesKeyMan-7.0.1-0.x86_64.rpm
rpm -ivh MQSeriesJRE-7.0.1-0.x86_64.rpm
rpm -ivh MQSeriesMan-7.0.1-0.x86_64.rpm
rpm -ivh MQSeriesSamples-7.0.1-0.x86_64.rpm
rpm -ivh MQSeriesClient-7.0.1-0.x86_64.rpm
Apply MQ Patch
cd /opt/installbinaries/MQ/fixpack
rpm -Uvh gsk7bas*
rpm -Uvh MQSeriesRuntime*
rpm -Uvh MQSeriesServer*
rpm -Uvh MQSeriesJava*
rpm -Uvh MQSeriesKeyMan*
rpm -Uvh MQSeriesJRE*
rpm -Uvh MQSeriesMan*
rpm -Uvh MQSeriesSamples*
rpm -Uvh MQSeriesClient*
Verify the MQ installation
rpm -qa | grep MQ | sort./
MQSeriesClient-7.0.1-0
MQSeriesClient-U827231-7.0.1-1
MQSeriesJava-7.0.1-0
MQSeriesJava-U827231-7.0.1-1
MQSeriesJRE-7.0.1-0
MQSeriesJRE-U827231-7.0.1-1
MQSeriesKeyMan-7.0.1-0
MQSeriesKeyMan-U827231-7.0.1-1
MQSeriesMan-7.0.1-0
MQSeriesMan-U827231-7.0.1-1
MQSeriesRuntime-7.0.1-0
MQSeriesRuntime-U827231-7.0.1-1
MQSeriesSamples-7.0.1-0
MQSeriesSamples-U827231-7.0.1-1
MQSeriesServer-7.0.1-0
MQSeriesServer-U827231-7.0.1-1
su – mqm
dspmqver
Name:        WebSphere MQ
Version:     7.0.1.5
CMVC level:  p701-105-110419
BuildType:   IKAP - (Production)

Friday, September 7, 2012

WAS Application Server Hang during stop

WAS Application Server Hang during stop

action taken: reviewed submitted doc.                                  
  Two of the four running threads in each Javacore are associated to   
  the pop-up window asking for user credentials:                       
    "Signal Dispatcher" TID:0x0000000111FEB600, j9thread_t:0x0000000   
    "AWT-XAWT" TID:0x0000000114BC0700, j9thread_t:0x00000001147C2060   
  If I don't provide the credentials within one minute, then I see     
  an access denied message on the console and a security message in    
  the SystemOut.log.                                                   
  The other two threads are:                                           
  1. "Attach API wait loop" J9VMThread:0x0000000010639900, j9thread_t: 
        at com/ibm/tools/attach/javaSE/IPC.waitSemaphore(Native Method 
        at com/ibm/tools/attach/javaSE/CommonDirectory.waitSemaphore   
          (CommonDirectory.java:220)                                   
        at com/ibm/tools/attach/javaSE/AttachHandler$WaitLoop.         
          waitForNotification(AttachHandler.java:329)                  
        at com/ibm/tools/attach/javaSE/AttachHandler$WaitLoop.run      
          (AttachHandler.java:396)                                     
    IZ73533 is a known problem with the Attach API, fixed in 6.0.0     
    SR8.  Fei is already at SR9 and this thread is not consuming       
    excessive cpu (according to the topdashH output), however it       
    would be useful to understand if disabling the Attach API would    
    have an impact on the problem.                                     
     IBM IZ73533: JAVA ATTACH API THREAD CAN CAUSE HIGH CPU UTILIZAT   
       https://www-304.ibm.com/support/docview.wss?uid=isg1IZ73533     
    I suggest disabling the java attach api function by setting  the   
    following as a webcontainer custom property:                       
            -Dcom.ibm.tools.attach.enable=no                                See this link for further instructions:                            
     IBM Setting webcontainer custom properties                        
     http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg21284395  
  2.   "main" J9VMThread:0x0000000010411E00, j9thread_t:0x00000000     
       Java callstack:                                                 
           at java/net/PlainSocketImpl.socketAccept(Native Method)     
           at java/net/PlainSocketImpl.accept(PlainSocketImpl.java:451 
           at java/net/ServerSocket.implAccept(ServerSocket.java:464)  
           at java/net/ServerSocket.accept(ServerSocket.java:432)      
           at com/ibm/ws/management/tools/WsServerController.          
             waitForServerInit(WsServerController.java:238)            
           at com/ibm/ws/management/tools/WsServerStop.runTool         
             (WsServerStop.java:417)...                                
  The stopServer.sh script spawns another Java process that does the   
  work. Typically when a stopserver attempt is made, a message         
  similar to this is appended to the SystemOut.log:                    
    AdminTool     A   ADMU3201I: Server stop request issued. Waiting   
        for stop status                                                
  However, the  SystemOut.log doesn't show this message, so if the     
  suggestion in step 1 above does not yield results, I suggest         
  capturing a trace of the shutdown as  described in "collecting data  
  manually - step 3" of the Mustgather for Stop Server issues:         
   http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg21201014    
  The change is to add this to the server's server.xml file:           
    startupTraceSpecification="*=info:com.ibm.ws.*=all"                
  The -trace option can also be added to command line if               
  stopServer.sh is being used on the command line. Please let me know  
  if you have any questions about this.  Corinne                       
action plan: requeue for Matt's review.