WMB_NOTE_学习笔记12

 

6、测试:分别向远程队列里面放入测试消息测试集群和远程队列之间的通信。

【注:若要在集群中实现负载均衡,必须在网关设置一个名字任意,指向为空的远程队列管理器别名,发消息时应该把队列管理器名设置为这个别名。】

 

:在 Cluster 中首先设计一台 MQ 服务器作为整个 Cluster 的网关,作为对外的连接点,它本地并不定义任何输入(Inbound)队列(如上例中的 Q1),只定义输出(Outbound)队列(如上例中的 Q2)。另外设置若干消息处理服务器,其中定义本地的输入队列,同时有消息处理程序在运行。在外部交易进入 Cluster 时首先发送到网关机上,由网关动态地发送到 Cluster 里定义了输入队列的 MQ 服务器上去。MQ 网关可以根据设置,按照轮循或权重的方式对进入的消息进行分发,还可以通过出口程序(User Exit)实现更加复杂的分发机制。

在每个消息处理服务器都部署有完全相同的应用处理程序,它们读取输入队列里的消息,经过处理后把结果写入输出队列。输出队列只定义在 MQ 网关机器上,任何消息处理服务器写出的消息都回最终传送到网关上。前台程序连接网关,读取返回结果。

为了获得更高可用性,这个方案中有两点需要注意:1. 可以看到 MQ 网关是个单点隐患,为了更高可用性,要使用 HACMP 等方案实现备份。2. 如果消息处理服务器上的应用程序意外停止运行,数据会在队列中堆积起来,为了避免这种情况,需要自动脚本在应用程序停止时自动把 MQ 停止,这样后来的消息会发给其他服务器处理。

 

HACMP 工作原理

HACMP High Availability Cluster Multi-Processing 的缩写。HACMP IBM 公司在 P 系列 AIX 操作系统上的高可靠集群软件,配置冗余,消除单点故障,保证整个系统连续可用性和安全可靠性。HACMP是利用网络来侦测主机及网卡的状况,搭配AIX所提供的硬盘镜像等功能,在主机、网卡、硬盘控制卡、硬盘或网络发生故障时,自动切换到另一套备用元件上重新工作; 若是主机故障还切换至备份机上继续应用系统的运行。

作为双机系统的两台服务器同时运行 HACMP 软件;

两台服务器的备份方式有三种 :
一台服务器运行应用,另外一台服务器做为备份

两台服务器除正常运行本机的应用外,同时又作为对方的备份主机;
两台服务器同时运行相同的应用,需要数据库的支持。

两台主机系统在整个运行过程中,通过心跳线相互监测对方的运行情况 (包括系统的软硬件运行、网络通讯和应用运行情况等);
一旦发现对方主机的运行不正常 (出故障)时,故障机上的应用就会立即停止运行,本机(故障机的备份机)就会立即在自己的机器上启动故障机上的应用,把故障机的应用及其资源(包括用到的IP地址和磁盘空间等)接管过来,使故障机上的应用在本机继续运行;
应用和资源的接管过程由 HACMP 软件自动完成,无需人工干预;
当两台主机正常工作时,也可以根据需要将其中一台机上的应用人为切换到另一台机 (备份机)上运行。

 

 

 

十三、AIX下MB使用

 

(0)建用户

1.    root登录

2.    创建MB用户组mqbrkrs

mkgroup mqbrkrs

3.    创建MB用户wbiadmin

mkuser pgrp=mqbrkrs groups=mqm,mqbrkrs home=/home/wbiadmin wbiadmin

4.    MB用户wbiadmin设置密码。

passwd wbiadmin

 

(1)创建配置管理器和队列管理器:

mqsicreateconfigmgr ConfigMgr -i chen -a 0000 -q QueueMgr

启动配置管理器: Mqsistart ConfigMgr

(2)创建代理:

mqsicreatebroker MyBroker -i chen -a 0000 -q QueueMgr -n MyDB -u chen -p 0000

启动代理:mqsistart MyBroker

注:该命令执行用户必须是:windows上是Administrator用户组中用户,UNIX上是mqbrkrs组用户;数据库须先于代理创建;-i指定用户必须mqbrkrs组用户;-u,-p如果不指定,则会缺省使用-i,-a的值。
删除代理:


mqsideletebroker brokername [-q] [-w]

(3)创建执行组:

    mqsicreateexecutiongroup –i 127.0.0.1 –p 2414 –q WBRK61_DEFAULT_QUEUE_MANAGER –b WBRK61_DEFAULT_BROKER –e MyEG

    Mqsicreateexecutiongroup -n .configmgr –b WBRK61_DEFAULT_BROKER –e MyEG

 

删除执行组:

    mqsideleteexecutiongroup –i 127.0.0.1 –p 2414 –q WBRK61_DEFAULT_QUEUE_MANAGER –b WBRK61_DEFAULT_BROKER –e MyEG

    Mqsideleteexecutiongroup -n .configmgr –b WBRK61_DEFAULT_BROKER –e MyEG

注:其中-i,-p,-q可以由-n .configmgr文件代替。

(4)部署命令:

XP:mqsideploy -i localhost -p 1419 -q XP_QM -b XP_BROKER -e EG -a c:\inoutbar.bar

