WebSphere MQ HA

更新时间:2024-03-20 11:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MQ产品安装、升级及HA配置指南

1 MQ产品安装(以AIX和HP-UX操作系统为例)

1.1 MQ for AIX V5.3 及其补丁程序的安装步骤 1.1.1 MQ For AIX V5.3 的安装及配置

用root身份登录系统 ? 系统需求

? 所需磁盘空间:

对于产品代码和数据最少需要50M空间;MQ产品本身所需要的硬盘空间并不大,但是用户需要合理规划它的用户数据空间,用户数据空间的大小取决于用户创建的队列的多少,每个队列上消息数量以及每条消息的字节数大小等因素。 HTML文档: 需要35M空间

? 系统软件需求:

AIX V4.3.3, 补丁U472177 AIX V5.1,补丁U47687

对于MQSeries for AIX,安装目录为/usr/mqm,这是不能修改的,但是,如果您在/usr/mqm下没有足够的空间,您可以按照以下方法之一安装: 1 建立一个新的文件系统,并mount到/usr/mqm

2 在有足够空间的文件系统上建立一个新的目录,如: mkdir /bigdisk/mqm

ln –s /bigdisk/mqm /usr/mqm

? 安装前的准备工作

1、 Create 和 Mount 一个文件系统:/var/mqm/, /var/mqm 文件系统的大小应该足够包含在该系统上所有队列管理器的所有消息。这还取决于使用的队列数目、队列上的消息数量和大小及消息是否为持续性消息等。

? /var/mqm 文件系统的大小必须能够容纳本台机器上所有队列管理器下的所有队列上的

所有的消息;

? 您也可以建立三个文件系统,/var/mqm, /var/mqm/log, /var/mqm/errors, 如果您建立独立

的分区,则/var/mqm,/var/mqm/log文件系统必须要在本地文件系统上,/var/mqm/errors可以用NFS文件系统;

? 系统日志文件大小将取决于队列管理器下所有队列上所有消息的总字节数大小,用户需

要选择采用线性日志还是环性日志以及每个日志文件的大小,从而来规划/var/mqm/log文件系统的大小。

2、 创建mqm用户和mqm组

利用System Management Interface Tool (SMIT),需要root权限。 用SMIT:

(1) 创建mqm组

Security & Users Groups

Add a Group 增加mqm 组 .

(2) 创建mqm用户

Security & Users Users

Add a User 该用户的主组应为mqm.

其中MQ的HOME目录为:/home/mqm

(3) 设置mqm用户的口令。

Security & Users Passwords

? 开始安装MQ For AIX V5.3

使用smit安装MQ for AIX V5.3,安装过程大约需要15分钟 把MQ For AIX V5.3 光盘插入CDROM中。 使用SMIT :

1、 Go into SMIT with root authority. From the command shell, type:

smit ?

2、选择以下菜单:

Software Installation & Maintenance Install and Update Software

Install and Update Selectable Software (Custom Install) Install Software Products at Latest Available Level 或者直接使用命令: smitty install_latest

Press the List button to display the Single Select List window. 选择:

/dev/cd0 (CD-ROM Drive)

3、 Press Do to display the parameters for Install Latest Level. 4、 Press F4 to 显示所有部件的安装列表.

5、 您可以选择除DCE,HTML 联机文档之外的所有componectsPress 6、 对于AIX V4.3.3,选择OK 安装MQ.

对于AIX V5.1,

首先,将”Preview new LICENSE agreements” 置为yes ,选择OK,察看产品许可证信息;

然后,将ACCEPT new license agreements 置为yes,选择OK,进行MQ的安装。

注意:对产品许可证的管理是MQ V5.3的新特点,在产品安装完之后,我们需要运行

setmqcap命令输入我们购买的CPU个数。

? 设置EXTSHM- Extended Shared Memory model

AIX操作系统在System V共享内存使用模式上与其它UNIX操作系统有所不同,对某个单一进程,缺省情况下,它可以同时使用10个共享内存段。对MQ for AIX V5.3而言,队列管理器使用EXTSHM的共享内存扩展模式,该模式允许每个进程使用的共享内存段突破10个的限制。这时,在MQ系统和应用程序启动只前需要将环境变量EXTSHM设置为ON。尤其在下列若干情况下:

? 与MQ相连接的应用数量较多; ? 利用MQ进行大消息的数据传输;

? 在MQ应用中,需要同时进行数据库操作,而导致对共享内存的需求增大等。

关于该环境变量的设置,建议不要将其设为系统的全局环境变量,如将其设置在/etc/environment中,最好将其设置为将要使用MQ的那些用户的环境变量。

1.1.2 安装MQ 补丁 For AIX V5.3

用root身份进行安装

在安装完MQ产品时,需要用户登陆IBM的网站,查看产品的补丁更新信息,从中下载最新版本的补丁程序,并按照给出的安装说明进行安装。

