mongodb的集群搭建方式主要有三種讶踪,主從模式乌助,Replica set模式躏将,sharding模式, 三種模式各有優(yōu)劣,適用于不同的場(chǎng)合呻引,屬Replica set應(yīng)用最為廣泛礼仗,主從模式現(xiàn)在用的較少,sharding模式最為完備逻悠,但配置維護(hù)較為復(fù)雜元践。本文為Replica Set模式。
MongoDB節(jié)點(diǎn)
主節(jié)點(diǎn)(Primary)
在復(fù)制集中童谒,主節(jié)點(diǎn)是唯一能夠接收寫請(qǐng)求的節(jié)點(diǎn)单旁。MongoDB在主節(jié)點(diǎn)進(jìn)行寫操作,并將這些操作記錄到主節(jié)點(diǎn)的oplog中惠啄。而從節(jié)點(diǎn)將會(huì)從oplog復(fù)制到其本機(jī)慎恒,并將這些操作應(yīng)用到自己的數(shù)據(jù)集上任内。(復(fù)制集最多只能擁有一個(gè)主節(jié)點(diǎn))
從節(jié)點(diǎn)(Secondaries)
從節(jié)點(diǎn)通過應(yīng)用主節(jié)點(diǎn)傳來的數(shù)據(jù)變動(dòng)操作來保持其數(shù)據(jù)集與主節(jié)點(diǎn)一致。從節(jié)點(diǎn)也可以通過增加額外參數(shù)配置來對(duì)應(yīng)特殊需求融柬。例如死嗦,從節(jié)點(diǎn)可以是non-voting或是priority 0.
仲裁節(jié)點(diǎn)(ARBITER)
仲裁節(jié)點(diǎn)即投票節(jié)點(diǎn),其本身并不包含數(shù)據(jù)集粒氧,且也無法晉升為主節(jié)點(diǎn)越除。但是,旦當(dāng)前的主節(jié)點(diǎn)不可用時(shí)外盯,投票節(jié)點(diǎn)就會(huì)參與到新的主節(jié)點(diǎn)選舉的投票中摘盆。仲裁節(jié)點(diǎn)使用最小的資源并且不要求硬件設(shè)備。投票節(jié)點(diǎn)的存在使得復(fù)制集可以以偶數(shù)個(gè)節(jié)點(diǎn)存在饱苟,而無需為復(fù)制集再新增節(jié)點(diǎn) 不要將投票節(jié)點(diǎn)運(yùn)行在復(fù)制集的主節(jié)點(diǎn)或從節(jié)點(diǎn)機(jī)器上孩擂。 投票節(jié)點(diǎn)與其他 復(fù)制集節(jié)點(diǎn)的交流僅有:選舉過程中的投票,心跳檢測(cè)和配置數(shù)據(jù)箱熬。這些交互都是不加密的类垦。
部署
各節(jié)點(diǎn)使用不同角色節(jié)點(diǎn)配置
172.18.169.38:27017(primary)
172.18.169.39:27017(secondary)
172.18.169.39:27018(arbiter)
主節(jié)點(diǎn)部署
- 配置config.conf
bind_ip = 0.0.0.0
port = 27017
logpath = /data/mongodb/logs/mongodb.log
pidfilepath=/data/mongodb/mongodb.pid
dbpath=/data/mongodb
fork = true
logappend = true
- 啟動(dòng)
./mongod -f config.conf --replSet rs0
從節(jié)點(diǎn)部署
- 配置config.conf
bind_ip = 0.0.0.0
port = 27017
logpath = /data/mongodb/logs/mongodb.log
pidfilepath=/data/mongodb/mongodb.pid
dbpath=/data/mongodb
fork = true
logappend = true
- 啟動(dòng)
./mongod -f config.conf --replSet rs0
仲裁節(jié)點(diǎn)部署
- 配置arbiter.conf
bind_ip = 0.0.0.0
port = 27018
logpath = /data/arbiter/logs/mongodb.log
pidfilepath=/data/arbiter/mongodb.pid
dbpath=/data/arbiter
fork = true
logappend = true
- 啟動(dòng)
./mongod -f arbiter.conf --replSet rs0
配置
主節(jié)點(diǎn)配置
mongo --port 27017
config={_id:"rs0", members:[{_id:0,host:"172.18.169.38:27017",priority:1}]}
rs.initiate(config)
rs.add("172.18.169.39:27017")
rs.add("172.18.169.39:27018")
rs.status()
從節(jié)點(diǎn)配置
mongo --port 27017
db.setSlaveOk()