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

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

systemctl stop rabbitmq-server

单机多实例搭建

  • 启动第一个节点

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

    在这里插入图片描述

  • 启动第二个节点

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

    在这里插入图片描述

  • 验证启动 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
    

    在这里插入图片描述

  • 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
    

    在这里插入图片描述

    在这里插入图片描述

  • 验证集群状态

    sudo rabbitmqctl cluster_status -n rabbit-1
    

    在这里插入图片描述

Web监控

  • 安装命令

    rabbitmq-plugins enable rabbitmq_management
    

    在这里插入图片描述

  • 添加用户并赋予权限

    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 ".*" ".*" ".*"
    

在这里插入图片描述

  • 一定记得在服务器上安全组开放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 ...
    

    在这里插入图片描述

    并且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 ...
    

    在这里插入图片描述

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

    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值