java怎么连接activemq集群_ActiveMQ+ZooKeeper 集群整合

本文详细介绍了如何使用ZooKeeper实现ActiveMQ的真集群部署,包括ZooKeeper集群的配置、ActiveMQ集群的配置以及客户端的连接方式。通过这样的配置,可以实现高可用性和容错能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本案例使用的是真集群方式,准备三台主机,IP分别为192.168.100.142、192.168.100.143、192.168.100.144

伪集群部署请看:ActiveMQ+ZooKeeper 伪集群整合

如果需要了解ActiveMQ集群部署的整体概念,可以参考我这篇文章:ActiveMQ集群整体认识

原理简介:

一般在部署ActiveMQ集群的时候,更倾向于使用基于ZooKeeper的Replicated LevelDB Store方式,该方式是Master Slave部署方案的其中一种策略,也是在多台主机实现ActiveMQ集群的主流部署方式。 此教程只保证了高可用性。要想保证负载均衡得再结合Broker Clusters 部署方案,配置网络连接器。

工作流程:

在ZooKeeper中管理多个Broker节点,根据 Master选举策略让其中一个 Broker选举为Master(只有Master才具备对外提供服务的能力),剩下Broker为slave。

编码时,client端(消费者)通过failover协议来连接ActiveMQ集群。

一、服务器配置

1. ZooKeeper集群

ZooKeeper集群保证ZooKeeper本身的高可用性。

1.1 修改ZK配置文件conf/zoo.cfg

主机IP

服务端口(默认)

集群通信端口

节点目录/opt/下

192.168.100.142

2181

2888:3888

zookeeper

192.168.100.143

2181

2888:3888

zookeeper

192.168.100.144

2181

2888:3888

zookeeper

集群通信端口:第一个端口是master和slave之间的通信端口,默认是2888;第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888。

在3台主机上都安装zookeeper服务,/opt/zookeeper,并分别配置它们的文件conf/zoo.cfg:

主机1(192.168.100.142):

/opt/zookeeper/conf/zoo.cfg:

# zookeeper的数据存储和日志存储目录(如果目录不存在就新建)

dataDir=/opt/zookeeper/data

dataLogDir=/opt/zookeeper/log

# zk集群之间的通信地址

server.1=192.168.100.142:2888:3888

server.2=192.168.100.143:2888:3888

server.3=192.168.100.144:2888:3888

创建/opt/zookeeper/data/myid文件,填入数字1:

# 由于该主机1(192.168.100.142)是server.1,所以在myid中设置数字1

$ vim /opt/zookeeper/data/myid

主机2(192.168.100.143):

/opt/zookeeper/conf/zoo.cfg:

dataDir=/opt/zookeeper/data

dataLogDir=/opt/zookeeper/log

server.1=192.168.100.142:2888:3888

server.2=192.168.100.143:2888:3888

server.3=192.168.100.144:2888:3888

创建/opt/zookeeper/data/myid文件,填入数字2:

# 由于该主机2(192.168.100.143)是server.2,所以在myid中设置数字2

$ vim /opt/zookeeper/data/myid

主机3(192.168.100.143):

/opt/zookeeper/conf/zoo.cfg:

dataDir=/opt/zookeeper/data

dataLogDir=/opt/zookeeper/log

server.1=192.168.100.142:2888:3888

server.2=192.168.100.143:2888:3888

server.3=192.168.100.144:2888:3888

创建/opt/zookeeper/data/myid文件,填入数字3:

# 由于该主机3(192.168.100.144)是server.3,所以在myid中设置数字3

$ vim /opt/zookeeper/data/myid

1.2 分别启动zookeeper服务

$ /opt/zookeeper/bin/zkServer.sh start # 启动zk服务

$ /opt/zookeeper/bin/zkServer.sh status # 查看zk服务状态

2. ActiveMQ集群

2.1 修改ActiveMQ配置文件conf/activemq.xml和conf/jetty.xml

主机IP

服务端口(默认)

复制协议端口(动态)

jetty控制台端口(默认)

节点目录/opt/下

192.168.100.142

61616

tcp://0.0.0.0:0

8161

activemq/node1

192.168.100.143

61616

tcp://0.0.0.0:0

8161

activemq/node2

192.168.100.144

61616

tcp://0.0.0.0:0

8161

activemq/node3

在3台主机上都安装activemq 服务,/opt/activemq,并分别配置它们的文件conf/activemq.xml和conf/jetty.xml:

主机1(192.168.100.142):

/opt/activemq/conf/activemq.xml:

directory="${activemq.data}/leveldb"

replicas="3"

bind="tcp://0.0.0.0:0"

zkAddress="192.168.100.142:2181,192.168.100.143:2181,192.168.100.144:2181"

zkPath="/opt/activemq/leveldb-stores"

hostname="192.168.100.142"

/>

/opt/activemq/conf/jetty.xml:

主机2(192.168.100.143):

/opt/activemq/conf/activemq.xml:

directory="${activemq.data}/leveldb"

replicas="3"

bind="tcp://0.0.0.0:0"

zkAddress="192.168.100.142:2181,192.168.100.143:2181,192.168.100.144:2181"

zkPath="/opt/activemq/leveldb-stores"

hostname="192.168.100.143"

/>

/opt/activemq/conf/jetty.xml:

主机3(192.168.100.144):

/opt/activemq/conf/activemq.xml:

directory="${activemq.data}/leveldb"

replicas="3"

bind="tcp://0.0.0.0:0"

zkAddress="192.168.100.142:2181,192.168.100.143:2181,192.168.100.144:2181"

zkPath="/opt/activemq/leveldb-stores"

hostname="192.168.100.144"

/>

/opt/activemq/conf/jetty.xml:

2.2 依次启动activemq服务

$ /opt/activemq/bin/activemq start # 启动activemq服务

$ ps -ef|grep activemq # 检查进程是否运行,即activemq是否启动成功

$ netstat -anp|grep 61616 # 查看服务端口61616,监听情况

三、Client使用

该zookeeper+activemq的集群Master Slave部署方案,能够提供(3-1)/2的容错率,即3台服务器允许宕机一台,而不影响整个集群的对外提供服务。

编写代码连接时使用failover策略:

String url = failover:(tcp://192.168.100.142:61616,tcp://192.168.100.143:61616,tcp://192.168.100.144:61616)?initialReconnectDelay=1000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值