搭建环境:虚拟机+ubuntu20.04
一:准备工作
1.1 准备3台虚拟机,均安装rabbitmq-server,分别对应s1,s2,s3
分别 配置静态 IP为:
192.168.88.140
192.168.88.141
192.168.88.142
1.2 配置域名解析:3台虚拟机都要,修改hosts文件,添加如下内容:
192.168.88.140 s1
192.168.88.141 s2
192.168.88.142 s3
1.3 配置服务器名称:修改3台虚拟机对应的hostname
vi /etc/hostname
分别 修改为:s1、s2、s3
二:集群搭建
说明:
普通集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群镜像。
(.erlang.cookie是erlang分布式的token文件,集群内所有的设备要持有相同的.erlang.cookie文件才允许彼此通信)。
2.1 查找.erlang.cookie文件
find / -name *.cookie
2.2 将查找到的.erlang.cookie文件,分别复制到另外两台虚拟机中。(过程中要输入另外两台虚拟机的密码)
# scp用于复制虚拟机文件到其它虚拟机
# /var/lib/rabbitmq/.erlang.cookie 是复制的文件
# /var/lib/rabbitmq/ 是目标地址
# 具体用法自行百度
scp /var/lib/rabbitmq/.erlang.cookie root@s2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@s3:/var/lib/rabbitmq/
2.3 复制完成后,需要修改文件权限为400
chmod 400 /var/lib/rabbitmq/.erlang.cookie
2.4 erlang.cookie复制完成后,逐个重启节点服务:
systemctl restart rabbitmq-server
2.5 将rabbit@s1作为集群主节点,在节点rabbit@s2和节点rabbit@s3上面分别执行如下命令,以加入集群中
(–ram 指定内存节点类型,–disc指定磁盘节点类型,默认是磁盘节点类型)
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --disc rabbit@s1
rabbitmqctl start_app
2.6 任意一个节点都可查看集群状态
rabbitmqctl cluster_status
2.7 访问web管理界面:
至此,rabbitmq普通集群搭建完成。
2.8 从集群中移除节点:
# 停止节点:停止后不会再分配任务到该节点
rabbitmqctl stop_app
# 重置节点: 加入集群什么的全部重置了
rabbitmqctl reset
# 启动节点
rabbitmqctl start_app
2.9 修改节点类型:
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
rabbitmqctl start_app
2.10 停止所有节点 RabbitMQ 服务,然后使用 detached 参数独立运行,这步很关键,尤其增加节点停止节点后再次启动遇到无法启动都可以参照这个顺序
rabbitmqctl stop
rabbitmq-server -detached
rabbitmqctl cluster_status
三:客户端调用
客户端直接请求主节点的ip,也就是192.168.88.140(s1),然后集群会把消息交给所有节点(s1,s2,s3)去处理