【RabbitMQ】单机集群安装(十一)
一、环境说明
笔记本(8G-500G),安装Ubuntu 20.04.3 LTS,学习RabbitMq集群安装。
RabbitMQ 集群
RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现)。
因此,RabbitMQ天然支持Clustering。
这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样通过ZooKeeper分别来实现HA方案和保存集群的元数据。
集群是保证可靠性的一种方式,同时可以通过水平扩展以达到增加消息吞吐量能力的目的。
二、安装RabbitMQ
1、安装 erlang
sudo apt-get install erlang-nox # 安装erlang
erl -version #验证是否成功
2、添加公钥
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
sudo apt-key add rabbitmq-release-signing-key.asc
3、更新软件包
sudo apt-get update
4、安装 RabbitMQ
sudo apt-get install rabbitmq-server #安装成功自动启动
5、查看 RabbitMq状态
systemctl status rabbitmq-server #Active: active (running) 说明处于运行状态
# service rabbitmq-server status 用service指令也可以查看,同systemctl指令
6、启动RabbitMQ
rabbitmq-server -detached
三、单机多实例搭建
1、关闭RabbitMQ服务
systemctl stop rabbitmq-server
### 使用下面命令检测一下,确认mq服务是否都关闭
ps aux|grep epmd
ps aux|grep erl
2、创建并启动节点
sudo RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15672}]" rabbitmq-server start &
sudo RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit1 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" rabbitmq-server start &
sudo RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=rabbit2 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" rabbitmq-server start &
注意,一个节点启动成功之后,再创建下一个节点。
3、设置rabbit为主节点,rabbit1,rabbit2为从节点。
# 停止应用
sudo rabbitmqctl -n rabbit stop_app
# 清楚节点上的历史,否则节点无法加入集群
sudo rabbitmqctl -n rabbit reset
#启动应用
sudo rabbitmqctl -n rabbit start_app
sudo rabbitmqctl -n rabbit1 stop_app
sudo rabbitmqctl -n rabbit1 reset
sudo rabbitmqctl -n rabbit1 join_cluster rabbit@wchw-Lenovo-IdeaPad-Y470
sudo rabbitmqctl -n rabbit1 start_app
sudo rabbitmqctl -n rabbit2 stop_app
sudo rabbitmqctl -n rabbit2 reset
sudo rabbitmqctl -n rabbit2 join_cluster rabbit@wchw-Lenovo-IdeaPad-Y470
sudo rabbitmqctl -n rabbit2 start_app
4、给每个节点添加用户并设置权限以及资源
sudo rabbitmqctl -n rabbit add_user admin wsxadmin
sudo rabbitmqctl -n rabbit set_user_tags admin administrator
sudo rabbitmqctl -n rabbit set_permissions -p / admin ".*" ".*" ".*"
sudo rabbitmqctl -n rabbit1 add_user admin wsxadmin
sudo rabbitmqctl -n rabbit1 set_user_tags admin administrator
sudo rabbitmqctl -n rabbit1 set_permissions -p / admin ".*" ".*" ".*"
sudo rabbitmqctl -n rabbit2 add_user admin wsxadmin
sudo rabbitmqctl -n rabbit2 set_user_tags admin administrator
sudo rabbitmqctl -n rabbit2 set_permissions -p / admin ".*" ".*" ".*"
5、查看集群信息
sudo rabbitmqctl cluster_status -n rabbit
四、小结
如果采用多机部署方式,需读取其中一个节点的cookie, 并复制到其他节点(节点之间通过cookie确定相互是否可通信)。
cookie存放在/var/lib/rabbitmq/.erlang.cookie。
例如:主机名分别为rabbit-1、rabbit-2
1、逐个启动各节点
2、配置各节点的hosts文件( vim /etc/hosts)
ip1:rabbit-1
ip2:rabbit-2
其它步骤雷同单机部署方式
好学若饥,谦卑若愚
分类:
RabbitMQ
标签:
Middleware
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?