在Docker下用MQ9.1镜像创建MQ集群(主备模式)

用MQ9.1镜像创建MQ集群(主备模式)

通过镜像 registry.cn-hangzhou.aliyuncs.com/huxr/mq9.1:1.1 来创建一套MQ多实例集群,步骤如下
步骤1: 拉取镜像
将阿里云镜像仓库中保存的镜像 registry.cn-hangzhou.aliyuncs.com/huxr/mq9.1:1.1 拉取到本地环境
命令:docker pull registry.cn-hangzhou.aliyuncs.com/huxr/mq9.1:1.1
在这里插入图片描述
如图,已将MQ9.1服务镜像获取到了本地
在这里插入图片描述

地已经存在MQ9.1服务的镜像了,接下来就可以根据此镜像运行两个容器,MQ_SERVER1和MQ_SERVER2,为构建MQ集群架构,需要这两个容器之间有共享目录存在,我们定义一个目录 /share 为共享目录(指定宿主机的此目录为容器间的共享数据卷)

#在宿主机上执行
命令:mkdir -p /share/logs /share/qmgrs
命令:chmod -R 777 /share 放开权限,容器内mqm用户会对其进行操作
在这里插入图片描述
#在宿主机上执行命令,运行容器MQ_SERVER1

docker run -it -v /share:/share -p 1414:1414 -p 1415:1415 --name MQ_SERVER1 registry.cn-hangzhou.aliyuncs.com/huxr/mq9.1:1.1 /bin/bash

MQ_SERVER1创建之后执行ifconfig查看此容器的ip,我当前的MQ_SERVER1 ip为 172.17.0.2
在这里插入图片描述
执行ctrl+p+q退出容器MQ_SERVER1

#在宿主机上执行命令,运行容器MQ_SERVER2

docker run -it -v /share:/share -p 1416:1416 --name MQ_SERVER2 registry.cn-hangzhou.aliyuncs.com/huxr/mq9.1:1.1 /bin/bash

MQ_SERVER2创建之后执行ifconfig查看此容器的ip,我当前的MQ_SERVER2 ip为 172.17.0.3
在这里插入图片描述
执行ctrl+p+q退出容器MQ_SERVER2
此时两个容器准备已经完成,如下,接下可以去做具体的实现了
在这里插入图片描述
步骤2:在MQ_SERVER1和MQ_SERVER2中创建MQ集群架构

命令:docker exec -it MQ_SERVER1 /bin/bash 进入MQ_SERVER1容器
命令:su - mqm 切换至mqm用户
在这里插入图片描述
#在MQ_SERVER1顺序执行脚本创建MQ网管 APPNAME_GW

crtmqm  -ld /share/logs -md /share/qmgrs -q APPNAME_GW
strmqm APPNAME_GW
runmqsc APPNAME_GW
define listener(LN1) trptype(TCP) control(QMGR) IPADDR(172.17.0.2) PORT(1414) BACKLOG(1000) replace
start listener(LN1)
define chl(TO.Z1) chltype(CLUSSDR) cluster(CLUSTER_APPNAME) conname('172.17.0.2(1415)')
define chl(TO.GW) chltype(CLUSRCVR) cluster(CLUSTER_APPNAME) conname('172.17.0.2(1414),172.17.0.3(1416)')
define qr(ANY.APPNAME)

在这里插入图片描述
#在MQ_SERVER1顺序执行脚本创建MQ网管 APPNAME_A

crtmqm APPNAME_A
strmqm APPNAME_A
runmqsc APPNAME_A
define listener(LN1) trptype(TCP) control(QMGR) IPADDR(172.17.0.2) PORT(1415) BACKLOG(1000) replace
start listener(LN1)
def chl(TO.Z2) chltype(CLUSSDR) cluster(CLUSTER_APPNAME) conname('172.17.0.3(1416)')
def chl(TO.Z1) chltype(CLUSRCVR) cluster(CLUSTER_APPNAME) conname('172.17.0.2(1415)')
alter qmgr repos(CLUSTER_APPNAME)

在这里插入图片描述
创建好了网关APPNAME_GW和成员APPNAME_A之后退出容器MQ_SERVER1

命令:docker exec -it MQ_SERVER2 /bin/bash 进入MQ_SERVER2容器
命令:su - mqm 切换至mqm用户
在这里插入图片描述
#在MQ_SERVER2顺序执行脚本创建MQ成员 APPNAME_B

crtmqm APPNAME_B
strmqm APPNAME_B
runmqsc APPNAME_B
define listener(LN1) trptype(TCP) control(QMGR) IPADDR(172.17.0.3) PORT(1416) BACKLOG(1000) replace
start listener(LN1)
define chl(TO.Z1) chltype(CLUSSDR) cluster(CLUSTER_APPNAME) conname('172.17.0.2(1415)')
define chl(TO.Z2) chltype(CLUSRCVR) cluster(CLUSTER_APPNAME) conname('172.17.0.3(1416)')
alter qmgr repos(CLUSTER_APPNAME)

在这里插入图片描述
创建好了成员APPNAME_B之后推出容器MQ_SERVER2
执行ctrl+p+q退出容器MQ_SERVER2

步骤3:创建MQ多实例
命令:docker exec -it MQ_SERVER1 /bin/bash 进入MQ_SERVER1容器
命令:su - mqm 切换至mqm用户
在MQ_SERVER1节点上执行

dspmqinf -o command APPNAME_GW

将生成的信息复制出来,准备在MQ_SERVER2节点上执行!本例生成的信息如下

addmqinf -s QueueManager -v Name=APPNAME_GW -v Directory=APPNAME_GW -v Prefix=/var/mqm -v DataPath=/share/qmgrs/APPNAME_GW

复制输出的信息之后再MQ_SERVER2上执行
命令:docker exec -it MQ_SERVER2 /bin/bash 进入MQ_SERVER1容器
命令:su - mqm 切换至mqm用户
执行命令:

addmqinf -s QueueManager -v Name=APPNAME_GW -v Directory=APPNAME_GW -v Prefix=/var/mqm -v DataPath=/share/qmgrs/APPNAME_GW

执行完成之后就发现MQ_SERVER2上已添加了网关的备用管理器
在这里插入图片描述
进入MQ_SERVER1和MQ_SERVER2
先停止MQ_SERVER1上的网关

endmqm APPNAME_GW

在这里插入图片描述
然后在MQ_SERVER1和MQ_SERVER2上分别用多实例方式启动MQ网关

strmqm -x APPNAME_GW

启动完成之后,再次查看MQ_SERVER1和MQ_SERVER2的队列管理器状态
在这里插入图片描述
在这里插入图片描述
至此MQ多实例集群就算创建完成了,之后就可以在此基础上根据需求加入自己想要使用的对象了,如远程队列,发送通道,传输队列,本地队列,发送通道,接收通道等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值