共計 1830 個字符,預計需要花費 5 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下如何構建 MongoDB RepSet +Consul 高可用切換系統,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
MongoDB RepSet +Consul
環境介紹:
MongoDB 副本集:192.168.151:27151 已經安裝了 consul agent
192.168.152:27152 已經安裝了 consul agent
192.168.153:27153 已經安裝了 consul agent
原理介紹:
拋棄 VIP,使用 consul 和 sentinel 構建 redis 的高可用系統
mongoDB 副本集的搭建
1.MongoDB 主從角色檢查腳本(MongoDB 副本集分為 primary 和 secondary,但為方便理解,仍稱為主從關系):
cat /root/check/mongo_isMaster.sh EOF
#!/bin/bash
PORT=$1
ROLE=$2
a=$(mongo -uroot -psa123456 --port $PORT --host 192.168.1.151 --authenticationDatabase admin --eval rs.isMaster() |grep -i isMaster |awk -F : {print $2} |awk -F , {print $1} )
#a=$(redis-cli -p $PORT info Replication|grep role:|awk -F : {print $2} |awk -F \r {print $1} )
if [ $a = $ROLE ]; then
exit 0
exit 2
chmod +x /root/check/mongo_isMaster.sh
#檢查腳本執行, 第一個參數用來指定端口, 第二個參數 true 即檢測是否主, 若為 false 即是檢測是否從
./mongo_isMaster.sh 27151 true
#讀取腳本執行結果,返回值為 0,滿足條件,返回值為 2,異常,不滿足
echo $?
2.MongoDB 對應的 consul 服務配置文件(27151),其他兩個更改端口和 IP 地址即可
cat /etc/consul/mongo_27151.json EOF
services :[
{
id : 27151master ,
name : mongo-master ,
tags :[master],
address : 192.168.1.151 ,
port :27151,
checks :[
{ args :[ /root/check/mongo_isMaster.sh , 27151 , true],
interval : 1s
}
]
},
{
id : 27151slave ,
name : mongo-slave ,
tags :[slave],
address : 192.168.1.151 ,
port :27151,
checks :[
{ args :[ /root/check/mongo_isMaster.sh , 27151 , false],
interval : 1s
}
]
}
]
EOF
3. 重新加載 consul agent 配置文件
root@MongoDB151-FedoraServer-IP151#consul reload
注意!!!:在線上主庫發送故障轉移后,從庫會變為新主,在原主庫重新排除故障上線之前應更改新主庫的優先級為本副本集中最高,防止原主庫上線后以高優先級強制重新搶占主庫的地位,導致部分事務丟失或者連接抖動
MongoDB 相關命令:
rs.isMaster() # 檢查自己是否為主
更改實例優先級
conf=rs.conf
conf.members[1].priority=10 # 配置中顯示順序第二的優先級設為 10(和_id 段的數沒關系,僅僅是顯示的第二個)rs.reconfig(conf) # 只能在主上執行
rs.reconfig(conf,{force:true}) # 可以強制在從上執行,但會導致原主庫已執行,從庫未執行未執行的事務被回滾
rs.slaveOk() # 設置從庫可讀
以上是“如何構建 MongoDB RepSet +Consul 高可用切換系統”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!
正文完