Mongodb集羣形式探究-一主一從一仲裁。

主節點(primary)與從節點(secondary)和仲裁節點(arbiter)
具備存儲數據的兩個成員的三個成員副本集具備:
   ●一個主節點。
   ●一個從節點。 從節點能夠在選舉中成爲主節點。
   ●一個仲裁節點 仲裁節點只在選舉中投票。html

因爲仲裁節點不保存數據副本,所以這種部署只提供一個完整的數據副本(secondary)。 仲裁節點須要更少的資源,犧牲更多有限的冗餘和容錯能力。mongodb

可是,使用主節點,從節點和仲裁及誒單的部署可確保若是主服務器或從服務器不可用,副本集仍將保持可用。服務器

若是主服務器不可用,則副本集將選擇從節點服務器爲主服務器。測試

 

我是經過openstack的trove組件部署出來了一個一主兩從組成的一個副本集的集羣形式。spa

經過將其中一個從節點停掉,移出集羣,而後將他變爲仲裁節點的方式進行測試的,具體方法能夠參照:code

https://docs.mongodb.com/v3.2/tutorial/convert-secondary-into-arbiter/index.html htm

 

須要主要的是,因爲trove建立的cluster開啓了身份認證,因此在啓動的時候須要keyfile來完成仲裁節點與主從節點之間的通訊。blog

命令:進程

mongod --port 27017 --dbpath /data --replSet rs1 --config /etc/mongod.conf資源

 

rs1:SECONDARY> db.isMaster()
{
    "hosts" : [
        "192.168.111.173:27017",
        "192.168.111.174:27017"
    ],
    "arbiters" : [
        "192.168.111.172:27017"
    ],
    "setName" : "rs1",
    "setVersion" : 8,
    "ismaster" : false,
    "secondary" : true,
    "primary" : "192.168.111.173:27017",
    "me" : "192.168.111.174:27017",
    "maxBsonObjectSize" : 16777216,
    "maxMessageSizeBytes" : 48000000,
    "maxWriteBatchSize" : 1000,
    "localTime" : ISODate("2017-10-24T09:16:11.858Z"),
    "maxWireVersion" : 4,
    "minWireVersion" : 0,
    "ok" : 1
}

kill掉主節點上的mongodb進程

rs1:SECONDARY> db.isMaster()
{
    "hosts" : [
        "192.168.111.173:27017",
        "192.168.111.174:27017"
    ],
    "arbiters" : [
        "192.168.111.172:27017"
    ],
    "setName" : "rs1",
    "setVersion" : 8,
    "ismaster" : true,
    "secondary" : false,
    "primary" : "192.168.111.174:27017",
    "me" : "192.168.111.174:27017",
    "electionId" : ObjectId("7fffffff0000000000000006"),
    "maxBsonObjectSize" : 16777216,
    "maxMessageSizeBytes" : 48000000,
    "maxWriteBatchSize" : 1000,
    "localTime" : ISODate("2017-10-24T09:16:49.220Z"),
    "maxWireVersion" : 4,
    "minWireVersion" : 0,
    "ok" : 1,
    "$gleStats" : {
        "lastOpTime" : Timestamp(0, 0),
        "electionId" : ObjectId("7fffffff0000000000000006")
    }
}

 

 

 

 

 

總結:

1.當咱們只使用一主一從的方式進行部署的時候,若是主節點down機,從節點不會提高爲主節點。

(1):當重啓主節點的時候,會發生兩種可能性。1.主節點變爲從節點,從節點選舉爲新的主節點。2.主從節點不變(推測這是因爲)

2.當在一主一從中加入一個仲裁節點後,

(1):主節點down機,從節點提高爲主節點。

(2):從節點重啓以後會變爲當前主節點的從節點。

相關文章
相關標籤/搜索