当前位置 博文首页 > 文章内容

    Zookeeper+ActiveMQ搭建集群实现高可用

    作者: 栏目:未分类 时间:2020-10-13 18:02:03

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    一、搭建Zookeeper集群

      Zookeeper搭建方案

    服务器编号 服务器IP地址 LF通信端口 LF选举端口 客户端端口
    1 192.168.229.131 2888 3888 2180
    2 192.168.229.134 2888 3888 2180
    3 192.168.229.133 2888 3888 2180

     

     

     

     

     

      

    具体的Zookeeper集群搭建可以参考这篇博客https://www.cnblogs.com/xiaomaomao/p/13800523.html

     

    二、搭建ActiveMQ集群

      1、ActiveMQ搭建方案

    服务器IP地址 ActiveMQ后台断后 ActiveMQ管理控制台端口
    192.168.229.131 61617 8161
    192.168.229.134 61618 8161
    192.168.229.133 61619 8161

     

     

     

     

     

     

      2、拷贝压缩包到 /otp 目录下,之所以放置在 /opt 目录下,是为了备份一个压缩包,方便以后再用

    // 复制压缩包到安装目录下,我这里的安装目录是自己在 /usr/local/下新建的一个activemq目录
    cp -r apache-activemq-5.15.5-bin.tar.gz /usr/local/activemq/

      3、解压缩到当前目录

      4、进入解压后的文件目录

      5、修改activemq.xml配置文件,使用性能比较好的LevelDB替换掉默认的KahaDB

    配置项 说明
    directory 持久化数据存放地址(默认的情况下${activemq.data}下是没有leveldb目录的,要自己创建)
    replicas 集群中节点的个数(由于我们是三台服务器搭建的ActiveMQ,所以replicas的数量是3)
    bind 集群通信端口
    zkAddress ZooKeeper集群地址
    hostname 当前服务器的IP地址,如果集群启动的时候报未知主机名错误,那么就需要配置主机名到IP地址的映射关系
    zkPath ZooKeeper数据挂载点(集群启动成功之后,会在zookeeper下自动注册该节点)

     

     

     

     

     

     

     

     

      

     

      配置主机名到IP地址的映射关系具体可以参考这篇博文 https://www.cnblogs.com/xiaomaomao/p/13810251.html

      三台ActiveMQ服务器的配置如下:

      192.168.229.131服务器

    <!-- 三台服务器的brokerName一定要保持一致 -->
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-zookeeper-test" dataDirectory="${activemq.data}">
    
    <persistenceAdapter>
    	<!--注释掉或者删除掉kahaDB-->
    	<!--kahaDB directory="${activemq.data}/kahadb"/ -->
            <replicatedLevelDB
            directory="${activemq.data}/leveldb"
            replicas="3"
            bind="tcp://0.0.0.0:61617"
            zkAddress="192.168.229.131:2180,192.168.229.134:2180,192.168.229.133:2180"
            hostname="192.168.229.131"    
            zkPath="/activemq/leveldb-stores"/>
    </persistenceAdapter>

      192.168.229.134服务器

    <!-- 三台服务器的brokerName一定要保持一致 -->
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-zookeeper-test" dataDirectory="${activemq.data}">
    
    <replicatedLevelDB
    <!--kahaDB directory="${activemq.data}/kahadb"/ -->
            directory="${activemq.data}/leveldb"
            replicas="3"
            bind="tcp://0.0.0.0:61618"
            zkAddress="192.168.229.131:2180,192.168.229.134:2180,192.168.229.133:2180"
            hostname="192.168.229.134"    
            zkPath="/activemq/leveldb-stores"/>
    </persistenceAdapter>

      192.168.229.133服务器

    <!-- 三台服务器的brokerName一定要保持一致 -->
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="activemq-zookeeper-test" dataDirectory="${activemq.data}">
    
    <replicatedLevelDB
    		<!--kahaDB directory="${activemq.data}/kahadb"/ -->
            directory="${activemq.data}/leveldb"
            replicas="3"
            bind="tcp://0.0.0.0:61619"
            zkAddress="192.168.229.131:2180,192.168.229.134:2180,192.168.229.133:2180"
            hostname="192.168.229.133"    
            zkPath="/activemq/leveldb-stores"/>
    </persistenceAdapter>
    

     

    三、启动集群

      1、操作之前保证关闭防火墙,并且windows和Linux相互之间是可以ping通的

      2、先启动ZooKeeper集群,因为只有zookeeper集群启动之后,你才能将ActiveMQ服务在zookeeper上注册  

      3、然后再分别启动三台ActiveMQ服务器

     

    四、测试

      使用ZooInspector工具来查看具体的内容,关于Zoolnspector工具的使用,可以参考这篇博文 https://www.cnblogs.com/xiaomaomao/p/13810168.html

      通过查看Zookeeper的节点信息情况,可以得出192.168.229.131被选举成了主机,那么使用该主机去登录ActiveMQ的客户端,可以登录成功

      使用命令 ./activemq stop 关闭 192.168.229.131这台主机,查看ZooInspector,发现zookeeper通过选举机制推举出了新的主机 192.168.229.134,使用该主机访问ActiveMQ的控制台,发现可以登录ActiveMQ的管理控制台

      重新启动192.168.229.131这台服务器,保证三台服务器同时在线,然后手动down掉一台slaver,发现ActiveMQ依旧可以提供服务,如果半数的服务器是正常的情况下,整个集群就能正常工作,这样就保证了高可用

      至此,整个集群的搭建就完成了.