【Linux】【Services】【IaaS】OpenStack-Pike(3.搭建高可用消息隊列)
阿新 • • 發佈:2018-02-12
mission 服務 guide lan nsis edit 錯誤 all scp
1. 簡介
1.1. 官方網站: https://www.rabbitmq.com/
2. 安裝與配置:
詳見:https://docs.openstack.org/ha-guide/shared-messaging.html#rabbitmq-configure
2.1. 安裝:在每個節點上都做
直接使用yum安裝,openstack的yum源中會提供安裝包
yum install rabbitmq-server
啟動服務(確認cookie文件已經生成)
[root@hctjoscontroller01 ~]# systemctl start rabbitmq-server [root@hctjoscontroller01 ~]# ll /var/lib/rabbitmq/.erlang.cookie -r-------- 1 rabbitmq rabbitmq 20 Dec 6 00:00 /var/lib/rabbitmq/.erlang.cookie [root@hctjoscontroller01 ~]#
創建用戶
#前面的openstack是用戶名,後面的openstack是密碼 rabbitmqctl add_user openstack openstack
Creating user "openstack" ...
賦權限
rabbitmqctl set_permissions openstack ".*" ".*" ".*" Setting permissions for user "openstack" in vhost "/" ...
停止rabbitMQ
systemctl stop rabbitmq-server
2.2. 配置
在節點01上,把cookie文件scp到另外兩個節點上
scp /var/lib/rabbitmq/.erlang.cookie root@hctjoscontroller02:/var/lib/rabbitmq/.erlang.cookie scp /var/lib/rabbitmq/.erlang.cookie root@hctjoscontroller03:/var/lib/rabbitmq/.erlang.cookie
在節點02/03上分別修改權限
# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie # chmod 400 /var/lib/rabbitmq/.erlang.cookie
在節點01上啟動服務並查看集群狀態
![技術分享圖片](/img/fz.gif)
[root@hctjoscontroller01 ~]# systemctl start rabbitmq-server.service [root@hctjoscontroller01 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@hctjoscontroller01 ... [{nodes,[{disc,[rabbit@hctjoscontroller01]}]}, {running_nodes,[rabbit@hctjoscontroller01]}, {cluster_name,<<"[email protected]">>}, {partitions,[]}, {alarms,[{rabbit@hctjoscontroller01,[]}]}]
![技術分享圖片](/img/fz.gif)
在節點02和03上啟動服務,停止本機服務,加入01的集群(成功加入以後,再啟動服務就不用執行stop_app了)
![技術分享圖片](/img/fz.gif)
[root@hctjoscontroller02 ~]# systemctl start rabbitmq-server [root@hctjoscontroller02 ~]# rabbitmqctl stop_app Stopping node rabbit@hctjoscontroller02 ... [root@hctjoscontroller02 ~]# rabbitmqctl join_cluster --ram rabbit@hctjoscontroller01 Clustering node rabbit@hctjoscontroller02 with rabbit@hctjoscontroller01 ...
![技術分享圖片](/img/fz.gif)
![技術分享圖片](/img/fz.gif)
[root@hctjoscontroller03 ~]# systemctl stop rabbitmq-server [root@hctjoscontroller03 ~]# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie [root@hctjoscontroller03 ~]# chmod 400 /var/lib/rabbitmq/.erlang.cookie [root@hctjoscontroller03 ~]# systemctl start rabbitmq-server [root@hctjoscontroller03 ~]# rabbitmqctl stop_app Stopping node rabbit@hctjoscontroller03 ... [root@hctjoscontroller03 ~]# rabbitmqctl join_cluster --ram rabbit@hctjoscontroller01 Clustering node rabbit@hctjoscontroller03 with rabbit@hctjoscontroller01 ...
![技術分享圖片](/img/fz.gif)
在01節點上查看狀態
![技術分享圖片](/img/fz.gif)
[root@hctjoscontroller01 ~]# rabbitmqctl cluster_status Cluster status of node rabbit@hctjoscontroller01 ... [{nodes,[{disc,[rabbit@hctjoscontroller01]}, {ram,[rabbit@hctjoscontroller03,rabbit@hctjoscontroller02]}]}, {running_nodes,[rabbit@hctjoscontroller02,rabbit@hctjoscontroller03, rabbit@hctjoscontroller01]}, {cluster_name,<<"[email protected]">>}, {partitions,[]}, {alarms,[{rabbit@hctjoscontroller02,[]}, {rabbit@hctjoscontroller03,[]}, {rabbit@hctjoscontroller01,[]}]}]
![技術分享圖片](/img/fz.gif)
一定要保證能看見三個節點,我在配置過程中出現了下面的錯誤,多重啟幾遍就好了,以後再碰到再研究吧
[root@hctjoscontroller02 ~]# rabbitmqctl join_cluster --ram rabbit@hctjoscontroller01 Clustering node rabbit@hctjoscontroller02 with rabbit@hctjoscontroller01 ... Error: {inconsistent_cluster,"Node rabbit@hctjoscontroller01 thinks it‘s clustered with node rabbit@hctjoscontroller02, but rabbit@hctjoscontroller02 disagrees"}
配置一下ha的模式,我沒太明白官方文檔中的意思,不過看起來是說這樣配置的話可以實現HA模式,消息可以鏡像到其他的節點
rabbitmqctl set_policy ha-all ‘^(?!amq\.).*‘ ‘{"ha-mode": "all"}‘
【Linux】【Services】【IaaS】OpenStack-Pike(3.搭建高可用消息隊列)