共计 7853 个字符,预计需要花费 20 分钟才能阅读完成。
WebSphere MQ 安装与验证
- WebSphere MQ 安装与验证
- 准备
- 1 检查安装软硬件要求
- 2 安装须知
- 单机服务器安装 MQ 与验证
- 1 创建用户和用户组可选步骤
- 2 解压下载好的 MQ 安装包
- 3 检查 RPM 包是否安装
- 4 查看许可协议并接受必须
- 5 安装 MQ Server 组件
- 6 验证安装是否成功
- 双机服务器方式安装 MQ 与验证
- 1 准备
- 2 配置 B 机
- 3 配置 A 机
- 4 验证
- MQ 客户端安装与验证
- 1 准备
- 2 配置 MQ 服务器 B 机
- 3 配置 MQ 客户端 C 机
- 4 测试客户端和服务器的连通性
- 卸载 MQ
- 其它记录
1. 准备
1.1 检查安装软硬件要求
检查 MQ 安装条件,SUSE Linux 64 位安装要求如下:这里以最新 9.0、8.0 为例
– MQ 9.0 操作系统需要 SUSE Linux Enterprise Server 12 SP1 x86-64,8.0 SUSE Linux 11 SP2 即可即可
– HyperVisor 虚拟化平台支持 VMware ESXi 5.5 以上,Hyper- V 支持 2012,KVM
– 支持的软件:WAS,gcc4.8 以上,DB2 10.5.0.6,IBM JRE(大部分组件只支持自带的 JRE)
– 磁盘空间需要 1GB(服务器组件安装)、内存推荐 3GB
具体见官网提供的各个平台的要求, 其中版本 MQ 9.0、MQ 8.0
1.2 安装须知
关于安装名称
- 确定唯一的安装名称,默认以 Installation1,2 递增,Installation0 保留给 7.0.1 MQ 安装名称
- 安装名称安装成功以后,无法更改
- 名称要求是大小写字母和数字,不允许空格,不区分大小写,最长 16 个字节
- 安装描述信息,可以设置 64 字节的描述,允许中英文
- linux 下使用 crtmqinst 命令设置安装名称,setmqinst 命令设置描述信息
多副本安装
- MQ 支持单机山安装多个副本(多个版本或者同一个版本的不同安装),通过不同安装位置区分
- 单台机器最大支持 128 个副本安装
- 多副本安装可以设置一个主副本,系统会创建环境变量和符号链接,部分管理脚本命令功能需要这些设置;
- 支持 MQ 7.0 fp6 以后的多副本安装,对于需要多副本安装 7.0.1 必须是第一个安装且自动是主安装副本
- 在 MQ 7 之前,单机只能安装一个产品实例
单副本安装
– 从 7.1 版本开始,windows 上 MQ 第一次安装副本默认设置为主副本,Linux 需要手动配置(setmqinst 命令)
– 建议设置主安装副本,这样 MQ 命令和库可以方便应用,会在 /usr/lib,/usr/bin/,/usr/include 下创建符号链接
– 对于非主安装副本,手动设置环境变量以及库路径配置,如 LD_INSTALLATION_PATH
安装位置
– Linux 默认安装位置 /opt/mqm, 工作数据目录 /var/mqm
– Linux 路径长度最大 256 字节,不允许空格
– 安装路径不能已安装 MQ 路径的子目录和部分路径
– 典型安装路径:/opt/IBM/MQ 和 /opt/IBM/MQnew 或者 /opt/IBM/MQ/installations/ 1 和 /opt/IBM/MQ/installations/2
MQ 安装组件(linux)
– Runtime(MQSeriesRuntime),运行时环境,必须安装(客户端和服务器端都需要)
– Server(MQSeriesServer),运行队列管理器和提供消息队列服务,服务器端需要
– Client(MQSeriesClient),MQ 的很小的功能子集,连接 Server 组件,不提供队列管理器
– SDK(MQSeriesSDK), 开发需要,用来编译应用程序
– Sample programs,示例程序
– Java messaging(MQSeriesJava),支持 Java 消息服务功能(JMS)
– Man pages,帮助文档,提供 control 命令,MQI 命令,MQSC 命令帮助
– Java JRE,必须,Java 运行时,支持 MQ 部分 Java 编写的功能
– Message Catalogs,支持的语言
– Global Security Kit,支持加密安全认证功能,必须先安装 JRE
– Telemetry Service(MQSeriesXRService),遥感通信 MQTT 协议,支持传感器等设备连接通信
– MQ Explorer,管理监控 MQ
– Managed File Transfer,文件传输
– Advanced Message Security,更高级的安全保护,必须安装 JRE 和 Security Kit
– AMQP Service,提供 AMQP 通道,支持 MQ Light APIs
2. 单机服务器安装 MQ 与验证
本文采用 SUSE Linux Enterprise 11 x64 SP4 系统,在虚拟机环境下安装,MQ 选用 8.0 版本。
安装 MQ 之前需要先设置操作系统。
2.1 创建用户和用户组(可选步骤)
在 Linux 上,MQ 需要创建安装用户 mqm 和用户组 mqm(注意多系统或者多实例安装 MQ 时注意保证 UID 和 GID 一致),
该用户 ID 拥有 MQ 安装目录和文件的权限。默认 MQ 安装时,未发现 mqm 用户时,会自动创建。
需要指定特定的 UID 和 GID 作为 MQ 的安装用户,可以在安装先手动创建用户和用户组。
权限要求:普通用户必须属于 mqm 组,才有权限运行相关管理命令,例如 crtmqm(创建队列管理器)和 strmqm(启动队列管理器)命令
# groupadd -g 3000 mqm
# useradd -g mqm -u 3000 mqm
2.2 解压下载好的 MQ 安装包
以 root 用户登录系统,安装包放在 /home/mq 目录下
# su - root
# cd /home/mq
# tar -xvf WSMQ_8.0_IFR_TRIAL_LNX_ON_X86_64_.tar.gz
解压缩以后,生成了 server 目录,主要包含了各个组件的 rpm 安装包,因此系统必须支持 rpm 安装方式
2.3 检查 RPM 包是否安装
# zypper se rpm
显示 i 表明已安装,或者直接敲 rpm ? 命令,确定 rpm 命令可用
2.4 查看许可协议并接受(必须)
# cd /home/mq/server
# ./mqlicense.sh -text_only
接受协议,才能继续安装
2.5 安装 MQ Server 组件
安装在默认位置 /opt/mqm, 如果需要改变加入 --prefix /opt/mymq 即可
# rpm -ivh MQSeriesRuntime-*.rpm MQSeriesServer-*.rpm
出现警告:WARNING: System settings for this system do not meet recommendations for this product
See the log file at "/tmp/mqconfig.11472.log" for more information
查看错误信息:# more /tmp/mqconfig.11472.log
发现 linux 信号量、共享内存、系统文件数、进程数等设置未通过检查
修改系统配置内核参数,主要通过 sysctl 命令和 /etc/sysctl.conf
修改 conf 文件,进行永久配置
查看当前设置
# sysctl -a | more
修改 sysctl.conf 文件,将 mqconfig.11472.log 中未 pass 的参数修改
sp4 linux suse 中主要有 file-max、nofile 未通过检测
# vim /etc/sysctl.conf
添加一行,注意空格
设置内核最大打开文件的数量
fs.file-max = 524288
查看系统对用户进程最大打开文件数量的限制
# su - mqm
# ulimit -n 显示 1024,MQ 需要 10240
增加 mqm 用户最大打开文件数量
# su - root
# vim /etc/security/limits.conf
添加:mqm hard nofile 10240
mqm hard nofile 10240
root hard nofile 10240
root hard nofile 10240
重新登录用户或者关闭当前 console 重新打开
# su - root
# ulimit -n
查看显示 10240 即为生效
# rpm -ivh MQSeriesRuntime-*.rpm MQSeriesServer-*.rpm
提示:package MQSeriesRuntime-8.0.0-2.x86_64 is already installed
package MQSeriesServer-8.0.0-2.x86_64 is already installed
可以先卸载
查询包名进行卸载
# rpm -q MQSeriesServer
# rpm -e MQSeriesServer-8.0.0-2
# rpm -q MQSeriesRuntime
# rpm -e MQSeriesRuntime-8.0.0-2
# cd /home/mq/server
# ./mqlicense
# rpm -ivh MQSeriesRuntime-*.rpm MQSeriesServer-*.rpm
至此安装成功
2.6 验证安装是否成功
验证需要安装自带的示例包组件,即 MQSeriesSamples-8.0.0-2.x86_64.rpm
验证的例子完成创建和配置队列管理器,发送消息到队列,以及从队列获取消息的功能
# rpm -ivh MQSeriesSamples-8.0.0-2.x86_64.rpm
# su - mqm
设置环境变量
~ cd /opt/mqm/bin
~ ./setmqenv -s
出现错误:AMQ8595:The setmqenv command was not preceded by the source command
官方解释见[网站](http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.doc/amq8.htm)
需要以 source 命令执行,不是./ 或者 bash setmqenv 方式;source 方式或者. setmqenv -s:是在当前的 shell 中进行设置环境变量
bash setmqenv 或者./setmqenv: 会新开一个子 shell 进行设置,设置后返回父 shell,设置的变量无法改变父 shell
~ source setmqenv -s
检查是否设置成功, 执行查询 mq 版本信息命令
~ dspmqver
创建队列管理器 QMA
~crtmqm QMA
启动队列管理
~strmqm QMA
启动 MQ 脚本解释器:~runmqsc QMA
在脚本解释器里定义本地队列:DEFINE QLOCAL (QUEUE1)
停止 MQSC:end
进入 sample 组件目录:~cd /opt/mqm/samp/bin
~./amqsput QUEUE1 QMA
输入发送的测试消息:test messages from john
test2 messages
敲入 enter 两次,以空行结束
从队列取回消息
~./amqsget QUEUE1 QMA
3. 双机服务器方式安装 MQ 与验证
该方式需要两台服务器,并都安装 MQ 服务器,一台负责发送,一台负责接收消息,这是 MQ 常用场景。
3.1 准备
两台虚拟机 A 机(192.168.98.129),B 机(192.168.98.130),两台必须能够相互网络通信,可以用 ping 测试
A 机和 B 机按照上述单机服务器安装方式(2.1-2.5 步骤,不需要 2.6 验证)安装好 Server,Runtime,Sample 三个组件。其中 A 机作为发送服务器(sender),B 机作为接收服务器(receiver)
3.2 配置 B 机
以 root 登录, 切换到 mqm 用户
# su - mqm
~ cd /opt/mqm/bin
~ source setmqenv -s
~ crtmqm QMB
~ strmqm QMB
~ runmqsc QMB
输入:DEFINE QLOCAL (RECEIVER.Q) 定义本地队列 RECEIVER.Q
继续输入:DEFINE LISTENER (LISTENER1) TRPTYPE (TCP) CONTROL (QMGR) PORT (1414) 定义监听器,接收消息
输入:START LISTENER (LISTENER1) 启动监听器
输入:DEFINE CHANNEL (QMA.QMB) CHLTYPE (RCVR) TRPTYPE (TCP) 定义接收者通道
输入:end 并回车结束输入
3.3 配置 A 机
同样以 root 用户登录,切换到 mqm 用户
# su - mqm
~ cd /opt/mqm/bin
~ source setmqenv -s
~ crtmqm QMA
~ strmqm QMA
~ runmqsc QMA
输入:DEFINE QLOCAL (QMB) USAGE (XMITQ) 定义本地队列 QMB 作��传输队列
访问远程队列的本地定义 LOCAL.DEF.OF.REMOTE.QUEUE
该定义指明 A 机的传输队列 QMB 发送消息给 远程队列(B 机上的 QMB,RECEIVER.Q)
输入:DEFINE QREMOTE (LOCAL.DEF.OF.REMOTE.QUEUE) RNAME (RECEIVER.Q) RQMNAME ('QMB') XMITQ (QMB)
定义发送通道:DEFINE CHANNEL (QMA.QMB) CHLTYPE (SDR) CONNAME ('192.168.98.130(1414)') XMITQ (QMB) TRPTYPE (TCP)
启动:START CHANNEL (QMA.QMB)
结束:end
3.4 验证
进入 A 机, 利用示例程序进行验证
# su - mqm
~ cd /opt/mqm/samp/bin
~ ./amqsput LOCAL.DEF.OF.REMOTE.QUEUE QMA
此时可以随便输入信息,在 B 机上查看
例如:Test messages from A
进入 B 机
# su - mqm
~ cd /opt/mqm/samp/bin
~ ./amqsget RECEIVER.Q QMB
发现无法收到消息,查原因,发现可能是网络通信问题,主要是端口是否放开,因此关闭 B 机的防火墙
root 用户登录
# SuSEfirewall2 stop
# su - mqm
~ cd /opt/mqm/samp/bin
~ ./amqsget RECEIVER.Q QMB
4.MQ 客户端安装与验证
4.1 准备
两台虚拟机,其中 B 机(192.168.98.130)作为 MQ 服务器,C 机 (192.168.98.131) 作为 MQ 客户端
实现 MQ 客户端(C 机)连接到 MQ 服务器(B 机),发送消息给服务器,然后从服务器取回消息
** 重点:**
在客户端和服务器两台机器都需要创建一个非 mqm 组的相同 id 的用户,该用户的 id 必须一致
例如 用户名为 mquser1,id 为 3001
# useradd mquser1 -u 3001
4.2 配置 MQ 服务器(B 机)
在 B 机安装好 MQ Server 组件,具体参见本文第 2 小节
# useradd mquser1 -u 3001
# su - mqm
~ cd /opt/mqm/bin
设置 mq 环境变量
~ source setmqenv -s
创建队列管理器 QUEUE.MANAGER.1, 并启动
~ crtmqm QUEUE.MANAGER.1
~ strmqm QUEUE.MANAGER.1
~ dspmq 查看所有队列管理器运行状态
启动脚本执行器,进行设置
~ runmqsc QUEUE.MANAGER.1
输入:DEFINE QLOCAL(QUEUE1) 创建本地队列 QUEUE1
授权 mquser1 用户(id 为 3001)使用队列 QUEUE1
SET AUTHREC PROFILE(QUEUE1) OBJTYPE(QUEUE) PRINCIPAL('mquser1') AUTHADD(PUT,GET)
授权用户 mquser1 可以连接队列管理器
SET AUTHREC OBJTYPE(QMGR) PRINCIPAL('mquser1') AUTHADD(CONNECT)
定义服务器连接通道
DEFINE CHANNEL(CHANNEL1) CHLTYPE(SVRCONN) TRPTYPE(TCP)
授权 MQ 客户端可以连接上面定义的通道,通过 ip 地址和用户名方式授权
SET CHLAUTH(CHANNEL1) TYPE(ADDRESSMAP) ADDRESS('192.168.98.131') MCAUSER('mquser1')
定义监听器,接受连接
DEFINE LISTENER(LISTENER1) TRPTYPE(TCP) CONTROL(QMGR) PORT(1315)
启动:START LISTENER(LISTENER1)
结束:end
4.3 配置 MQ 客户端(C 机)
解压缩安装包后,安装客户端组件
# cd /home/mq/server
# ./mqlicense.sh -accept
# rpm -ivh MQSeriesRuntime-8.0.0-2.x86_64.rpm MQSeriesClient-8.0.0-2.x86_64.rpm MQSeriesSamples-8.0.0-2.x86_64.rpm
测试与 MQ 服务器 B 机的网络连通
# ping 192.168.98.130
创建连接 mq 服务器的用户:# useradd mquser1 -u 3001
切换到 mquser1
# su - mquser1
设置环境变量,指明与 MQ 服务器的连接信息
~ export MQSERVER=CHANNEL1/TCP/'192.168.98.130 (1315)'
4.4 测试客户端和服务器的连通性
登录 C 机,测试与 B 机是否联通
C 机# telnet 192.168.98.130 1315
如果无法连通,请关闭 B 机的防火墙
B 机# service --status-all
B 机# SuSEfirewall2 stop
在登录 C 机上测试 telnet 远程,成功
# telnet 192.168.98.130 1315
# su - mquser1
~ cd /opt/mqm/samp/bin
发送消息给服务器
~ ./amqsputc QUEUE1 QUEUE.MANAGER.1
输入消息,最后两次 enter 键结束
从服务器取得消息
~ ./amqsgetc QUEUE1 QUEUE.MANAGER.1
5. 卸载 MQ
# rpm -qa | grep MQ 查询当前已安装的 MQ 组件
# rpm -e MQSeriesServer 卸载服务器组件
# rpm -e MQSeriesSamples 卸载示例程序
# rpm -e MQSeriesRuntime 卸载运行时组件,这个一般最后卸载
6. 其它记录
登陆服务器执行:# cd /opt/mqm/samp/bin
#./amqsgetc QUEUE1 QUEUE.MANAGER.1
出现错误:./amqsgetc: error while loading shared libraries: libmqic_r.so: cannot open shared object file: No such file or directory
该错误是部分库未找到,安装 rpm -ivh rpm -ivm MQSeriesClient-8.0.0-2.x86_64.rpm , 然后设置环境变量即可
MQ 常用命令:必须先设置环境变量,才能直接运行
# su - mqm
~ cd /opt/mqm/bin
~ source setmqenv -s
~ dspmq 查看队列管理器状态
~ runmqsc QUEUE.MANAGER.1
进入脚本命令执行命令
DIS 显示可输入的所有命令
DIS CHL(*) 查看通道定义
DIS CHL(CHANNEL1) 查看特定通道定义
DIS LISTENER(*) 查看监听定义
DIS LSSTATUS(LISTENER1) 查看指定监听器的状态
DIS Q(*) 查看队列定义
DIS Q(QUEUE1) 查看队列定义
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139832.htm
![post-qrcode](https://www.xgss.net/wp-content/uploads/2023/07/二维码-微信公众号256x256.jpg)