openstack_rabbitmq集群搭建
一、安装rabbitmq-server软件
1、三个节点同时安装
dnf install rabbitmq-server -y
参考:https://docs.openstack.org/ha-guide/shared-messaging.html#rabbitmq-install
2、在controller1上面启动服务,才会产生.cookie文件
[root@controller1 rabbitmq]# systemctl restart rabbitmq-server
[root@controller1 rabbitmq]# cd /var/lib/rabbitmq/mnesia/
[root@controller1 mnesia]# ll
total 8
drwxr-xr-x 4 rabbitmq rabbitmq 4096 Mar 10 10:16 rabbit@controller1
-rw-r--r-- 1 rabbitmq rabbitmq 4 Mar 10 10:16 rabbit@controller1.pid
drwxr-xr-x 2 rabbitmq rabbitmq 6 Mar 10 10:16 rabbit@controller1-plugins-expand
3、三个节点都要添加用户和授权
salt -v '*' state.highstate
或
[root@salt base]# salt -v 'controller1' state.highstate
[root@salt base]# salt -v 'controller2' state.highstate [root@salt base]# salt -v 'controller3' state.highstate
运行:rabbitmq_others.sls脚本
#controller1
conf_rabbit_policy:
rabbitmq_policy.present:
- name: ha-all
- pattern: '^(?!amq\.).*'
- definition: '{"ha-mode": "all"}'
useradd_rabbit:
rabbitmq_user.present:
- name: openstack
- password: openstack
- force: Ture
- perms:
- '/':
- '.*'
- '.*'
- '.*'
4、检查集群状态
[root@controller1 mnesia]# rabbitmqctl cluster_status
Cluster status of node rabbit@controller1
[{nodes,[{disc,[rabbit@controller1]}]},
{running_nodes,[rabbit@controller1]},
{cluster_name,<<"rabbit@controller1">>},
{partitions,[]},
{alarms,[{rabbit@controller1,[]}]}]
5、在controller1上,复制.erlang.cookie文件到其它两个节点上面。
scp /var/lib/rabbitmq/.erlang.cookie root@controller2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@controller3:/var/lib/rabbitmq/
6、分别在controller2,controller3上面操作
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
7、启动服务 (#分别在controller2,controller3上面操作)
systemctl enable rabbitmq-server.service
systemctl restart rabbitmq-server.service
8、停止服务(#分别在controller2,controller3上面操作)
[root@controller2 rabbitmq]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@controller2
9、加入到controller1集群中 (分别在controller2和controller3上面操作)
[root@controller2 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@controller1
Clustering node rabbit@controller2 with rabbit@controller1
10、启动服务(备注:分别在controller2和controller3上面操作)
[root@controller2 rabbitmq]# rabbitmqctl start_app
Starting node rabbit@controller2
#controller2加入集群示例
[root@controller2 rabbitmq]# systemctl restart rabbitmq-server.service
[root@controller2 rabbitmq]# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
[root@controller2 rabbitmq]# chmod 400 /var/lib/rabbitmq/.erlang.cookie
[root@controller2 rabbitmq]# systemctl restart rabbitmq-server.service
[root@controller2 rabbitmq]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@controller2
[root@controller2 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@controller2
Clustering node rabbit@controller2 with rabbit@controller2
Error: cannot_cluster_node_with_itself
[root@controller2 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@controller1
Clustering node rabbit@controller2 with rabbit@controller1
[root@controller2 rabbitmq]# rabbitmqctl start_app
Starting node rabbit@controller2
#controller3加入集群示例
[root@controller3 rabbitmq]# systemctl restart rabbitmq-server.service
[root@controller3 rabbitmq]# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
[root@controller3 rabbitmq]# chmod 400 /var/lib/rabbitmq/.erlang.cookie
[root@controller3 rabbitmq]# systemctl enable rabbitmq-server.service
[root@controller3 rabbitmq]# systemctl restart rabbitmq-server.service
[root@controller3 rabbitmq]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@controller3
[root@controller3 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@controller1
Clustering node rabbit@controller3 with rabbit@controller1
[root@controller3 rabbitmq]# rabbitmqctl start_app
Starting node rabbit@controller3
#查看集群状态(备注:在任意节点上面操作,都可以看到集群状态)
[root@controller1 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node rabbit@controller1
[{nodes,[{disc,[rabbit@controller1]},
{ram,[rabbit@controller3,rabbit@controller2]}]},
{running_nodes,[rabbit@controller3,rabbit@controller2,rabbit@controller1]},
{cluster_name,<<"rabbit@controller1">>},
{partitions,[]},
{alarms,[{rabbit@controller3,[]},
{rabbit@controller2,[]},
{rabbit@controller1,[]}]}]

浙公网安备 33010602011771号