activemq原理_消息五:Zookeeper+ActiveMQ 集群实现高可用

使用 Zookeeper 实现的 Master-Slave(主从)的实现方式,是对 ActiveMQ 进行高可用的一种有效解决方案。

高可用的原理:使用 Zookeeper(集群) 注册所有的 ActiveMQ Broker,只有其中的一个 Broker 可以对外提供服务(也就是Master节点),其他的 Broker 处于待机状态,被视为 Slave。如果 Master 因为故障不能对外提供服务,则利用 Zookeeper 的内部选举机制从 Slave 中选举出一个 Broker 充当 Master 节点,继续对外提供服务。

因此通过 Zookeeper+ActiveMQ 实现的集群,可以有效的排除单点故障引起的服务中断。

1环境准备

  • 第一步:准备三台服务机器,因为是本地模拟。所以依赖于 vmware 克隆了三个虚拟机,虚拟机的 IP 地址分别为:

    • 192.168.32.129

    • 192.168.32.131

    • 192.168.32.130

  • 第二步:分别从 zookeeper 和 activemq 的官网上下载其在 linux 环境下的安装包

    • apache-zookeeper-3.6.1-bin.tar

    • apache-activemq-5.15.13-bin.tar

  • 第三步:将下载好的 apache-zookeeper-3.6.1-bin.tar、apache-activemq-5.15.13-bin.tar 分别上传至三台虚拟机中,注意不要直接从 Windows 桌面进行拖拽上传,一定要通过工具连接上 sftp在进行上传,直接拖拽上传,会造成压缩包文件内容的缺失。因此将压缩包上传完成,可以在 linux 下通过 ls -lht 查看下上传后的压缩包大小。

  • 18875592b584b9893c706bcce2fc60df.png

  • 第四步:通过  tar -zxvf apache-zookeeper-3.6.1-bin.tar 命令来解压 zk。

  • 第五步:通过 mv 命令将解压后的 zk 文件名称进行调整。

  • 6383bb9c611fdbd712e2f755e4867fd3.png

  • 第六步:进入到 zk 的安装目录下,新建两个目录 data  和 logs ,分别存放数据和日志;

  • 3467b94ba724a5fb317d6a7d03a034b2.png

  • 第七步:将 zookeeper/conf 目录下的 zoo_sample.cfg 文件名称修改为 zoo.cfg

  • 173c49f437feff89f0f9bd9de48eaf33.png

  • 第八步:在三台虚拟机上分别解压 ActiveMQ 的安装包,为了方便将其解压后的文件夹更名为 activemq。

2 集群配置

  • 第一步:在服务器上(我们本地就是三台虚拟机)的 zk 的  data 目录下都创建 myid 文件,文件内容分别为 1、2、3

  • ea6c6d166584110e6027a2155bb8e4b4.png

  • 第二步:修改 zookeeper/conf/zoo.cfg 文件,加入以下内容:

    dataDir=/home/bao/zookeeper/data/dataLogDir=/home/bao/zookeeper/logs/server.1=192.168.32.129:2888:3888server.2=192.168.32.130:2888:3888server.3=192.168.32.131:2888:3888

    注意:

    • server.X:这个 X 就是分别写入的 data 文件夹下 myid 中的值,且这个值需要和ip一一对应

    • 2888 为主端口,3888 为备用端口。

  • 第三步:为了不影响各个服务器之间的通信,需要通过命令 service iptables stop 关闭防火墙;

  • 第四步:进入 bin 目录下,将 3 台虚拟机上的 zookeeper 都启动起来。通过命令 ./zkServer.sh start 进行启动

  • 第五步:修改 activmq 的 conf 目录下的  activemq.xml 文件。

    • 修改 brokerName = "activemq-cluster"

    • 将文件中的持久化适配器修改为:

       <persistenceAdapter>     <replicatedLevelDB>         directory="${activemq.data}/leveldb"         reclicas=3         bind="tcp://0.0.0.0"         zkAddress="192.168.32.129:2181,192.168.32.130:2181,192.168.32.131:2181"         hostname="192.168.32.129"         zkPath="/activemq/leveldb-stores"     replicatedLevelDB>persistenceAdapter>

      注意:hostname 对应的应该是当前机器对应的 ip,例如我们此时将其配置在 192.168.32.129 服务器上,那么此时就是192.168.32.129。

  • 第六步:在 activemq 的 bin 目录下 执行 ./activemq start 命令启动 ActiveMQ.

  • 第七步:验证集群配置

    综上即验证了集群访问。

    • 先将虚拟机上的三个 activemq 都启动起来

    • 此时访问发现只有一个可以用

    • 将能用的这个停止,另外两个会选择出来一个可以用

    • 此时在将能用的这个重新启动,发现还是无法访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值