[ Openstack ] Openstack-Mitaka 高可用之 Rabbitmq-server 集群部署


 目錄

    Openstack-Mitaka 高可用之 概述
    Openstack-Mitaka 高可用之 環境初始化
    Openstack-Mitaka 高可用之 Mariadb-Galera集群部署
    Openstack-Mitaka 高可用之 Rabbitmq-server 集群部署
    Openstack-Mitaka 高可用之 memcache
    Openstack-Mitaka 高可用之 Pacemaker+corosync+pcs高可用集群
    Openstack-Mitaka 高可用之 認證服務(keystone)
    OpenStack-Mitaka 高可用之 鏡像服務(glance)
    Openstack-Mitaka 高可用之 計算服務(Nova)
    Openstack-Mitaka 高可用之 網絡服務(Neutron)
    Openstack-Mitaka 高可用之 Dashboard
    Openstack-Mitaka 高可用之 啟動一個實例
    Openstack-Mitaka 高可用之 測試

 

 環境介紹

openstack內部是遵循AMQP(高級消息隊列協議)的基礎上采用消息隊列進行通信。 nova對請求應答進行異步調用,當請求接收后立即出發一個回調。由於使用了異步通信,不會有用戶的動作被長置於等待狀態。異步使整個系統變得更加高效。

 集群搭建

以下操作三個節點都需要執行:

安裝rabbitmq

# yum install rabbitmq-server  -y

配置監聽地址(每個controller節點都需要配置本地監聽地址):

[root@controller1 ~]# vim /etc/rabbitmq/rabbitmq-env.conf        # 在RHEL7.2系統上默認是不存在該文件的
RABBITMQ_NODE_IP_ADDRESS=192.168.0.11
RABBITMQ_NODE_PORT=5672

只啟動第一個節點:

[root@controller1 ~]# systemctl start rabbitmq-server

拷貝.erlang.cookie文件到controller2 controller3,注意該文件的權限是400

[root@controller1 ~]# scp /var/lib/rabbitmq/.erlang.cookie controller2:/var/lib/rabbitmq/
.erlang.cookie                                                                                                                    100%   20     0.0KB/s   00:00    
[root@controller1 ~]# scp /var/lib/rabbitmq/.erlang.cookie controller3:/var/lib/rabbitmq/
.erlang.cookie                                                                                                                    100%   20     0.0KB/s   00:00

[root@controller1 ~]# ll /var/lib/rabbitmq/.erlang.cookie 
-r-------- 1 rabbitmq rabbitmq 20 Nov 30 00:00 /var/lib/rabbitmq/.erlang.cookie
[root@controller2 ~]# chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
[root@controller3 ~]# chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

啟動controller2、controller3 rabbitmq服務

# systemctl start rabbitmq-server

將controller2、controller3 與controller1組成集群

Controller2:

[root@controller2 ~]# rabbitmqctl stop_app
Stopping node rabbit@controller2 ...
[root@controller2 ~]# rabbitmqctl join_cluster rabbit@controller1
Clustering node rabbit@controller2 with rabbit@controller1 ...
[root@controller2 ~]# rabbitmqctl start_app
Starting node rabbit@controller2 ...

Controller3:

[root@controller3 ~]# rabbitmqctl stop_app
Stopping node rabbit@controller3 ...
[root@controller3 ~]# rabbitmqctl join_cluster rabbit@controller1
Clustering node rabbit@controller3 with rabbit@controller1 ...
[root@controller3 ~]# rabbitmqctl start_app
Starting node rabbit@controller3 …

在任意節點執行 rabbitmqctl cluster_status 查看集群

[root@controller1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@controller1 ...
[{nodes,[{disc,[rabbit@controller1,rabbit@controller2,rabbit@controller3]}]},
 {running_nodes,[rabbit@controller3,rabbit@controller2,rabbit@controller1]},
 {cluster_name,<<"rabbit@controller1">>},
 {partitions,[]},
 {alarms,[{rabbit@controller3,[]},
          {rabbit@controller2,[]},
          {rabbit@controller1,[]}]}]

設置鏡像隊列
在任意一個節點上執行:

[root@controller1 rabbitmq]# rabbitmqctl set_policy ha-all '^(?!amq\.).*' '{"ha-mode": "all"}'
Setting policy "ha-all" for pattern "^(?!amq\\.).*" to "{\"ha-mode\": \"all\"}" with priority "0" ...
...done.

將所有隊列設置為鏡像隊列,即隊列會被復制到各個節點,各個節點狀態保持一致。

在rabbitmq中創建openstack用戶

[root@controller1 rabbitmq]# rabbitmqctl add_user openstack openstack
Creating user "openstack" ...
...done.
[root@controller1 rabbitmq]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
...done.

到此,rabbitmq高可用搭建完畢。

 

在配置Mariadb-galera和rabbitmq監聽地址的時候,rabbitmq配置監聽地址尤其要注意,配置如下:

[root@controller1 ~]# chown rabbitmq:rabbitmq /etc/rabbitmq/rabbitmq-env.conf
[root@controller1 ~]# systemctl restart rabbitmq-server
[root@controller1 ~]# netstat -ntplu | egrep 5672
tcp        0      0 192.168.0.11:5672       0.0.0.0:*               LISTEN      29644/beam.smp      
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      29644/beam.smp

rabbitmq-env.conf 說明:
RABBITMQ_NODE_IP_ADDRESS= //IP地址,空串bind所有地址,指定地址bind指定網絡接口
RABBITMQ_NODE_PORT=       //TCP端口號,默認是5672
RABBITMQ_NODENAME=        //節點名稱。默認是rabbit
RABBITMQ_CONFIG_FILE= //配置文件路徑 ,即rabbitmq.config文件路徑
RABBITMQ_MNESIA_BASE=     //mnesia所在路徑
RABBITMQ_LOG_BASE=        //日志所在路徑
RABBITMQ_PLUGINS_DIR=     //插件所在路徑


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM