当前位置:   article > 正文

RabbitMQ详解(六):RabbitMQ集群搭建_rabbitmq 集群搭建

rabbitmq 集群搭建

集群

官方参考文档:https://www.rabbitmq.com/clustering.html

RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现)。因此,RabbitMQ天然支持Clustering。这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样通过ZooKeeper分别来实现HA方案和保存集群的元数据。集群是保证可靠性的一种方式,同时可以通过水平扩展以达到增加消息吞吐量能力的目的。
在实际使用过程中多采取多机多实例部署方式,为了便于同学们练习搭建,有时候你不得不在一台机器上去搭建一个rabbitmq集群,本章主要针对单机多实例这种方式来进行开展。

集群搭建

配置的前提是你的rabbitmq可以运行起来,比如”ps aux|grep rabbitmq”你能看到相关进程

ps aux|grep rabbitmq
或者
systemctl status rabbitmq-server
  • 1
  • 2
  • 3

注意:确保RabbitMQ可以运行的,确保完成之后,把单机版的RabbitMQ服务停止,后台看不到RabbitMQ的进程为止

systemctl stop rabbitmq-server
  • 1

单机多实例搭建

  • 启动第一个节点

    sudo RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit-1 rabbitmq-server start &
    
    • 1

    在这里插入图片描述

  • 启动第二个节点

    sudo RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit-2 rabbitmq-server start &
    
    • 1

    在这里插入图片描述

  • 验证启动 ps aux|grep rabbitmq

    在这里插入图片描述

  • rabbit-1作为主节点

    #停止应用
    > sudo rabbitmqctl -n rabbit-1 stop_app
    #目的是清除节点上的历史数据(如果不清除,无法将节点加入到集群)
    > sudo rabbitmqctl -n rabbit-1 reset
    #启动应用
    > sudo rabbitmqctl -n rabbit-1 start_app
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

  • rabbit-2作为从节点

    # 停止应用
    > sudo rabbitmqctl -n rabbit-2 stop_app
    # 目的是清除节点上的历史数据(如果不清除,无法将节点加入到集群)
    > sudo rabbitmqctl -n rabbit-2 reset
    # 将rabbit2节点加入到rabbit1(主节点)集群当中【Server-node服务器的主机名】
    > sudo rabbitmqctl -n rabbit-2 join_cluster rabbit-1@'Server-node'
    # 启动应用
    > sudo rabbitmqctl -n rabbit-2 start_app
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    在这里插入图片描述

  • 验证集群状态

    sudo rabbitmqctl cluster_status -n rabbit-1
    
    • 1

    在这里插入图片描述

Web监控

  • 安装命令

    rabbitmq-plugins enable rabbitmq_management
    
    • 1

    在这里插入图片描述

  • 添加用户并赋予权限

    rabbitmqctl -n rabbit-1 add_user admin admin
    rabbitmqctl -n rabbit-1 set_user_tags admin administrator
    rabbitmqctl -n rabbit-1 set_permissions -p / admin ".*" ".*" ".*"
    rabbitmqctl -n rabbit-2 add_user admin admin
    rabbitmqctl -n rabbit-2 set_user_tags admin administrator
    rabbitmqctl -n rabbit-2 set_permissions -p / admin ".*" ".*" ".*"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

在这里插入图片描述

  • 一定记得在服务器上安全组开放5672,15672,5673,15673端口,否则无法访问

  • 测试访问http://ip地址:15672/#/ 和http://ip地址:15673/#/

    在这里插入图片描述

测试

  • 假设我们现在将rabbit-2停掉

    [root@hecs-66166 ~]# rabbitmqctl -n rabbit-2 stop_app
    Stopping rabbit application on node rabbit-2@hecs-66166 ...
    
    • 1
    • 2

    在这里插入图片描述

    并且rabbit-2的图形化管理页面也不能访问

  • 现在我们在rabbit-1新建一个队列,然后将rabbit-2启动,rabbit-1停掉

    [root@hecs-66166 ~]# rabbitmqctl -n rabbit-1 stop_app
    Stopping rabbit application on node rabbit-1@hecs-66166 ...
    
    • 1
    • 2

    在这里插入图片描述

    rabbit-1的图形化管理页面也不能访问,rabbit-2的图形化管理页面发现队列无法使用了

    在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/436824
推荐阅读
相关标签
  

闽ICP备14008679号