Replica Set 節點類型分為三種:
- standard:常規節點,它儲存一份完整的資料副本,參與選舉投票,有可能成為primary節點;
- passive:儲存了完整的資料副本,參與投票,不能成為primary節點;
- arbiter:仲裁節點,只參與投票,不接收複製的資料,也不能成為primary節點。
本文配置使用2個常規節點和一個arbiter節點,arbiter節點由於不同步資料,所以負載會很小,部署對硬體沒有太大的要求。
假設192.168.1.211、192.168.1.212為常規節點,192.168.1.68為arbiter節點。三個節點上的mongodb都是用下面的設定檔,檔案存放在/etc/mongodb.cnf:
dbpath = /data/db/logpath = /data/log/m.loglogappend = trueport = 27017fork = truedirectoryperdb = truejournal = truereplSet = testrest = true
其中replSet 的 Id 為 test,這個值對應initiate中的”_id”,使用rest參數後可以在web管理介面中顯示Replica Set中其他mongodb執行個體的資訊。
使用命令
/usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf
分別啟動三個機器上的mongodb執行個體,使用mongodb用戶端登陸兩個常規節點中的任何一個,執行如下命令:
rs.initiate({"_id" : "test", "members" : [{"_id" : 1, "host" : "192.168.1.211"},{"_id" : 2, "host" : "192.168.1.212"},{"_id" : 3, "host" : "192.168.1.68", "arbiterOnly" : true}]});或rs.initiate({"_id" : "test", "members" : [{"_id" : 1, "host" : "192.168.1.211"},{"_id" : 2, "host" : "192.168.1.212"}]});rs.addArb('192.168.1.68');
可以使用rs.conf()查看配置情況,rs.status()查看各個節點的狀態,經過一小段時間後,他們會選一台作為PRIMARY,其他的常規節點為SECONDARY,同時在js shell中看到提示符從“>”變為對應的 “PRIMARY>” 或 “SECONDARY>” 或 “ARBITER>”。可以在PRIMARY是通過rs.stepDown()來切換PRIMARY,執行此命令後會在剩餘的常規節點選一個來充當PRIMARY。
關於初始化中配置members的其他選擇性參數,可以到官網上查看,地址:http://www.mongodb.org/display/DOCS/Replica+Set+Configuration