亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何構建MongoDB RepSet +Consul高可用切換系統

發布時間:2021-11-24 14:23:10 來源:億速云 閱讀:127 作者:小新 欄目:關系型數據庫

小編給大家分享一下如何構建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高可用切換系統”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

封丘县| 增城市| 桐庐县| 磐安县| 焦作市| 广灵县| 灵山县| 襄樊市| 吉林市| 南溪县| 嘉兴市| 新丰县| 张北县| 蕲春县| 太保市| 晋州市| 罗山县| 揭西县| 东光县| 勃利县| 台州市| 辰溪县| 怀化市| 临沂市| 和龙市| 淄博市| 郓城县| 九江县| 长兴县| 玛曲县| 山阳县| 如皋市| 大姚县| 龙南县| 凤庆县| 中牟县| 华池县| 临清市| 清水县| 湖口县| 宾阳县|