Linux虚拟机搭建RabbitMQ集群

普通集群模式,意思就是在多台机器上启动多个 RabbitMQ 实例,每台机器启动一个。创建的 queue,只会放在一个 RabbitMQ 实例上,但是每个实例都同步 queue 的元数据(元数据可以认为是 queue 的一些配置信息,通过元数据,可以找到 queue 所在实例)。消费的时候,实际上如果连接到了另外一个实例,那么那个实例会从 queue 所在实例上拉取数据过来。

1、服务器准备

host-01 192.168.49.9

host-02 192.168.49.10

host-03 192.168.49.11

关闭防火墙:

bash 复制代码
 systemctl stop firewalld

 systemctl disable firewalld

 systemctl status firewalld

修改hostname:

bash 复制代码
hostnamectl set-hostname host-01


修改三台服务器的hosts:

bash 复制代码
vim /etc/hosts

添加:

bash 复制代码
192.168.49.9 host-01
192.168.49.10 host-02
192.168.49.11 host-03

验证:

修改宿主机hosts文件:

验证:

2、安装erlang环境

三台虚拟机都按照下面方式按装环境:

erlang-23.3.4.10-1.el7.x86_64.rpm下载页面

安装:

bash 复制代码
rpm -ivh erlang-23.3.4.10-1.el7.x86_64.rpm

验证:

bash 复制代码
yum info erlang
3、安装RabbitMq

Rabbitmq官网安装地址

下载:

bash 复制代码
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.0/rabbitmq-server-3.8.0-1.el7.noarch.rpm

下载完成后导入key:

bash 复制代码
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc

安装:

bash 复制代码
rpm -ivh rabbitmq-server-3.8.0-1.el7.noarch.rpm

解决办法:

bash 复制代码
yum install socat

启动RabbitMQ:

bash 复制代码
# 启动rabbitmq
systemctl start rabbitmq-server
# 查看rabbitmq状态
systemctl status rabbitmq-server
#设置开机启动
systemctl enable rabbitmq-server

安装管理界面:

bash 复制代码
rabbitmq-plugins enable rabbitmq_management

管理界面设置登录账号密码:

RabbitMQ默认只有一个guest帐号,guest帐号只能在RabbitMQ安装服务器上登录,在其它服务器用guest登录提示User can only log in via localhost

bash 复制代码
#第一步:添加 admin 用户并设置密码
rabbitmqctl add_user admin 123456
#第二步:添加 admin 用户为administrator角色
rabbitmqctl set_user_tags admin administrator
#第三步:设置 admin 用户的权限,指定允许访问的vhost以及write/read
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
#第四步:查看vhost(/)允许哪些用户访问
rabbitmqctl list_permissions -p /
#第五步:查看用户列表
rabbitmqctl list_users

分别访问三台虚拟机的RabbitMQ:

bash 复制代码
http://host-01:15672/#/
bash 复制代码
http://host-02:15672/#/
bash 复制代码
http://host-03:15672/#/
4、 构建erlang集群

拷贝一台rabbitmq的erlang.cookie到另外一台,被拷贝的视为master

bash 复制代码
 scp /var/lib/rabbitmq/.erlang.cookie root@host-02:/var/lib/rabbitmq
 scp /var/lib/rabbitmq/.erlang.cookie root@host-03:/var/lib/rabbitmq

重启节点:

bash 复制代码
systemctl restart rabbitmq-server

从节点执行如下:

bash 复制代码
#停止服务
rabbitmqctl stop_app
#重置服务
rabbitmqctl reset
#加入集群,$hostname为host-01的hostname
rabbitmqctl join_cluster rabbit@host-01


高可用镜像集群配置:

三台服务器分别执行:

bash 复制代码
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
相关推荐
倔强的石头1067 小时前
【Linux指南】基础IO系列(八):实战衔接 —— 给微型 Shell 添加完整重定向功能
linux·运维·服务器
try2find7 小时前
打印ascii码报错问题
java·linux·前端
Ujimatsu8 小时前
虚拟机安装Ubuntu 26.04.x及其常用软件(2026.4)
linux·运维·ubuntu
一直会游泳的小猫10 小时前
homebrew
linux·mac·工具·包管理
寒秋花开曾相惜10 小时前
(学习笔记)4.2 逻辑设计和硬件控制语言HCL(4.2.1 逻辑门&4.2.2 组合电路和HCL布尔表达式)
linux·网络·数据结构·笔记·学习·fpga开发
狂奔的sherry10 小时前
一次由 mount 引发的 Linux 文件系统“错觉”
linux·运维·服务器
小黑要努力11 小时前
智能音箱遇到的问题(一)
linux·运维·git
ch3nyuyu11 小时前
静态库和动态库的制作
linux·运维·开发语言
一口Linux12 小时前
Linux C编程 | 从0实现telnet获取程序终端控制权
linux·运维·c语言
willhuo12 小时前
Certbot工具在CentOS 7.9上申请和配置SSL证书完整教程
linux·centos·ssl