其他分享
首页 > 其他分享> > rabbitmq 镜像集群部署

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
```

标签:rabbitmq,rabbitmqctl,集群,data4,data5,镜像,root,节点
来源: https://www.cnblogs.com/xietaiyang/p/14977940.html