最近要在CentOS 7上WebSphere MQ 7.5,惊叹于IBM文档的浩繁(也许是笔者没找对地方),在这里安装配置的步骤整理成一篇小文,供像笔者一样的小白参考。
安装MQ产品
1) 上传并解压MQ安装介质,如WS_MQ_LINUX_ON_X86_64_7.5.0.2_IMG.tar.gz
2) 使用root账号
3) 在解压后的目录中执行 ./mqlicense.sh -text_only,接受许可证
4) 执行 rpm -ivh MQSeriesRuntime-*.rpm MQSeriesServer-*.rpm 安装
检查和设置操作系统参数
1) 执行 su mqm -c "/opt/mqm/bin/mqconfig", 查看哪些参数需要设置
2) 如果提示mqconfig: The bc program was not found on this system. 执行 yum install -y bc 安装bc
3) 按照mqconfig的提示信息设置操作系统参数,如笔者的环境提示以下的Fail
System V Semaphores
semmsl (sem:1) 250 semaphores IBM>=500 FAIL
semmns (sem:2) 1 of 32000 semaphores (0%) IBM>=256000 FAIL
semopm (sem:3) 32 operations IBM>=250 FAIL
semmni (sem:4) 1 of 128 sets (0%) IBM>=1024 FAIL
System Settings
file-max 1568 of 185426 files (0%) IBM>=524288 FAIL
tcp_keepalive_time 7200 seconds IBM<=300 FAIL
Current User Limits (mqm)
nofile (-Hn) 4096 files IBM>=10240 FAIL
nofile (-Sn) 1024 files IBM>=10240 FAIL
则在/etc/sysctl.conf中设置:
kernel.sem = 500 256000 250 1024
fs.file-max = 524288
net.ipv4.tcp_keepalive_time = 300
在/etc/security/limits.conf中设置:
mqm soft nofile 10240
mqm hard nofile 10240
4) 执行 sysctl -p 后再次执行su mqm -c "/opt/mqm/bin/mqconfig",直到检查项全部通过
创建配置队列管理器
对于我等小白,当然希望在自己的Windows笔记本上管理服务器上的队列,接下来示范创建一个可以使用MQ Explorer管理的队列。
1) 执行su - mqm,切换到mqm用户
2) 执行source /opt/mqm/bin/setmqenv -s,加载执行mq命令的环境
3) 执行crtmqm -u SYSTEM.DEAD.LETTER.QUEUE QM_TEST,创建一个带死信队列的队列管理器。QM_TEST是队列管理器的名称,可以根据需要起不同的名称
4) 执行strmqm QM_TEST,启动队列管理器
5) 执行runmqsc QM_TEST,启动MQ管理工具
6) 在管理工具内执行以下命令,创建监听器
define listener(TCP.LISTENER) trptype(tcp) control(qmgr) port(1414)
start listener(TCP.LISTENER)
7) 在管理工具内执行以下命令,创建远程MQ Explorer使用的通道
define channel(SYSTEM.ADMIN.SVRCONN) chltype(SVRCONN) REPLACE
8) 在管理工具内执行以下命令,放行远程的管理连接
set CHLAUTH(*) TYPE(BLOCKUSER) USERLIST('nobody','*MQADMIN')
set CHLAUTH(SYSTEM.ADMIN.*) TYPE(BLOCKUSER) USERLIST('nobody')
使用连接队列
1) 使用MQ的Windows介质安装MQ Explorer,并启动
2) 左侧菜单中在Queue Managers右键,选择Add Remote Queue Manager...
3) Queue Manger Name中填写远程对列管理器的名称,此处为QM_TEST。在后续的配置页面中输入队列管理器所在服务器的ip,用户名为mqm(无密码)
4) 如果连接时MQ Explorer显示异常AMQ4059 Reason Code 2538,可能是防火墙阻碍了访问,可以在Linux服务器上执行iptables -F 以后再试试
参考文章
http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ins.doc/q008640_.htm?lang=en
http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ins.doc/q009240_.htm?lang=en
http://www-01.ibm.com/support/docview.wss?uid=swg21623113
http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.tro.doc/q045380_.htm?lang=en