1.2 MQ for HP-UNIX V5.3 及其补丁程序的安装步骤 1.2.1 MQ For HP-UNIX V5.3 的安装及配置

用root身份登录系统 ? 系统需求

? 所需磁盘空间:

对于产品代码和数据最少需要50M空间; HTML文档需要:35M空间

? 系统软件需求:

HP-UNIX 11i (11.11) (32位)

HP-UNIX 11.0 (32位),补丁PHSS_24627, PHSS_22543

对于MQSeries for HP,安装目录为/opt/mqm,这是不能修改的,但是,如果您在/opt/mqm下没有足够的空间,您可以按照以下方法之一安装: 1 建立一个新的文件系统,并mount到/opt/mqm

2 在有足够空间的文件系统上建立一个新的目录,如: mkdir /bigdisk/mqm

ln –s /bigdisk/mqm /opt/mqm

? 安装前的准备工作

1、 Create 和 Mount 一个文件系统:/var/mqm/, /var/mqm 文件系统的大小必须能够容纳本台机器上所有队列管理器下的所有队列上的所有的消息;

? 您也可以建立三个文件系统,/var/mqm, /var/mqm/log, /var/mqm/errors, 如果您建立独立

的分区,则/var/mqm,/var/mqm/log文件系统必须要在本地文件系统上,/var/mqm/errors可以用NFS文件系统;

? 系统日志文件大小将取决与队列管理器下所有队列上所有消息的大小。

2、 创建mqm用户和mqm组

设置mqm 用户的主组为 mqm。如果要运行任何管理命令,例如,crtmqm(创建队列管理器)或 strmqm(启动队列管理器),则用户 ID 必须是组 mqm 的成员。 注: 必须向 mqm 组中添加 root。

? 安装MQ For HP V5.3 以root身份登陆 Mount光驱: 进入/usr/sbin目录 键入pfs_mountd & 键入pfsd 4 & 键入pfs_mount –o xlat=unix // 接受产品许可证协议:

进入CD_ROM的mount点所在目录,如/cdrom 运行mqlicense脚本:./mqlicense.sh

察看产品许可证协议信息,并接受产品许可证协议 用HP-UX swinstall 命令进行产品安装

swinstall –s /cdrom/hpux11/.V11 选择要安装的产品部件,进行安装。

同理,在产品安装完之后,我们需要运行setmqcap命令输入我们购买的CPU个数。

1.2.2 安装MQ 补丁For HP-UNIX V5.3

参照MQ for AIX的补丁安装部分。

1.2.3 调整核心参数

由于不同种类的UNIX操作系统的特点不同,与AIX不同是,在其它大多数UNIX平台上,包括HP-UX,Sun Solaris, Digital Unix, SCO Unix等平台上使用MQ时,都需要调整系统核心参数,MQ for HP-UX所要求的系统核心参数如下:

shmmax 536870912 shmseg 1024

shmmni 1024 shmem 1 sema 1

semaem 16384 semvmx 32767 semmns 16384

semmni 1024 (semmni < semmns) semmap 1026 (semmni +2) semmnu 2048 semume 256 msgmni 50 msgtql 256

msgmap 258 (msgtql +2) msgmax 4096 msgmnb 4096 msgssz 8 msgseg 1024 maxusers 32

如果你需要较大的MQ并发连接数,建议你增大系统的kernel timers,即CALLOUTS参数,这可以通过设置NCALLOUT核心参数来实现。缺省情况下,NCALLOUT的值等于16+NPROC(PROC代表系统中的总进程数),同时要注意,CALLOUT的个数会影响系统的性能。

注:需要重启系统,核心参数才能生效。

1.3 验证安装 1.3.1 验证本地安装

1) 创建一个缺省队列管理器QMTEST:crtmqm -q QMTEST 2) 启动队列管理器:strmqm

3) 启动MQSC命令shell:runmqsc

4) 定义一个本地队列QLTEST:define qlocal (QLTEST) 5) 退出MQSC命令: end

6) 用例子程序向队列发送若干测试消息,例子程序位于/opt/mqm/samp/bin下:amqsput

QLTEST

7) 用例子程序从队列接收消息,amqsget QLTEST,验证发送和接收成功

1.3.2 验证 Server-to-Server 安装

发送方:

1) 建立队列管理器QMA: crtmqm –q QMA 2) 启动队列管理器: strmqm

3) 启动MQSC命令解释器:runmqsc

4) 定义本地传输队列: define qlocal (QMB) usage (xmitq) defpsist(yes)

5) 创建远程队列: define qremote (QR.TOB) rname (LQB) rqmname (QMB) xmitq (QMB) 6) 定义发送通道: define channel (A.TO.B) chltype (sdr) conname (9.20.11.182) + xmitq (QMB) trptype (tcp) (其中,9.20.11.182 是对方机器的IP地址)。 7) 退出MQSC