AIX: mqsideploy -i localhost -p 1419 -q AIX_QM -b AIX_BROKER -e AIX_EG2 -a /home/wbiadmin/inoutbar.bar

 

注:其中-i,-p,-q也可以由-n .configmgr文件代替。例如:

mqsideploy –n c:\default.configmgr –b WBRK61_DEFAULT_BROKER –e MyEG –a c:\test.bar。

 

5)配置ODBC连接

a)    用wbiadmin登录系统

b)    用以下命令查看当前设置的ODBC配置文件位置:

echo $ODBCINI

默认位置为/var/mqsi/odbc/.odbc.ini,

c)    vi 打开.odbc.ini文件,为WBRKDB数据库配置ODBC数据源。例如修改为如下设置:

[ODBC Data Sources]

WBRKBKDB=IBM DB2 ODBC Driver

 

[WBRKBKDB]

Driver=/home/db2inst1/sqllib/lib/libdb2.a

Description=WBRKBKDB DB2 ODBC Database

Database=WBRKBKDB

        

[ODBC]

Trace=0

TraceFile=/var/mqsi/odbc/odbctrace.out

TraceDll=/usr/opt/mqsi/merant/lib/odbctrac.so

InstallDir=/usr/opt/mqsi/merant

 

6建立Windows上的MB配置管理器与AIXBroker之间的连接

由于Message Broker V6只有在Windows, Linux操作系统下才有开发界面,而且应用部署须通过创建在Windows平台上的配置管理器来完成。所以,需要建立配置管理器和Broker之间的连接,以便部署应用到Broker上。

a)    启动相关服务。

1)    启动DB2。

2)    启动MQ

3)    启动Broker以及配置管理器的队列管理器(假设Broker的队列管理器名为AIX_QM,配置管理器的QM名为WBRK_QM)

4)    启动windows上的ConfigMgr服务

b)    在Windows MB配置管理器的QM上创建通信需要的MQ对象。

1)    定义用以和AIX Broker通信的传输队列。该传输队列的名称必须与Broker队列管理器的名称一致(在我们的例子是AIX_QM)。

define qlocal (AIX_QM) usage (xmitq);

2)    定义用以和AIX上Broker通信的发送方通道,并令它使用我们刚才定义的传输队列AIX_QM。其中conname为broker所在机器的IP地址。

define channel (XP.TO.AIX) chltype (sdr) conname (130.130.130.7) xmitq (AIX_QM) trptype (tcp)

3)    定义接收方通道。

define channel (AIX.TO.XP) chltype (rcvr) trptype (tcp)

c)    在Broker的队列管理器上创建通信需要的MQ对象。

1)    定义传输队列,注意该传输名称必须和Windows配置管理器所使用的QM的名称完全一样(在本例中是WBRK_QM)。

define qlocal (WBRK_QM) usage (xmitq);

2)    定义指向配置管理器的发送方通道。

define channel (AIX.TO.XP) chltype (sdr) conname (130.130.33.201) xmitq (WBRK_QM) trptype (tcp);

3)    定义接收方通道。

delete channel(AIX.TO.XP);

d)    启动两端的通道。

1)    在AIX上执行:start channel(AIX.TO.XP) 并通过PING CHL(AIX.TO.XP)检测通道是否连通。

2)    在Windows上执行:start channel(XP.TO.AIX) 并通过PING CHL(XP.TO.AIX)检测通道是否连通。

e)    启动两端的消息侦听器。

1)    在AIX上执行:runmqlsr -t tcp -p 1414 -m AIX_QM

2)    在Windows上执行:runmqlsr -t tcp -p 1414 -m WBRK_QM

f)    测试配置是否成功。

1)    在AIX上创建本地队列QL.AIX

define qlocal(QL.AIX)

2)    在Windows上创建指向QL.AIX的远程队列QR.XP_AIX。

define qremote (QR.XP_AIX) rname (QL.AIX) rqmname (AIX_QM) xmitq(AIX_QM)

3)    在windows端向QR.XP_AIX队列放入测试文本。

                Amqsput QR.XP_AIX WBRK_QM

4)    在Broker所在机器上查看是否能接收到刚才发送的文本。

                Amqsget QL.AIX AIX_QM

                如果能接收到,表示配置成功。

 

*****AIX上创建当前Windows的登录用户,譬如db2admin,加入到组mqm(非常重要,如果不做,将无法完成Bar包的部署)

 

*****开发并部署一条简单的消息流。

a)    开发一条简单的消息流,该消息流可以只有两个节点,MQInput节点配置为Q.IN,MQOutput节点配置为Q.OUT。

b)    在AIX_QM上创建Q.IN, Q.OUT两个本地队列。

            DEF QL(Q.IN)

            DEF QL(Q.OUT)

c)    在MB toolkit的当前域中建立新的代理

注意代理名称和队列管理器名称栏须填写的内容必须和您实际创建的Broker的名称和其所使用的队列管理器的名称一致。

d)    等候连接完成。

e)    部署刚才创建的消息流到BRK1的某个执行组,并启动消息流。

f)    验证部署是否成功。

在AIX端:

用如下命令向Q.IN发送测试文本:ampsput Q.IN AIX_QM

            查看Q.OUT是否接收到该文本: amqsget Q.OUT AIX_QM


 

以下文章点击率最高

Loading…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注