您好,登錄后才能下訂單哦!
小編給大家分享一下如何構建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 else exit 2 fi EOF 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高可用切換系統”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。