接收方:

1) 编辑/etc/services文件.

增加如下内容: MQSeries 1414/tcp # MQ侦听程序端口号 2) 编辑/etc/inetd.conf文件.

增加如下内容: MQSeries stream tcp nowait mqm /opt/mqm/bin/amqcrsta amqcrsta 3) 更新inted:

ps -ef | grep inetd kill -1 inetd processid

4) 建立队列管理器QMB: crtmqm –q QMB 5) 启动队列管理器: strmqm

6) 启动MQSC命令解释器: runmqsc 7) 定义本地队列QLB: define qlocal (LQB)

8) 创建接收通道: define channel (A.TO.B) chltype (rcvr) trptype (tcp) 9) 退出MQSC

建立双机间的通讯:

1) 在发送方启动发送通道: runmqchl -c FIRST.CHANNEL -m QMA 2) 在发送方,用amqsput 例子程序向远程队列发送消息:

amqsput QR.TOB QMA

3) 在接受方,用amqsget 例子程序从本地队列接收消息:

amqsget LQB QMB, 验证发送和接收成功。

2 如何进行MQ产品的升级

在MQ的安装手册中,对如何进行从低版本向高版本的升级安装均没有非常详细的描述,在此我们以MQ for Digital Unix V2到V5.1的升级操作为例,给出升级安装的具体步骤的步骤,供大家参考。注意,大家在使用时要考虑各个平台的差异,另外,在MQ的最新版本V5.3中,一个重要的差异是,用于OAM(Object Authorization Method)机制的授权数据的存贮地由文件改为用队列方式存储,如何进行与此相关的升级处理,请参考各MQ安装手册的说明。

MQ for Digital Unix V2到V5.1的升级安装操作步骤如下: 1) 停止所有应用程序。

2) 备份原系统的所有对象的配置定义:包括队列管理器定义、发送通道定义、接收通道定

义、传输队列定义、死信队列定义、远程队列定义、本地队列定义等。 3) 停止队列管理器:

endmqm –i <对列管理器> 4) 清除MQ信号量和共享内存

ipcs –a|grep mq ipcrm –m <信号量标识> 5) 备份“/var/mqm”目录。

tar cvf /tmp/mqm.tar /var/mqm 6) 卸载系统中旧版本的MQ产品。

setld –i | grep MQS setld –d <产品1> <产品2>??<产品n> 注意:最后删除MQS_BASE组件。 7) 恢复前面备份的“/var/mqm”目录。

tar xvf /tmp/mqm.tar 8) 安装MQV5.1 For Compaq Tru64 v4.0。

A. 安装光盘介质:

对于Compaq Tru64 V4.0,使用命令:

mount –r –t cdfs –o noversion,rrip /dev/rz18c /cdrom (请用实

际的光驱设备名替换“rzl8c”)。 对于Compaq Tru64 V5.0,使用命令:

mount -r -t cdfs -o noversion, rrip /dev/disk/cdrom0C /cdrom (请

用实际的光驱设备名替换“cdrom0C”)。

B. 安装软件:

setld -l /cdrom 选择部件:1 29-31回车确认即可。

9) 安装补丁程序:IC29945

解包“IC29945.tar.Z”到一临时目录,执行脚本:

./update_setld

10) 调整操作系统内核参数:

对于Compaq Tru64 Unix V4.0:

对于Compaq Tru64 V5.0:

ipc: sem-mni=4096 sem-msl=1000 sem-opm=100 sem-ume=1000 shm-mni=4104 shm-seg=1024 shm-max=2147483647

ipc: sem-mni=4096 sem-msl=1000 sem-opm=100 sem-ume=1000 shm-mni=4104 shm-seg=1024 num-of-sems=3000 shm-max=2147483647

(可直接编辑“/etc/sysconfigtab”文件,然后重新启动系统即可) 11)

启动队列管理器,启动通道,并验证安装、配置的正确性。

至此,完成MQ for Digital Unix V2到V5.1的升级安装。

3 WebSphere MQ for HA 安装和配置

大家知道,WebSphere MQ支持高可用性配置,如:在RISC6000平台上的HACMP,在配置MQ的HA时,有两种情况,一种是standby的方式,即:在主机上配置一个队列管理器,当主机出现故障时,该队列管理器切换到备机上运行;另一种是takeover的方式,即:在主机和

备机上各配置一个队列管理器A和B,当主机出现故障时,该队列管理器切换到备机上运行,即队列管理器A和B同时运行在备机上。在以上两种配置中,第二种情况配置较为复杂,因此本文针对第二种情况,以HP平台上的ServiceGuard HA管理软件为例,给出MQ的安装和配置方法以供参考。

3.1 安装步骤

