ActiveMQ--多节点集群

  1. 面试题
    1. 引入消息队列之后该如何保证其高可用性(高可用即是集群,主从)  
  2. 是什么
    1. 基于Zookeeper和levelDB搭建的ActiveMQ集群,集群仅提供主备方式的高可用集群功能,避免单点故障。  
  3. Zookeeper+replicated-leveldb-store的主从集群
    1. 三种集群的对比
      1. 基于sharedFileSystem共享文件系统(kahaDB)
      2. 基于JDBC
      3. 基于可复制的levelDB
    2. 本次案例采用Zk+Replicated LevelDB store 
      • sharedFileSystem
      • 是什么:
        • http://activemq.apache.org/replicated-leveldb-store.html

      • 官网集群原理图
      • 部署规划和步骤(zk+levelDB )
        1. 环境和版本 
        2. 关闭防火墙并保证win可以ping 通Activemq服务器
        3. 要求具备zk集群并可以成功启动
        4. 集群部署规划列表
          1.  

             

        5. 创建三台集群目录
          1. mkdir /mq_ cluster/

          2. cd /mq_ cluster/

          3. cp -r /opt/apache-activemq-5.15.9 mq_ node01

          4. cp -r mq_ node01 mq_ node02

          5. cp -r ma. node01 mq_ node03

          6. 最终结果

        6. 修改管理控制台端口
          1. mq_ node01全部默认不动

          2. mq_ node02

          3. mq_ node03

        7. hostname名字映射
        8. ActiveMQ集群配置
          1. 01/02/03/路径
          2. 3个节点的BrokerName要求全部一直  (vim activemq.xml)
          3. 3个节点的持久化配置  
        9. 修改各节点的消息端口
          1. mq_ node01 全部默认不动

          2. mq_ node02

          3. mq_ node03

        10. 按顺序启动3个activeMQ节点,到这一步前提是zk集群已经成功启动运行
          1. 启动zookeeper集群:
          2. 启动activemq

        11. zk集群的节点状况说明 
          1. 3台zookeeper连接任意一台,查看节点变化
          2. 注册成功activemq,说明我们这三个节点挂上了
          3. 查看arivemq集群那个时master,使用get命令

        12. 集群可用性测试  

          1. 客户端只能访问master的管理控制台后端:8161 ,能访问监听的只有在mster的8161
          2. 我们只能访问8161,8161的时主机其他是从机。我们只能访问master的端口号,从机之时和主机的数据一样,是能访问器端口号的
          3.  正常情况:

            1. 代码测试队列上生产者生产代码、

            2. 查看后台情况

            3. 消费者执行消费消息的代码

              1.  

            4. 正常情况下一切消息队列正常生产和消费
            5. 第二种,特殊情况干掉一台ActiveMQ节点,他会自动切换到一个活的节点(单点故障迁移)
              1. 利用命令将msater干掉,查看剩余俩台的从机的状态
                1. 选举于00000016号从机作为master
                2. 这是我们访问后台的管理页面不能访问8161了,是访问不到的因为我们,停掉了maseter所以他的端口号也无法访问
                3. 这是出现了新的主机master,我们可以访问新的master的管理控制台端口号,000000016的端口号是192.168.56.130:8162
                4. 并且只有新的master管理控台端口号能访问,其他的端口号仍无法访问
                5.  挂掉一台master会有另一台master,实现高可用,

                6. 执行生产者代码 ,仍可以发送消息,不受影响

                  1.   
                7.  执行消费者代码,仍让不受影响和先前没有挂掉一台服务器一样,这就是实现了高可用性(和三台服务器的情况是一样的)

                  1.  

                     

                     

                      

                      
                8. 和前面三台机器是一样只不过访问的端口号变成了新的master消息端口号  

 

posted @ 2021-05-30 20:29  张紫韩  阅读(238)  评论(0编辑  收藏  举报