91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何構建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

乌拉特后旗| 东乡| 沂源县| 铅山县| 西华县| 定襄县| 穆棱市| 景德镇市| 天峻县| 右玉县| 靖远县| 西城区| 湖州市| 天祝| 惠来县| 高密市| 孟津县| 泽州县| 瑞丽市| 永定县| 漾濞| 潢川县| 宁强县| 巍山| 社旗县| 定西市| 阜平县| 青田县| 都昌县| 平江县| 商丘市| 广安市| 怀化市| 宜昌市| 分宜县| 海兴县| 本溪| 岑巩县| 景洪市| 宝兴县| 利津县|