Chinaunix首页 | 论坛 | 博客
  • 博客访问: 224799
  • 博文数量: 80
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 790
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 14:16
文章分类

全部博文(80)

文章存档

2007年(40)

2006年(40)

我的朋友

分类:

2006-08-01 01:34:38

集群
1. 集群组成纵览
   1) 3个队列管理器, QM1, QM2, QM3;
   2) QM1和QM2是完全仓储库队列管理器(full repository queue managers);
   3) QM2和QM3拥有可以被其他队列管理器访问的集群队列(cluster queues);
   4) 每个队列管理器都定义了一个叫做TO.qmgr的通道接收端,用来接收消息;这是一个集群接受通道(cluster-receiver

channel);
   5) 每个队列管理器都定义了一个通道发送端,用于连接到完全仓储库的集群接收通道。这是一个集群发送通道(cluster-

sender channel),用于向完全存储库发送集群信息;
      完全存储库队列管理器之间,都有集群发送通道指向对方。
   6) 集群间通信时,需要指明使用的协议(TCP or LU6.2, 或者只用于windows的NetBIOS or SPX)。同时需要通道初始化

器(channel initiators)和通道监听器(channel listeners)。
      channel initiators: SYSTEM.CHANNEL.INITQ
      channel listeners: SYSTEM.DEFAULT.LISTENER.TCP
      对于每个队列管理器,都应该启动监听器,start listener(SYSTEM.DEFAULT.LISTENER.TCP)。
      For z/OS
        START LISTENER PORT(1414) TRPTYPE(TCP)
         or
        START LISTENER LUNMAE(LONDON.LUNAME) TRPTYPE(LU62)
      For iSeries (To start a WebSphere MQ channel listener use the CL command STRMQMLSR.)
        STRMQMLSR MQMNAME(QM1) PORT(1414)
      For windows
        RUNMQLSR -t tcp -p 1414 -m QM1
      For Unix
        runmqlsr -t tcp -p 1414 -m QM1 
     
2. 举例
   有2个队列管理器LONDON, NEWYORK, 集群INVENTORY. NEWYORK中定义了队列INVENTQ
   1) 定义队列管理器
      crtmqm LONDON
      crtmqm NEWYORK
   2) 更改队列管理器的定义,使之成为完全仓储库。
      strmqm LONDON
      runmqsc LONDON
      1 : ALTER QMGR REPOS(INVENTORY)
      2 : end
      strmqm NEWYORK
      runmqsc NEWYORK
      1 : ALTER QMGR REPOS(INVENTORY)
      2 : end
   3) 定义接收端通道(cluster-receiver channel)
      runmqsc LONDON
        DEFINE CHANNEL(TO.LONDON) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME(LONDON'S IP) CLUSTER(INVENTORY)
      runmqsc NEWYORK
        DEFINE CHANNEL(TO.NEWYORK) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME(NEWYORK'S IP) CLUSTER

(INVENTORY)
   4) 定义接收端通道(cluster-sender channel)
      runmqsc LONDOW
        DEFINE CHANNEL(TO.NEWYORK) CHLTYPE(CLUSSDR) TRPTYPE(TCP) CONNAME(NEWYORK'S IP) CLUSTER(INVENTORY)
      runmqsc NEWYORK
        DEFINE CHANNEL(TO.LONDON) CHLTYPE(CLUSSDR) TRPTYPE(TCP) CONNAME(LONDON'S IP) CLUSTER(INVENTORY)
   5) 定义集群队列(cluster queue) INVENTQ
      runmqsc NEWYORK
       DEFINE QLOCAL(INVENTQ) CLUSTER(INVENTORY)
   6) 为每个队列管理器启动监听器。(start the channel initiator on WebSphere MQ for z/OS)
      runmqlsr -t tcp -p 1418 -m LUNDON
      runmqlsr -t tcp -p 1419 -m NEWYORK
   7) 测试
      amqsput INVENTQ LONDON
      输入信息
      amqsget INVENTQ NEWYORK
   8) 将PARIS队列管理器加入到INVENTORY集群中,(并连接道LONDON队列管理器)
      crtmqm PARIS
      strmqm PARIS
      runmqsc PARIS
       DEFINE CHANNEL(TO.PARIS) CHLTYPE(CLUSRCVR) TRPTYPE(TCP) CONNAME(PARIS'S IP) CLUSTER(INVENTORY)
       DEFINE CHANNEL(TO.LONDON) CHLTYPE(CLUSSDR) TRPTYPE(TCP) CONNAME(LONDON'S IP) CLUSTER(INVENTORY)
3.集群的组成
  1)队列管理器和仓储库
     每个队列管理器都有一个叫做SYSTEM.CLUSTER.REPOSITORY.QUEUE的队列,用于存储仓储信息。
     队列管理器通过SYSTEM.CLUSTER.COMMAND.QUEUE来交换、更新仓储信息。
  2)队列
     define qlocal(Q1) cluster(CLUSTER1)
  3)集群传输队列(cluster transmission queue)
     SYSTEM.CLUSTER.TRANSMIT.QUEUE
  4) 集群通道(cluster channel)
  5)自动定义远程队列
     可以使用DISPLAY QUEUE(*) CLUSINFO查看其信息。
  5)自动定义通道
