搭建rabbitmq服務
1.準備3臺服務器,同步好時鐘、關閉selinux和防火墻,配置/etc/hosts文件
2.安裝epel-release、erlang、rabbitmq-server

  [root@mon01 ~]# wget -O /etc/yum.repos.d/aliyun.repo https://mirrors.aliyun.com/repo/Centos-7.repo  && yum clean all && yum makecache
  [root@mon01 ~]# yum install -y epel-release
  [root@mon01 ~]# yum install -y erlang rabbitmq-server.noarch
3.啟動服務,并設置開機啟動
  [root@mon01 ~]# systemctl enable rabbitmq-server
  [root@mon01 ~]# systemctl start rabbitmq-server
4.配置文件/etc/rabbitmq/rabbitmq.config
5.查看集群的狀態
  [root@mon01 ~]# rabbitmqctl cluster_status
6.配置集群
  編輯rabbitmq的配置文件
   [root@mon01 ~]# vim /etc/rabbitmq/rabbitmq-env.conf #內容如下
    RABBITMQ_NODE_PORT=5672
    ulimit -S -n 4096
    RABBITMQ_NODE_IP_ADDRESS=192.168.43.120
   [root@mon01 ~]# scp /etc/rabbitmq/rabbitmq-env.conf mon02:/etc/rabbitmq/ #在mon02上修改為本機的ip
   [root@mon01 ~]# scp /etc/rabbitmq/rabbitmq-env.conf mon03:/etc/rabbitmq/ #在mon03上修改為本機的ip
   [root@mon01 ~]# scp /var/lib/rabbitmq/.erlang.cookie mon02:/var/lib/rabbitmq/.erlang.cookie
   [root@mon01 ~]# scp /var/lib/rabbitmq/.erlang.cookie mon03:/var/lib/rabbitmq/.erlang.cookie

   [root@mon02 ~]# systemctl restart rabbitmq-server
   [root@mon02 ~]# rabbitmqctl stop_app 
   [root@mon02 ~]# rabbitmqctl join_cluster --ram rabbit@mon01 #該集群名稱可以在mon01上執行rabbitmqctl cluster_status查看
   [root@mon02 ~]# rabbitmqctl start_app

   mon03同上mon02操作,加入集群

  查看rabbitmq的功能插件
   [root@mon01 ~]# rabbitmq-plugins list
  開啟rabbitmq的圖像化界面,重啟rabbitmq-server服務
   [root@mon01 ~]# rabbitmq-plugins enable rabbitmq_management
   [root@mon01 ~]# service rabbitmq-server restart
  修改rabbitmq的guest的密碼
   [root@mon01 ~]# rabbitmqctl change_password guest admin
  創建一個普通用戶openstack
   [root@mon01 ~]# rabbitmqctl add_user openstack admin
  將openstack設置為管理員權限
   [root@mon01 ~]# rabbitmqctl set_user_tags openstack administrator
  設置openstack的用戶的權限
   [root@mon01 ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"  

  刪除一個rabbitmq節點
   [root@mon02 ~]# rabbitmqctl stop_app
   [root@mon01 ~]# rabbitmqctl forget_cluster_node rabbit@mon02
  或者
   [root@mon02 ~]# rabbitmqctl stop_app
   [root@mon02 ~]# rabbitmqctl reset
   [root@mon02 ~]# rabbitmqctl start_app
  將剔除的節點加回集群內
   [root@mon02 ~]# mv /var/lib/rabbitmq/mnesia/rabbit\@mon02 /tmp/
   [root@mon02 ~]# systemctl restart rabbitmq-server
   [root@mon02 ~]# rabbitmqctl stop_app
   [root@mon02 ~]# rabbitmqctl join_cluster --ram rabbit@mon01
   [root@mon02 ~]# rabbitmqctl start_app
  更改集群節點的類型

   [root@mon02 ~]# rabbitmqctl stop_app
   [root@mon02 ~]# rabbitmqctl change_cluster_node_type disc
   [root@mon02 ~]# rabbitmqctl start_app


7.注意事項
  7.1保證集群中至少有一個磁盤類型的節點,以防數據丟失,在更改節點數據類型的時候特別需要注意
  7.2若整個集群被停掉了,應保證最后一個down掉的節點被最先啟動,若不能則要使用forget_cluster_node
   命令將其移出集群
  7.3若集群中節點幾乎同時以不可控的方式down了,此時在某一個節點使用force_boot命令重啟節點