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配置管理器與AIX上Broker之間的連接
由於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…