Mongodb的Replica Set 複本集叢集搭建

來源:互聯網
上載者:User

標籤:mongodb   mongo   mongodb replica set   mongodb複本集   

實驗性的搭建一個叢集做練手。

配置和環境:

win10(本機)和linux(CentOs7)內網伺服器各一台。

Mongodb3.07

目標:Replica set 複本集結構,一個primary一個slave,實現讀寫分離的同步資料集群。


一、本機和內網伺服器安裝mongo

  可參考我的另外兩篇文章:

Mongodb在windows和linux平台的安裝配置(http://fykknd.blog.51cto.com/3175618/1716343)

Mongodb許可權管理(http://fykknd.blog.51cto.com/3175618/1716369)

  

二、叢集配置

  一切開始前,有個準備工作,當時配置叢集時因為這個事兒耽誤了很長時間,百度google都沒結果,最後是問了一個營運的朋友才知道的。就是要先做一個key認證!!表示叢集間的機器是互相可靠的。

  具體操作可參考官網說明,在文章末尾有連結地址。

# openssl rand -base64 741 > /usr/local/mongodb/mongodb-keyfile# chmod 600 /usr/local/mongodb/mongodb-keyfile

  這兩步就是建立一個秘鑰檔案,用於叢集的機器使用。組建檔案後,把這個檔案複製到每個成員的對應目錄下,然後再啟動mongo。

  作為叢集的一份子,啟動時要加一個Repl Set參數,就像一個團隊的名字一樣,表示是這個團隊的成員。先寫出啟動命令,然後進行說明。

# mongod --config /etc/mongo.conf --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/logs/log.l --port=27017 --auth --fork --replSet rs0 --keyFile /usr/local/mongodb/mongodb-keyfile

  這是命令列加參數方式啟動,也可以把參數寫在mongo.conf裡。(我這3.07版本是解壓直接用的,預設沒有設定檔,需要自己建立一個:/etc/mongo.conf)設定檔的寫法看官方文檔的說明(在文章最後連結裡),2.6以後的檔案寫法採用YAML方式。

  參數說明:

   --config 設定檔位置

   --dbpath 資料存放位置

   --logpath 日誌存放位置

   --port 連接埠(可不寫)

   --auth 以認證方式啟動

   --fork 後台運行

   --replSet 複本集名稱

   --keyFile 秘鑰檔案位置

   

  接下來配置叢集config變數(記得先進行認證操作,否則沒有許可權配置叢集,我使用root使用者進行的):

> config={    _id : ‘dbset‘,  members : [  {      _id : 1,      host : ‘192.168.0.46‘  },  {      _id : 2,      host : ‘192.168.0.207:27017‘  }  ]}

   寫好config後,進行初始化:

> rs.initiate(config)


   如果一切正常的話,可以用rs.status()查看目前叢集的狀態:

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/76/77/wKioL1ZUE2XwQ54qAAA__mG3JXU242.png" title="rs.status" alt="wKioL1ZUE2XwQ54qAAA__mG3JXU242.png" />

   狀態說明:

    1.STARTUP:剛加入到複製集中,配置還未載入  

    2.STARTUP2:配置已載入完,初始化狀態  

    3.RECOVERING:正在恢複,不適用讀  

    4.ARBITER: 仲裁者  

    5.DOWN:節點不可到達  

    6.UNKNOWN:未擷取其他節點狀態而不知是什麼狀態,一般發生在只有兩個成員的架構,腦裂  

    7.REMOVED:移除複製集  

    8.ROLLBACK:資料復原,在復原結束時,轉移到RECOVERING或SECONDARY狀態  

    9.FATAL:出錯。查看日誌grep “replSet FATAL”找出錯原因,重新做同步  

    10.PRIMARY:主節點  

    11.SECONDARY:備份節點


    

  添加或者刪除節點(需要在主節點上進行):

  添加 rs.addArb("192.168.0.207");

  刪除 rs.remove("192.168.0.207");


  其實正常來說還應該有個仲裁節點,但目前伺服器數量不夠,所以嘗試用另一個外網機器做了下仲裁節點,於是遇到了修改config的配置問題。網上給的答案基本刪掉目前設定重新搞,其實有更簡便的方法,強行修改config配置(例如上面我沒有指定config中的priority參數,值是個整形。值越大越優先成為primary節點。前提是設定檔沒有指定誰是主節點,並且啟動參數裡也沒有--master參數)。例如新的config為:

> config={  _id : ‘dbset‘,  members : [  {      _id : 1,      host :192.168.0.46,      priority: 1  },  {      _id : 2,      host :192.168.0.207:27017,      priority: 0  }  ]}

  此時rs.initiate(config)是無效的,需要執行:

> rs.reconfig(config);

  那麼到底怎麼添加仲裁節點呢?很簡單:在config裡加一個節點,後面寫上arbiterOnly:true即可。比如:{_id:3, host:"192.168.0.207:27018", arbiterOnly:true},然後再重新reconfig即可。然而我並沒有成功,因為我是在207上啟動了兩個不同的連接埠類比的,但並未成功。附件貼上錯誤資訊,哪位大神指出下錯誤?感激不盡!


  此外還可以查看叢集配置:rs.conf();

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/76/77/wKioL1ZUFTrSzY3VAAAxHyPioE4357.png" title="rs.conf" alt="wKioL1ZUFTrSzY3VAAAxHyPioE4357.png" />


註:本文主要參考來源

mongoDB3.0.3 以上GUI 串連認證問題 http://www.bubuko.com/infodetail-984255.html

mongoDB 3.0 安全許可權存取控制 http://blog.csdn.net/gsying1474/article/details/47813059

淺析MongoDB使用者管理 http://www.jb51.net/article/53830.htm

mongo官網-key認證:https://docs.mongodb.org/manual/tutorial/enable-internal-authentication/

mongo官網-設定檔寫法:https://docs.mongodb.org/manual/reference/configuration-options/

mongodb強制一個成員為主:http://www.361way.com/mongodb-forced-primary/1704.html

Mongodb增加、移除Arbiter節點執行個體:http://www.jb51.net/article/59597.htm

本文出自 “技術成長點滴” 部落格,請務必保留此出處http://fykknd.blog.51cto.com/3175618/1716409

Mongodb的Replica Set 複本集叢集搭建

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.