rabbitmq 镜像集群部署

环境

centos7,安装基础的包,做好时间同步,关闭防火墙以及selinux,以及主机名解析

192.168.1.62 data4
192.168.1.63 data5
192.168.1.64 data6

版本 rabbitmq-server-3.8.19

安装rabbitmq rpm 源

[root@data4 ~]# curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash

安装erlang 源

[root@data4 ~]# curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash

[root@data4 ~]# yum install rabbitmq-server

配置启动文件

[root@data4 ~]# mkdir -pv /data/rabbitmq/{data,logs}

[root@data4 ~]# chown rabbitmq:rabbitmq /data/rabbitmq/ -R

[root@data4 ~]# cd /etc/rabbitmq/

默认的实例文件,下载或者复制出来,创建 rabbitmq-server.conf

https://github.com/rabbitmq/rabbitmq-server/blob/master/deps/rabbit/docs/rabbitmq-server.service.example

[root@data4 ~]# vim rabbitmq-env.conf

RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf
RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
RABBITMQ_LOG_BASE=/data/rabbitmq/logs
RABBITMQ_NODENAME=rabbit@data4
#RABBITMQ_NODE_IP_ADDRESS
#RABBITMQ_NODE_PORT

scp 传输到其它两个节点一样的配置,唯一要注意这个RABBITMQ_NODENAME=rabbit@data4,改成对应主机。

[root@data4 ~]# systemctl enable --now rabbitmq-server
[root@data4 ~]# rabbitmq-plugins enable rabbitmq_management
[root@data4 ~]# systemctl restart rabbitmq-server
[root@data4 ~]# chmod 400 /var/lib/rabbitmq/.erlang.cookie
[root@data4 ~]# scp -a /var/lib/rabbitmq/.erlang.cookie root@data5:/var/lib/rabbitmq/
[root@data4 ~]# scp -a /var/lib/rabbitmq/.erlang.cookie root@data6:/var/lib/rabbitmq/

将data4作为集群主节点,在节点data5和节点data6上⾯面分别执⾏行行如下命令,以加⼊集群中(--ram 指定内存节点类型,--disc指定磁盘节点类型)

[root@data5 ~]# rabbitmqctl stop_app
[root@data5 ~]# rabbitmqctl reset
[root@data5 ~]# rabbitmqctl join_cluster rabbit@data4 -- 磁盘节点

[root@data6 ~]# rabbitmqctl stop_app
[root@data6 ~]# rabbitmqctl reset
[root@data6 ~]# rabbitmqctl join_cluster rabbit@data4 -- 磁盘节点

查看集群状态

[root@data4 ~]# rabbitmqctl cluster_status
[root@data5 ~]# rabbitmqctl cluster_status
[root@data6 ~]# rabbitmqctl cluster_status

设置管理账号

[root@data4 ~]# rabbitmqctl add_user admin password 
[root@data4 ~]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
[root@data4 ~]# rabbitmqctl set_user_tags admin administrator

权限分类,设置各自的项目账号

aaa 项目账号

[root@data4 ~]# rabbitmqctl  add_vhost aaa_project
[root@data4 ~]# rabbitmqctl  add_user aaa  password
[root@data4 ~]# rabbitmqctl  set_user_tags aaa management
[root@data4 ~]# rabbitmqctl  set_permissions -p aaa_project aaa '.*' '.*' '.*'

bbb 项目账号

[root@data4 ~]# rabbitmqctl  add_vhost bbb_project
[root@data4 ~]# rabbitmqctl  add_user bbb  password
[root@data4 ~]# rabbitmqctl  set_user_tags bbb management
[root@data4 ~]# rabbitmqctl  set_permissions -p bbb_project bbb '.*' '.*' '.*'

关于权限控制可以参考这里 https://wangying.sinaapp.com/archives/2277

删除 guest 账号

[root@data4 ~]#  rabbitmqctl delete_user guest

设置集群名称(可选)

[root@data4 ~]# rabbitmqctl set_cluster_name 集群名称

设置镜像队列策略

[root@data4 ~]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

在 data5 模拟宕机情况

[root@data5 ~]# rabbitmqctl stop_app

在主节点,强制移除节点

[root@data4 ~]# rabbitmqctl forget_cluster_node rabbit@data5

主动移除某个节点,在需要移除的某个节点

[root@data6 ~]# rabbitmqctl stop_app
[root@data6 ~]#  rabbitmqctl reset

参数优化参考 https://www.cnblogs.com/operationhome/p/10483840.html#13-rabbitmq-envconf

posted @ 2021-07-06 17:22  花红沁人心  阅读(124)  评论(0)    收藏  举报