共计 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 即可 | |
出现警告: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 | |
查看错误信息: | |
发现 linux 信号量、共享内存、系统文件数、进程数等设置未通过检查 | |
修改系统配置内核参数,主要通过 sysctl 命令和 /etc/sysctl.conf | |
修改 conf 文件,进行永久配置 | |
查看当前设置 | |
修改 sysctl.conf 文件,将 mqconfig.11472.log 中未 pass 的参数修改 | |
sp4 linux suse 中主要有 file-max、nofile 未通过检测 | |
添加一行,注意空格 | |
设置内核最大打开文件的数量 | |
fs.file-max = 524288 | |
查看系统对用户进程最大打开文件数量的限制 | |
增加 mqm 用户最大打开文件数量 | |
添加:mqm hard nofile 10240 | |
mqm hard nofile 10240 | |
root hard nofile 10240 | |
root hard nofile 10240 | |
重新登录用户或者关闭当前 console 重新打开 | |
查看显示 10240 即为生效 | |
提示:package MQSeriesRuntime-8.0.0-2.x86_64 is already installed | |
package MQSeriesServer-8.0.0-2.x86_64 is already installed | |
可以先卸载 | |
查询包名进行卸载 | |
至此安装成功 |
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 | |
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
