资讯专栏INFORMATION COLUMN

ActiveMQ+ZooKeeper 伪集群整合

Honwhy / 3216人阅读

摘要:前言本案例使用的是伪集群方式,即在一台主机上部署个服务端口不同个服务端口不同。要想保证负载均衡得再结合部署方案,配置网络连接器。编码时,端消费者通过协议来连接集群。只需使用进行配置即可,默认端口为。

前言

本案例使用的是伪集群方式,即在一台主机上部署3个activemq服务(端口不同)+3个zookeeper服务(端口不同)。

真集群部署请看: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伪集群配置
-- 服务端口 集群通信端口 节点目录/opt/下
zk1 2181 2887:3887 /zookeeper/zk1
zk2 2182 2888:3888 /zookeeper/zk2
zk3 2183 2889:3889 /zookeeper/zk3
集群通信端口:第一个端口是master和slave之间的通信端口,默认是2888;第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888。

在/opt/zookeeper下复制3个zookeeper服务,并分别配置它们的文件conf/zoo.cfg:

zk1
zk1/conf/zoo.cfg:

# zookeeper的数据存储和日志存储目录(如果目录不存在就新建)
dataDir=/opt/zookeeper/zk1/data
dataLogDir=/opt/zookeeper/zk1/log

#服务端口
clientPort=2181

# zk集群之间的通信地址
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

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

# 由于该zk1是server.1,所以在myid中设置数字1
$ vim /opt/zookeeper/zk1/data/myid

zk2
zk2/conf/zoo.cfg:

# zookeeper的数据存储和日志存储目录(如果目录不存在就新建)
dataDir=/opt/zookeeper/zk2/data
dataLogDir=/opt/zookeeper/zk2/log

#服务端口
clientPort=2182

# zk集群之间的通信地址
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

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

# 由于该zk2是server.2,所以在myid中设置数字2
$ vim /opt/zookeeper/zk2/data/myid

zk3
zk3/conf/zoo.cfg:

# zookeeper的数据存储和日志存储目录(如果目录不存在就新建)
dataDir=/opt/zookeeper/zk3/data
dataLogDir=/opt/zookeeper/zk3/log

#服务端口
clientPort=2183

# zk集群之间的通信地址
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889

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

# 由于该zk3是server.3,所以在myid中设置数字3
$ vim /opt/zookeeper/zk3/data/myid

1.2 分别启动zookeeper服务
$ /opt/zookeeper/zk1/bin/zkServer.sh start # 启动zk1服务
$ /opt/zookeeper/zk2/bin/zkServer.sh start # 启动zk2服务
$ /opt/zookeeper/zk3/bin/zkServer.sh start # 启动zk3服务

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

2. ActiveMQ伪集群配置 2.1 修改ActiveMQ配置文件conf/activemq.xmlconf/jetty.xml
-- 服务端口 jetty控制台端口 节点目录/opt/下
node1 61616 8161 /activemq/node1
node2 61617 8162 /activemq/node2
node3 61618 8163 /activemq/node3

在/opt/activemq/复制3个activemq服务,并分别配置它们的文件conf/activemq.xml和conf/jetty.xml:
conf/jetty.xml:

node1
/opt/activemq/node1/conf/activemq.xml:



    
    
    


  
  
      

/opt/activemq/conf/jetty.xml:


    
     

node2
/opt/activemq/node2/conf/activemq.xml:


    
    


  
  
      

/opt/activemq/conf/jetty.xml:


    
     

node3
/opt/activemq/node3/conf/activemq.xml:


    
    


  
  
      

/opt/activemq/node3/conf/jetty.xml:


    
     

2.2 依次启动activemq服务
$ /opt/activemq/node1/bin/activemq start # 启动节点node1服务
$ /opt/activemq/node2/bin/activemq start # 启动节点node2服务
$ /opt/activemq/node3/bin/activemq start # 启动节点node3服务

$ ps -ef|grep activemq # 检查进程是否运行,即activemq是否启动成功
$ netstat -anp|grep 61616 # 查看服务端口61616,监听情况
$ netstat -anp|grep 61617 # 查看服务端口61617,监听情况
$ netstat -anp|grep 61618 # 查看服务端口61618,监听情况
三、Client使用

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

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

String url = failover:(tcp://192.168.100.142:61616,tcp://192.168.100.142:61617,tcp://192.168.100.142:61618)?initialReconnectDelay=1000

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69253.html

相关文章

  • ActiveMQ+ZooKeeper 集群整合

    摘要:要想保证负载均衡得再结合部署方案,配置网络连接器。编码时,端消费者通过协议来连接集群。一服务器配置集群集群保证本身的高可用性。只需使用进行配置即可,默认端口为。 前言 本案例使用的是真集群方式,准备三台主机,IP分别为192.168.100.142、192.168.100.143、192.168.100.144 伪集群部署请看:ActiveMQ+ZooKeeper 伪集群整合如果需要了...

    xiangchaobin 评论0 收藏0
  • ActiveMQ集群整体认识

    摘要:二集群部署方式集群的部署方式主要有下面种模式实现负载均衡,多个之间同步消息,已达到服务器负载的可能。默认为,单位为毫秒,表示一次尝试重连之间等待的时间。如果宕机,集群退化成标准集群,只是了失去负载均衡能力。 前言 最终需要掌握 Replicated LevelDB Store部署方式,这种部署方式是基于ZooKeeper的。 集群分为两种方式:1.伪集群:集群节点都搭在一台机器上2....

    sixgo 评论0 收藏0
  • ActiveMQ单主机集群案例

    摘要:前言集群分为两种方式伪集群集群节点都搭在一台机器上真集群集群节点分布在多台机器上更多详细真集群与伪集群的区别该教程使用的是伪集群,由于在一个主机上实现集群,这里直接使用了模式共享文件系统。该教程是使用个服务实现集群。 前言 集群分为两种方式:1.伪集群:集群节点都搭在一台机器上2.真集群:集群节点分布在多台机器上更多详细:真集群与伪集群的区别 该教程使用的是伪集群,由于在一个主机上实...

    JessYanCoding 评论0 收藏0
  • HotFrameLearning 热门框架学习(目录)

    摘要:热门框架学习目录项目介绍专辑栏目一简介环境安装配置客户端连接常用命令集群搭建分布式锁二简介环境安装配置基本特性启动过程分析选举过程主从数据同步过程分析集群搭建分布式锁三简介环境安装配置基本特性基本概念和模型收发消息案例架构初识收发消息原 HotFrameLearning 热门框架学习(目录) - I、项目介绍 - II、专辑栏目 一、Redis Redis 简介 Redis 环境安装...

    lakeside 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<