提前准备: 

otp_src_26.2.1.tar.gz  

rabbitmq-server-generic-unix-3.12.12.tar.xz

3台服务器    

#添加hosts文件

vim /etc/hosts 

服务器1的ip   对应机器的主机名
服务器2的ip   对应机器的主机名
服务器3的ip   对应机器的主机名



#安装所需依赖

apt update && sudo apt upgrade -y

apt-get install libncurses5-dev libwxgtk3.0-gtk3-dev libssl-dev


mkdir /data

#将两个tar包上传到此目录

cd /data

tar -xf otp_src_26.2.1.tar.gz  

tar -xf rabbitmq-server-generic-unix-3.12.12.tar.xz

cd  otp_src_26.2.1/

./configure --prefix=/opt/erlang


#出现以上图片中的提示 无需理会 正常继续编译即可

make && make install

#设置环境变量
vim /etc/profile

export PATH=$PATH:/opt/erlang/bin
export PATH=$PATH:/data/rabbitmq_server-3.12.12/sbin


source /etc/profile

erl -version  
#验证erlang环境变量是否配好


#####################################################




 以上操作需要三台机器都要操作





#####################################################



#选取其中一台服务器 启动rabbitmq服务

rabbitmq-server -detached

rabbitmqctl status

#查看状态

#将启动的这台服务器 /root目录下的.erlang.cookie文件scp到其他两台服务器中

scp /root/.erlang.cookie  root@节点2服务器ip:/root
scp /root/.erlang.cookie  root@节点3服务器ip:/root

#随后启动剩下的两台服务器

rabbitmq-server -detached

#停止节点
rabbitmqctl stop_app

#加入节点
rabbitmqctl join_cluster rabbitmq@节点名称

#节点名称不清楚 可以在第一个启动的节点 执行 rabbitmqctl cluster_status 查看 应该在输出的信息里的第一行就能找到 两台节点加入成功集群成功后 可通过 rabbitmqctl cluster_status 查看是否有3个节点

#如果查询不到 没加入 需重新启动2台后加入的节点的rabbitmq服务

rabbitmqctl stop

rabbitmq-server -detached

rabbitmqctl cluster_status
#再次执行查询命令 查看集群内是否有三台机器

rabbitmqctl add_user admin 123456
#创建用户名为admin 密码为123456

rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
#给admin客户最大权限

rabbitmqctl set_user_tags admin administrator
#给admin加入管理员权限

rabbitmqctl set_permissions -p '/' admin  '.' '.' '.' -n rabbit@集群名称

#创建用户和设置权限只需在一台机器上执行即可
#以下需要在三台机器上执行

abbitmq-plugins enable rabbitmq_management
#开启web页面

rabbitmq-plugins enable rabbitmq_mqtt rabbitmq_web_mqtt rabbitmq_web_stomp rabbitmq_web_stomp_examples
#开启mqtt协议 和 websocket协议


#开启镜像模式
#在任意一个节点上执行:
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all" , "ha-sync-mode":"automatic"}'


参数含义:
pattern: 队列名字的通配符
ha-mode:镜像队列提供了三种模式:
all:全部的节点队列都做镜像;
exactly:指定镜像队列的节点最高镜像数量;
nodes:只为指定具体节点配置镜像队列;
ha-sync-mode :节点之前的同步模式。有自动和手动两种,默认是手动,这里设置为自动。

或者指定vhost:
rabbitmqctl set_policy -p demo ha-all "^" '{"ha-mode":"all" , "ha-sync-mode":"automatic"}'
将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直。
到这里,RabbitMQ 高可用集群就已经搭建好了,最后一个步骤就是搭建均衡器。

策略名称:自定义
“^”:匹配所有队列
ha-sync-mode: 默认为手动,可以配置为自动,区别在于,如果是自动做镜像回复,则该队列会处于不可用状态直到同步完成。


#开启这两个协议后 需要重启集群
rabbitmqctl stop
rabbitmq-server -detached


#重启后 执行查看节点状态
rabbitmqctl cluster_status


#最后浏览器访问
ip:15672
输入账号admin  密码123456  即可





rabbitmqctl set_vm_memory_high_watermark 0.8
#设置rabbitmq最大内存为80%

 

参考文章:

『RabbitMQ』手把手带你搭建RabbitMQ镜像集群-阿里云开发者社区 (aliyun.com)

RabbitMQ高可用-镜像模式部署使用 - 一片相思林 - 博客园 (cnblogs.com)

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