1. 在每一个节点上,创建mqm的用户和mqm的组,保证他们的用户ID和组ID相同。 2. 在共享盘上,分别创建一个共享Volume Group和Logical Volume, 如:node1vg,node2vg;

每一个VG包含一个文件系统:/var/mqm/node1, /var/mqm/node2; 3. 在/var/mqm/node1下建立子目录qmgrs,log; 在/var/mqm/node2下建立子目录

qmgrs,log; 4. 在两个节点上分别安装MQ产品

5. 将文件系统mount 到第一个节点上,在node1节点上,创建队列管理器QmgrA,

export MQSPREFIX=/var/mqm/node1(使用环境变量MQSPREFIX来指定队列管理器的路径) crtmqm –ld /var/mqm/node1/log QmgrA (使用-ld选项建立队列管理器日志的路径) 6. 同样在node1节点上,创建队列管理器QmgrB,

export MQSPREFIX=/var/mqm/node2 crtmqm –ld /var/mqm/node2/log QmgrB

7. 将node1节点上的/var/mqm/mqs.ini文件拷贝到node2节点上的/var/mqm目录下。

3.2 TCP/IP 设置:

注意:两个节点上的队列管理器不能使用同一个TCP/IP端口号,这里我们将QmgrA的端口号设为1414,将QmgrB的端口号设为1415,这样,我们对每一个节点作如下的设置: 1.

设置/etc/inetd.conf

MQSeries1 stream tcp nowait mqm /opt/mqm/bin/amqcrsta amqcrsta –m QmgrA MQSeries2 stream tcp nowait mqm /opt/mqm/bin/amqcrsta amqcrsta –m QmgrB

2.设置/etc/services

MQSeries1 1414/tcp #MQSeries channel listener MQSeries2 1415/tcp #MQSeries channel listener

3.3 ServiceGuard 设置

通常,队列管理器应包含在一个ServiceGuard package中。该package的配置脚本为:

/etc/cmclusters//control.sh。在control.sh 脚本中,应增加有关MQ的部分,以实现MQ的正确切换和接管。 配置文件示例如下(仅供参考):

QmgrA 的shutdown脚本:

QMGRS=\SCRIPT=$0

# As per MQSeries System Management Guide :-PROGRAM_ KILL_ORDER=\#############################################

# Function to check if a Queue Manager is still running # ############################################# Check_QMGR() {

if [ ‘ ps -ef | grep -v grep | grep -v amqcrsta | grep -v runmqsc |grep -c $QMGR‘ -ne 0 ]

then return 1 # Still running else return 0 # Stopped fi }

############################# # Function to stop Queue Manager # ############################# Stop_QMGR() {

# Normal Shutdown Check_QMGR if [ $? -ne 0 ] then

echo ‘date‘ $SCRIPT Performing normal shutdown on $QMGR

endmqm $QMGR & sleep 60 else

echo ‘date‘ $SCRIPT Queue Manager $QMGR already stopped fi

# Immediate Shutdown Check_QMGR if [ $? -ne 0 ] then

echo ‘date‘ $SCRIPT Performing immediate shutdown on $QMGR endmqm -i $QMGR & sleep 90 else

return # Queue Manager already shutdown fi.# Preemtive Shutdown Check_QMGR if [ $? -ne 0 ] then

echo ‘date‘ $SCRIPT Performing preemtive shutdown on $QMGR endmqm -p $QMGR & sleep 120 else

return # Queue Manager already shutdown fi

# Now we’ve tried everything so we kill the tasks in the order # listed in PROGRAM_KILL_ORDER Check_QMGR if [ $? -ne 0 ] then

for PROGRAM in $PROGRAM_KILL_ORDER

do

PID=‘ ps -ef | grep $QMGR | grep $PROGRAM | awk -F\ if [ \then

echo ‘ date‘ $SCRIPT \-9) PID $PID $PROGRAM\kill -9 $PID sleep 10 fi done fi }

# main code for QMGR in $QMGRS

/opt/mqm/bin/runmqsc < stop_chl.mqsc sleep 10 Stop_QMGR Sleep 10 Exit 0

其中,stop_chl.mqsc 如下: # stop_chl.mqsc stop chl(channe1) stop chl(channel2)

QmgrA 的启动脚本:

TOP= /var/mqm/node1/qmgrs/QmgrA

For file in /isem/* /esem/* /msem/* /@ipcc/esem/* \\

/@ipcc/ssem/socket/* /@ipcc/shmem/* do

/shmem/* /startprm/* /@ipcc/isem/* */usr/bin/rm $TOP$file done

strmqm QmgrA #strmqcsv QmgrA #runmqchi –m QmgrA

runmqchl –c channel1 –m QmgrA & runmqchl –c channel2 –m QmgrA & exit 0

本文来源:https://www.bwwdw.com/article/9wx8.html

Top