IBM MQ 作为一种应用范围广泛的异步消息中间件产品,提供了一种方便地将消息流与应用解耦的方式,使得应用设计更加灵活。如在城市 A 的应用程序 1 发送请求给在城市 B 的应用程序 2,由于中间跨越了互联网,使用 MQ 将请求作为异步消息传输是一种很好的方式,避免了过长时间的同步请求等待,并且可以完全依赖 MQ 稳定的 Assure-Once-Delivery 传输能力。IBM MQ 自上世纪 90 年代面世以来,一直受到市场的好评以及各行业的考验,并不断地推陈出新,直到今年 IBM 在延续以往的历史上又推出了改革性的产品——IBM MQ Appliance。
回页首
随着世界经济一体化进程的加速,企业信息系统开始从部门级应用向企业级、跨企业集成的方向转变,同时,由于公司业务增长过程中变得越来越复杂,在地域管理上也越来越分散。使得传统的消息队列中间件体系架构也逐渐的暴露出它的局限性。企业需要另辟蹊径,提供能够快速部署、简单维护、可靠、安全、经济高效的消息传递。
为此,IBM 扩展了消息传递系列产品,发布 IBM MQ Appliance M2000,保证客户在享有 IBM MQ V8 所有优势的同时,还能简便快速地部署这些硬件设备,与现有 MQ 环境或新环境完全兼容,从而降低管理和基础架构成本。
IBM MQ Appliance 是一种功能丰富、灵活的解决方案,可支持 IBM MQ 部署于新用例,并简化现有部署选项。有两种型号,处理能力不同:
任何一种版本的设备都可部署到需要 MQ 队列管理器的地方,包括企业数据中心、分支办事处、工厂等等。随着企业发展,他们可以选择将其 IBM MQ Appliance M2000B 升级到 IBM MQ Appliance M2000A 容量。
图 1.IBM MQ Appliance M2000
IBM MQ Appliance 解决方案的卓越性:
更快、更低廉地部署队列管理器:IBM MQ Appliance 可在单一设备上部署一个或多个队列管理器。能够部署多个队列管理器会加快部署,提供可扩展性,占用较少的数据中心空间,降低功耗,减少管理工作量等。
与现有消息队列中间件基础架构无缝集成:IBM MQ Appliance 中运行的队列管理器与连接的 MQ 环境中其他部分运行的其他队列管理器相同,这意味着 IBM MQ Appliance 与用户现有的 MQ 基础架构无缝集成。MQ 队列可参与到集群中,并与其他 MQ 队列管理器或 MQ 客户端交换消息,而不论队列管理器是部署在软件上还是设备上。IBM MQ Appliance 为企业提供更多部署选项,可与基于软件的传统 MQ 部署一起运行。
IBM MQ Appliance 为 IBM MQ V8 功能提供快速部署选项,使用对提供简单的高可用配置。
锁定确保简便性和安全性。
IBM MQ Appliance 是锁定的。不可安装附加软件,例如用户应用或用户出口等,并且用户文件不可保存在设备上。IBM MQ Appliance 预先优化,因此企业不需要进行修改; 修复包针对硬件进行认证,有助于确保维护更新流程。
回页首
将 MQ Appliance 放置到机柜上以后,按照官方 Knowledge Center 的说明进行配置即可,这里重点强调一下网络连线。为了简化阐述的复杂度,这里我们首先尝试只连接最基本的网口,理解原理后用户可以根据需要再自行配置更多的接口。但为了使 MQ Appliance 独立地工作,我们至少需要先配置两个网络接口,并且要清楚他们对应的网卡,后续配置时需要这些信息。
参考 Knowledge Center 中截取的 MQ Appliance 正面示意图,1 和 2 代表管理端口,在这里我们将网线插入 1 所表示的 mtg0 端口。3、4、5 和 6 这两排是 8 个我们可以使用的数据端口,下面的一排分别对应的是 eth10 到 eth13,上面一排分别对应的是 eth14 到 eth17。在这里我们先只连一条网线到 eth10,即最左下的端口。注意,eth13 和 eth17 可以用来连接两台 MQ Appliance 组成 HA Group 时的心跳线的,所以通常建议预留出来这两个端口。
图 2.MQ Appliance 正面接口示意图
除此之外,第一次使用 MQ Appliance,我们还需要先连上另外一个独立的端口:Console Port。这个端口是专门用来直连 MQ Appliance 进行初始化配置的。该端口是 MQ Appliance 上前面板的最左侧的端口,即上图中 1(mtg0)的左侧,也是一个 RJ45 端口,但我们并不能用普通的网线将笔记本与其相连,而是需要特殊的 ASCII 终端支持的连线。通常 MQ Appliance 会随机带两条连接线,一条是 COM 接口转 RJ45 端口,另一条是 USB 接口转 RJ45 端口。
在这里我们以 Windows 平台笔记本为例,安装随机光盘 Resource Kit 中 driver/win/目录下的驱动程序,具体安装方法可以参考其中的说明。之后 Windows 笔记本就可以识别出来 USB-RJ45 这条连接线了,将 RJ45 端插入 MQ Appliance 的 Console Port。
之后打开任何一个 ASCII 终端工具,这里我们以 Putty 为例,首先配置 Serial 界面下的端口号和速率等,端口号在安装驱动时可以获得,速率按照 MQ Appliance 的要求使用 115200,其它几个值按照默认即可。
图 3. 使用 Putty 配置 Serial 连接
接下来新建一个 COM 口的连接,如下图所示:
图 4. 使用 Putty 开启一个新的连接
点击 Open 即可建立与 MQ Appliance 的连接,不一会儿就会出现 MQ Appliance 的登陆提示(Login:)。
输入默认的用户名密码后,MQ Appliance 会强制要求用户更改密码,之后就可以使用 MQ Appliance 了。第一次启动 MQ Appliance 它会提示我们是否进行初始化配置(Do you want to run the Installation Wizard),选择 yes 并按照 Knowledge Center 的描述进行配置即可。其中需要注意,由于我们只连接了两根网线到 mtg0 和 eth10,因此可以暂时跳过其他网口的设置,等到将来需要时再进行配置。另外,通常机房网络不支持 DHCP,因此需要手动指定 IP 和掩码等信息,可以参考下图的配置方法:
图 5. 配置 MQ Appliance 的网络端口
配置完成并保存好配置信息,之后可以用 show ip 命令查看 ip 地址。返回应当类似如下:
清单 1. 显示 IP 地址信息
M2000# show ip Name ifIndex IP version Prefix length IP address ----- ------- ---------- ------------- ------------- lo 1 ipv4 8 127.0.0.1 lo 1 ipv6 128 ::1 mgt0 4 ipv4 24 9.110.190.254 eth10 8 ipv4 24 9.110.190.253
如果初始化配置时配置了 SSH 以及 Web Console 接口,则此时可以退出 COM5 的连接,拔掉连接线,之后使用正常网络通过浏览器(Web Console)或 SSH 连接到这台设备进行管理。注意,通常建议使用 mtg 端口连接到 MQ Appliance 进行管理,其它 eth 接口只用于业务数据的交换。另外,通常机房都有防火墙设置,因此请确保用于管理的终端设备具有访问 MQ Appliance 网络的权限。
回页首
初始化 MQ Appliance 成功后,可以使用 Web Console(GUI)或者使用 SSH 登陆 Appliance 进行管理,下面分别介绍这两种管理方式。
MQ Appliance 的命令分为两种,一种为 MQ Appliance 管理命令,如:
另一种为 IBM MQ 管理命令,需要用 mqcli 命令进入 MQ 管理模式,使用 exit 退出管理模式,在这种模式下,可以使用如 crtmqm 、delmqm、dspmqm、dspmqini 等命令,以及 runmqsc 进入 MQSC 模式。如下图:
图 6. mqcli 模式
注:原始 DEMO 版本的 MQ Appliance 在创建队列管理器之前,需要初始化硬盘空间。如果输入“mqcli”命令后,显示进入“mqcli fail-safe mode”,需要在 mqcli 模式里输入命令“run mqsysinit”进行初始化。新版本的 IBM MQ Appliance 已无须该操作。
下面,我们执行以下命令创建队列管理器,然后可以使用 Web Console 查看队列管理器状态。
清单 2.MQ Appliance 命令
crtmqm -p 4444 QM1 strmqm QM1 runmqsc QM1 DEFINE QLOCAL(q1) DISPLAY QUEUE (SYSTEM.*) DEFINE CHANNEL(CLIENT.QM1) chltype(SVRCONN) trptype(TCP)
在 MQCLI 模式下,也可以通过编辑 mq.ini 文件修改队列管理器属性。
MQ Appliance 可以将 MQ 日志拷贝到支持 SCP 或者 SFTP 协议的机器上,具体操作如下:
dspmqerr -m QM1
dspmqerr -s
dir mqerr:
copy mqerr:///MQSystem.log scp://me@mycomputer/
在初始化 MQ Appliance 时,如果配置了 Web Console 端口,则现在可以通过浏览器访问 Web Console 管理界面。登陆后 Web Console 管理界面如下:
图 7. Web Console 界面
Web Console 的管理功能分两部分,第一是 Appliance 管理,包括管理 Appliance 的基本信息,如系统时间、语言,网络端口配置,网络接入管理,以及用户和组管理。此处创建的 MQ Appliance 的用户和组只能管理 Appliance,与 MQ 的用户和组不同,MQ 的用户和组需要在命令 mqcli 模式下创建和管理。
图 8. Appliance 管理
点击 MQ Console 进入 MQ 管理界面,MQ 管理界面以 dashboard 模式显示,通过向页面添加不同类型的组件,管理监控 MQ 对象。
图 9. Dashboard 组件
添加 Queue Manager Widget,管理所有队列管理器,包括创建、删除、启动、停止等操作。
图 10. Queue Manager 组件
添加 MQ Object Widget 后,可以选择相应队列管理器,MQ 对象类型,如队列、通道、主题、监听器等类型,进行监控管理。下图创建队列类型的组件。
图 11. MQ 对象组件
在该组件中的工具条主要功能包括:创建队列、删除队列、查看队列属性、清空队列信息、浏览队列信息、向队列中放消息,以及队列的授权管理。
MQ 其他对象的管理组件功能与此类似。
Chart Widget 主要用于监控队列管理器的资源消耗,在设置页面,选择需要监控的队列管理器及监控类型。也可以在一个图表中添加多个队列管理器进行监控。
图 12. 图表组件 1
图 13. 图表组件 2
回页首
当前版本的 IBM MQ Appliance 中运行了 IBM MQ v8.0 版本,用户可以使用 MQ 客户端连接到运行在 MQ Appliance 上的队列管理器。使用 MQ Appliance 可以与传统 MQ 无缝集成,下面介绍使用应用程序和 MQ Explorer 与 MQ Appliance 连接。
参考如下操作步骤,创建队列管理器及其对象。
清单 3. 操作步骤
Mqcli 命令进入 IBM MQ 管理模式 创建 MQ 用户,并在之后的步骤中为该用户授权。 usercreate -u testuser -p passw0rd 创建启动队列管理器 crtmqm -p 4444 QM1 strmqm QM1 进入 MQSC 命令模式 runmqsc QM1 创建本地队列 DEFINE QLOCAL(Q) 定义客户端连接通道,并对通道授权,此处只允许特定 IP 的客户端连接,并将该连接的 MCAUSER 设置为第 2 步创建的用户 DEFINE CHANNEL ('MDB.SVRCONN') CHLTYPE(SVRCONN) TRPTYPE(TCP) SET CHLAUTH ('MDB.SVRCONN') TYPE(ADDRESSMAP) ADDRESS(192.0.2.0) MCAUSER('testuser') 授权 testuser 用户连接和初始化对接管理器 SET AUTHREC OBJTYPE(QMGR) PRINCIPAL('testuser') AUTHADD(CONNECT,INQ) 对进行 put 和 get 操作的程序,授权对队列进行 PUT,GET,INQ,BROWSE 权限 SET AUTHREC PROFILE('Q') OBJTYPE(QUEUE) PRINCIPAL('testuser') AUTHADD(PUT,GET,INQ,BROWSE) 对 publish/subscribe 应用程序,授权对主题 sub 和 pub 操作权限 SET AUTHREC PROFILE('SYSTEM.BASE.TOPIC') OBJTYPE(TOPIC) PRINCIPAL('testuser') AUTHADD(PUB, SUB) 如果使用 MQ Sample 应用程序进行连接,需要设置系统变量,以 Windows 操作系统为例: SET MQSAMP_USER_ID=testuser SET MQSERVER=MDB.SVRCONN/TCP/9.110.190.254(4444) SET MQCCSID=819
在 Windows 操作系统,MQ 示例程序在 MQ_INSTALLATION_PATH /Tools/c/samples/bin 目录下,用 amqsputc 向队列中 put 消息。并且在 Web Console 管理界面浏览消息。
命令:amqsputc Q QM1
图 14. 使用示例程序 PUT 消息
图 15. 使用 MQ Appliance Web Console 浏览消息
以上章节中,我们通过对队列、主题、通道的读写等权限授权,使客户端连接到队列管理器,在使用 MQ Explorer 时,需要额外对 SYSTEM.MQEXPLORER.REPLY.MODEL,SYSTEM.ADMIN.COMMAND.QUEUE,QM1(队列管理器)授权,同时对需要管理的队列、通道进行 Display 等操作的授权。在 MQ Appliance 中,setmqaut 命令被 MQ Web Console 中的授权管理取代,可以在队列管理组件中,为这两个队列授权,如下图:
图 16. 在 Web Console 上为队列授权
完成授权后,在 MQ Explorer 中,选择添加远程队列管理器,在配置页面,填写正确的 IP 和端口,以及连接通道,其他选项使用默认值即可连接到 MQ Appliance 中的队列管理器。
图 17. 使用 MQ Explorer 连接 MQ Appliance 上的队列管理器
如果连接失败,可以使用命令 dspmqerr -m QueueManagerName,在 MQ Appliance 中查看错误日志,根据日志内容对其他 MQ 对象授权即可。