2019年11月29日 星期五

vCD100,設定 RabbitMQ Cluster 並同步

設定RabbitMQ的Cluster
讓整個vCD系統
不會因為單一的RabbitMQ異常

導致
整個vCD運作跟著異常
Cluster的部分
我想讓rabbitmq-1 和 rabbitmq-2之間
可以直接透過rabbit 帳號ssh過去不用在輸入密碼

先建個 rabbit帳號
以及設定密碼
useradd rabbit
passwd rabbit


產生rabbit的金鑰
su rabbit
ssh-keygen -t rsa
ls -al ~/.ssh

將剛產生的 id_rsa.pub 
加到另外一台主機的 ~/.ssh/authorized_keys 檔
ssh-copy-id -i ~/.ssh/id_rsa.pub rabbit@192.168.11.65
ssh-copy-id -i ~/.ssh/id_rsa.pub rabbit@192.168.11.66

先連一下
ssh rabbitmq-1
ssh rabbitmq-2

複製cookie檔案 到rabbitmq-2這台
scp /var/lib/rabbitmq/.erlang.cookie rabbitmq-2:/var/lib/rabbitmq/.erlang.cookie

在rabbitmq-2
重新設定rabbitmq服務
systemctl restart rabbitmq-server
rabbitmqctl stop_app
rabbitmqctl reset

在rabbitmq-2
加到Cluster,並重啟服務
rabbitmqctl join_cluster rabbit@rabbitmq-1
rabbitmqctl start_app

回到RabbirMQ-1
確認cluster狀態

rabbitmqctl cluster_status


單只有Cluster是不夠的
原因在於RabbitMQ的Node
當有queue進到RabbitMQ Node時
他只會在該Node上,但若這個Node不幸掛掉了
另外一個Node則就不會知道queue
所以需要同步
透過指令的方式新增Policy
rabbitmqctl set_policy ha-all "." '{"ha-mode":"all"}'

從Web上
應該也可以看的到
我在rabbitmq-1所下新增的policy
馬上在rabbitmq-2上面也會出現

沒有留言:

張貼留言