mongodb的集群搭建方式主要有三种,主从模式,Replica set模式,sharding模式, 三种模式各有优劣,适用于不同的场合,属Replica set应用最为广泛,主从模式现在用的较少,sharding模式最为完备,但配置维护较为复杂。本文为Replica Set模式。
MongoDB节点
主节点(Primary)
在复制集中,主节点是唯一能够接收写请求的节点。MongoDB在主节点进行写操作,并将这些操作记录到主节点的oplog中。而从节点将会从oplog复制到其本机,并将这些操作应用到自己的数据集上。(复制集最多只能拥有一个主节点)
从节点(Secondaries)
从节点通过应用主节点传来的数据变动操作来保持其数据集与主节点一致。从节点也可以通过增加额外参数配置来对应特殊需求。例如,从节点可以是non-voting或是priority 0.
仲裁节点(ARBITER)
仲裁节点即投票节点,其本身并不包含数据集,且也无法晋升为主节点。但是,旦当前的主节点不可用时,投票节点就会参与到新的主节点选举的投票中。仲裁节点使用最小的资源并且不要求硬件设备。投票节点的存在使得复制集可以以偶数个节点存在,而无需为复制集再新增节点 不要将投票节点运行在复制集的主节点或从节点机器上。 投票节点与其他 复制集节点的交流仅有:选举过程中的投票,心跳检测和配置数据。这些交互都是不加密的。
部署
各节点使用不同角色节点配置
172.18.169.38:27017(primary)
172.18.169.39:27017(secondary)
172.18.169.39:27018(arbiter)
主节点部署
- 配置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
- 启动
./mongod -f config.conf --replSet rs0
从节点部署
- 配置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
- 启动
./mongod -f config.conf --replSet rs0
仲裁节点部署
- 配置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
- 启动
./mongod -f arbiter.conf --replSet rs0
配置
主节点配置
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()
从节点配置
mongo --port 27017
db.setSlaveOk()