六、RabbitMQ集群架构——镜像模式

本文详细介绍了在CentOS环境下使用RPM包安装RabbitMQ的过程,包括Erlang环境搭建、socat安装及RabbitMQ服务配置。此外,还深入讲解了如何通过命令行工具rabbitmqctl进行用户管理、权限设置以及集群搭建,提供了从单点部署到多节点集群的全面指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. rmp安装rabbitmq

#erlang
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v20.3.8.9/erlang-20.3.8.9-1.el7.centos.x86_64.rpm
# socat
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
# rabbitmq, el7和el6针对的是linux版本,centos7或者6
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.6/rabbitmq-server-3.7.6-1.el7.noarch.rpm
# 安装
rpm -ivh erlang-20.3.8.9-1.el7.centos.x86_64.rpm
rpm socat-1.7.3.2-5.el7.lux.x86_64.rpm
rpm rabbitmq-server-3.7.6-1.el7.noarch.rpm
# 配置文件的位置
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app

# 用户添加
rabbitmqctl add_user admin admin 
#添加用户,后面两个参数分别是用户名和密码,我这都用superrd了。 
# set_permissions [-p <vhost>] <username> <conf> <write> <read> 
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" 
#添加权限 
rabbitmqctl set_user_tags admin administrator #修改用户角色
# web插件
rabbitmq-plugins enable rabbitmq_management

2. 搭建集群

前提:安装三个节点的rabbitmq,分别在s130,s131,s132

# 1. 停止三个节点
rabbitmqctl stop
# 2. 集群启动,三个节点都启动
rabbitmq-server -detached
# 假如s130为主节点,复制s130中的.erlang.cookie到s131,s132
scp /var/lib/rabbitmq/.erlang.cookie root@s131:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@s132:/var/lib/rabbitmq/
# 3. s131操作,s132亦是如此
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@s130
rabbitmqctl start_app
# 5.集群收缩
rabbitmqctl forget_cluster_node rabbit@s131
# 6. 集群名称修改
rabbitmqctl set_cluster_name rabbitmq_itcloud

如图所示集群节点加入成功

在这里插入图片描述

集群状态查看

[root@s130 rabbitmq]# rabbitmqctl cluster_status
	Cluster status of node rabbit@s130 ...
	[{nodes,[{disc,[rabbit@s130,rabbit@s131,rabbit@s132]}]},
	{running_nodes,[rabbit@s132,rabbit@s131,rabbit@s130]},
	{cluster_name,<<"rabbitmq_itcloud">>},
	{partitions,[]},
	{alarms,[{rabbit@s132,[]},{rabbit@s131,[]},{rabbit@s130s

总结:

有很多资料要做RabbitMQ的负载均衡,我觉得没有必要,我们提前建好队列,将队列分布在不同的节点上面,依然可以达到HaProxy负载均衡的效果,最主要可以省去很多运维的繁琐。

### 使用 Docker 部署 RabbitMQ 镜像集群 #### 创建并启动单个 RabbitMQ 容器 为了构建一个稳定的 RabbitMQ 集群环境,首先需要创建并运行多个独立的 RabbitMQ 实例。通过下面的命令可以启动一个新的 RabbitMQ 容器: ```bash docker pull rabbitmq:management mkdir -p /usr/local/docker/rabbitmq docker run -id --name=rabbitmq \ -v /usr/local/docker/rabbitmq:/var/lib/rabbitmq \ -p 15672:15672 -p 5672:5672 \ -e RABBITMQ_DEFAULT_USER=admin \ -e RABBITMQ_DEFAULT_PASS=admin \ rabbitmq:management ``` 此操作会下载官方管理插件版的 RabbitMQ 镜像,并指定挂载路径以及暴露必要的端口用于远程访问[^1]。 #### 构建多节点集群 当准备就绪之后,可以通过增加额外的服务实例来扩展成一个多节点架构。对于每一个新的成员,重复上述过程以建立其他两个或更多的容器实例。假设已经拥有了三个分别命名为 `myrabbit1`、`myrabbit2` 和 `myrabbit3` 的服务,则可按照如下方式将其余两台服务器加入到由 `myrabbit1` 发起的第一个节点所组成的集群之中: ```bash # 对于 myrabbit2 节点执行以下指令 docker exec -it myrabbit2 bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@myrabbit1 rabbitmqctl start_app exit # 同样地处理 myrabbit3 节点 docker exec -it myrabbit3 bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@myrabbit1 rabbitmqctl start_app exit ``` 这里的关键在于确保所有参与方都指向同一个初始协调者(`--ram`)参数表示该节点将以内存模式存储队列数据从而提高性能[^3]。 #### 访问 Web 控制面板验证集群状态 一旦完成了以上步骤,就可以利用浏览器打开地址栏输入 http://<your_server_ip>:15672 来登录默认提供的图形化界面,在那里能够直观地观察整个系统的健康状况及其内部结构详情[^2]。 #### 用户管理和权限分配 最后一步涉及到了安全性和细粒度控制方面的要求——即定义哪些主体被允许做什么事情。这通常涉及到添加新账户、授予特定角色或者调整现有用户的权利范围等活动。例如,可以在任意一台机器上实施这些更改动作,因为变更会被同步至全网范围内生效: ```bash docker exec -it myrabbit1 bash rabbitmqctl add_user newadmin password rabbitmqctl set_user_tags newadmin administrator rabbitmqctl set_permissions -p "/" newadmin ".*" ".*" ".*" exit ``` 这样做的好处是可以集中管理跨平台的身份认证信息而不必担心一致性问题的发生[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值