4.别名
  1)队列管理器别名
    共有4个用处:
    a. Remapping the queue-manager name when sending messages
      DEFINE QREMOTE(YORK) RNAME(' ') RQMNAME(CLUSQM)
      定义了YORK作为CLUSQM的别名。
    b. Altering or specifying the transmission queue when sending messages
      用于连接集群和非集群系统
      eg. 集群ITALY, 与非集群队列管理器PALERMO连接,一个在集群内的队列管理器作为网关,做如下定义:
         DEFINE QREMOTE(ROME) RNAME(' ') RQMNAME(PALERMO) XMITQ(X) CLUSTER(ITALY)
      通过ROME,cluster内的管理器都可以将消息送到PALERMO.
    c. Determining the destination when receiving messages
    d. Using a queue manager as a gateway into the cluster.
  2)回复队列别名(Reply-to queue aliases
    队列管理器VENICE将消息送往队列管理器PISA,通过指定队列名称:
     ReplyToQ=‘QUEUE’
     ReplyToQMgr=‘’
    在PISA端,实际接受队列名称为OTHERQ,这需要在VENICE端定义它的别名(QUEUE):
     DEFINE QREMOTE(QUEUE) RNAME(OTHERQ) RQMNAME(PISA)
  3)队列别名
     当用户的程序需要使用其他的队列名称,而又不想更改应用程序时,可使用别名。
     DEFINE QALIAS(PUBLIC) TARGQ(LOCAL) CLUSTER(C)
  4)举例
    CLUSTER1中有QM1, QM2。 其中,QM2有cluster queue(Q2)。QM3不在CLUSTER1中,有队列(Q3)。
    为了与cluster外的队列管理器通信,指定QM1为网关。
    a. 从QM3向集群中的QM2的Q2队列放入信息。(使用distributed queuing techniques)
      在QM3中定义远程队列
        DEFINE QLOCAL(QM1) USAGE(XMITQ)
        DEFINE QREMOTE(Q2) RNAME(Q2) RQMNAME(QM2) XMITQ(QM1)
 DEFINE CHANNEL(QM3.QM1) CHLTYPE(SDR) CONNAME('192.168.1.90(1415)') XMITQ(QM1) TRPTYPE(TCP)
      在QM1中定义
        DEFINE CHANNEL(QM3.QM1) CHLTYPE(RCVR) TRPTYPE(TCP)
    b. 从集群中(QM2)返回信息到集群外的队列管理器(QM3)
        在作为网关的QM1中定义集群外的队列管理器(QM3)的别名(TO.QM3),同时指定cluster,使集群内的队列管理器都

能够使用它。
        DEFINE QREMOTE(TO.QM3) RNAME(' ') RQMNAME(QM3) CLUSTER(CLUSTER1)
        因为QM3不在集群内,所以必须为QM1定义传输队列、发送通道,并在QM3端定义接受通道。
        QM1:
        DEFINE QLOCAL(QM3) USAGE(XMITQ)
        DEFINE CHANNEL(QM1.QM3) CHLTYPE(SDR) CONNAME('192.168.1.90(1417)') XMITQ(QM3) TRPTYPE(TCP)
        DEFINE QREMOTE(TO.QM3) RNAME(' ') RQMNAME(QM3) CLUSTER(CLUSTER1)
        QM3:
        DEFINE CHANNEL(QM1.QM3) CHLTYPE(RCVR) TRPTYPE(TCP)
        ALTER LISTENER(SYSTEM.DEFAULT.LISTENER.TCP) TRPTYPE(TCP) PORT(1417)
        START LISTENER(SYSTEM.DEFAULT.LISTENER.TCP)
       
5. 使用cluster进行大工作量管理
   1)在多个队列管理器中对同一个队列定义多个实例

阅读(1440) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~