ActiveMQ六

多节点集群
大概流程:
1.环境和版本
2.关闭防火墙并保证windows可以ping通过Activemq
3.要求具备zK集群并可以成功启动
4.集群部署规划列表
5.创建3台集群目录
6,修改管理控制台端口
7. hostname名字映射
8. AcitveMQ群配置
9. 修改各节点的消息端口
10. 按顺序启动3个ActiveMQ节点,到这步前提是zk集群已经成功启动运行

ActiveMQ如何保证高可用:集群搭建

在这里插入图片描述
zookeeper集群中都会有一个master,当 Master 宕机后,zookeper 监测到没有心跳信号, 则认为 master 宕机了,然后选举机制会从剩下的 Slave 中选出一个作为 新的 Master

所以,首先搭建zk集群,我这里是用一台机器搭建的一个伪集群

1、.登陆zookeeper官网下载 https://zookeeper.apache.org/

上传到linux后再复制两份出来在这里插入图片描述
分别修改每份下conf/zoo.cfg配置文件,如果没有,就复制zoo_sample.cfg并改名为zoo.cfg
在这里插入图片描述
dataDir 对应目录要手动创建下

dataLogDir  对应目录要手动创建下

clientPort 端口修改一下

server.1=192.168.1.166:4000:5000

server.2=192.168.1.166:4001:5001

server.3=192.168.1.166:4002:5002

修改conf/zoo.cfg 后,myid文件中的内容也要修改,id要对应起来,因为zoo.cfg文件中和myid文件中的id对不上,可能会启动失败。

把对应的id数字写进去,分别进入zookeeper配置的dataDir目录,执行

echo “1”>myid.pid

echo “2”>myid.pid

echo “3”>myid.pid

然后启动三个服务,这个可以写一个脚本启动
在这里插入图片描述
注意:脚本写完需要修改权限为可执行的脚本

chmod  700    zk_batch.sh

启动成功后可以使用jps查看进程
可以进入bin目录下查看各个服务的状态
./zkServer.sh status

2、ActiveMQ集群

1、新建 /mq_cluster文件夹 将原始的解压文件复制三个,进入conf/jetty.xml修改管理控制台端口
在这里插入图片描述
增加IP 到域名的映射(/etc/hosts 文件)
在这里插入图片描述
进入到conf/activemq.xml中,修改为相同的borkername(3个都修改)
在这里插入图片描述
改为 replica levelDB (3个都配,这里列举一个)

<persistenceAdapter>
    <replicatedLevelDB
      directory="{activemq.data}/leveldb"
      replicas="3"
      bind="tcp://0.0.0.0:63631"
      zkAddress="localhost:2191,localhost:2192,localhost:2193"  //zk集群地址
          sync="local_disk"
      zkPath="/activemq/leveldb-stores"
      hostname="mq-server"  //上一步IP 到域名的映射的名称
      />
</persistenceAdapter>

改端口(三个都改,分别为61617、61618、61619)
在这里插入图片描述
activemq集群搭建完成后,需要先启动zk集群,然后在启动mq集群,mq集群的启动和关闭同样可以写一个脚本,跟上述的zk脚本一致,修改路径即可,这样方便我们操作

启动完成后,可以连接一个zk的客户端查看

./zkCli.sh -server 127.0.0.1:2191

连接成功后可以查看mq的三个节点
在这里插入图片描述

查看节点状态

get /activemq/leveldb-stores/00000000003

在这里插入图片描述

可以看到 00000003 的节点状态是master (即为63631 的那个mq 服务) 而其余的00000004、 00000005 activemq 的节点是 slave

到此activemq集群搭建成功

查看三个端口只有8161可以使用,也就是所谓的master
在这里插入图片描述

集群可用性测试:
在这里插入图片描述
修改代码

public static final String ACTIVEMQ_URL = "failover:(tcp://xxx.xxx.xxx.xxx:61616,tcp://xxx.xxx.xxx.xxx:61617,
tcp://xxx.xxx.xxx.xxx:61618)?randomize=false";

public static final String QUEUE_NAME = "queue_cluster";

正常测试:
在这里插入图片描述
收到三条消息
在这里插入图片描述
可用性测试:
杀死8161端口号
在这里插入图片描述
这时8161宕机后,8162激活了(也就是8162被选举为master)

在这里插入图片描述
在这里插入图片描述
继续向mq发送消息,这时会自动连接上激活的服务
在这里插入图片描述
到此activemq可用性测试完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值