中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

平泉县| 合山市| 张家口市| 成武县| 红原县| 丹寨县| 永登县| 麦盖提县| 伊宁县| 丹棱县| 光泽县| 汤原县| 甘孜| 巴青县| 宝应县| 彝良县| 舞阳县| 都匀市| 高雄县| 涟水县| 夹江县| 大厂| 千阳县| 南和县| 中超| 七台河市| 宁晋县| 邳州市| 鹰潭市| 柘城县| 天长市| 武川县| 东城区| 容城县| 丽江市| 长沙市| 灯塔市| 禄丰县| 大冶市| 定边县| 平顶山市|