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,[]}]}]

  

posted @ 2018-03-10 11:03  努力哥  阅读(1026)  评论(0)    收藏  举报