1、准备工作
之前已经介绍过了 MongoDB 在滴滴云上的搭建。参考:<<在滴滴云 DC2 云服务器上搭建 MongoDB 实战>>
但是生产环境中,通常需要更高的稳定性要求,单机版的 MongoDB 服务器并不能满足,因此我们需要高可用的 MongoDB 集群。
硬件准备
本次只是模拟集群的搭建。因此直接采用上一次的搭建环境,通过不同的端口模拟集群。
2、简介
MongoDB 的集群搭建方式主要有三种方式:Master-Slave,Replica Sets,Sharding。
其中 Master-Slave 官方已不再支持,故本文不再介绍。 本文主要介绍 Replica Sets 方式搭建高可用集群。
2.1 Replica Sets
2.1.1 介绍
副本集是一组维护相同数据集的 Mongod 实例。副本集包含多个数据承载节点和一个仲裁节点(可选),在数据承载节点中,一个且只有一个成员被视为主节点,而其他节点则被视为辅助节点。
主节点接收所有写入操作,一个副本集只能有一个主实例能够写入,主节点记录所有变更到它的 oplog。
辅助节点复制主节点的 oplog 并将操作应用于数据集。
也可以将一个额外的实例作为仲裁者添加到副本集。仲裁员不维护数据集,仲裁器的目的是通过响应其他副本集成员的心跳和选择请求来维护副本集中的仲裁。因为它们不存储数据集,所以仲裁器是提供副本集仲裁功能的一种好方法。
与具有数据集的完全功能副本集成员相比,仲裁器的资源成本更低,如果副本集的成员数为偶数,则添加一个仲裁器以在初选中获得多数票。
当一个主服务器在超过配置的周期(默认为 10 秒)内未与该组的其他成员通信时,符合条件的辅助服务器将要求选择将其自身指定为新的主服务器。集群试图完成新的初选并恢复正常操作。
2.1.2 搭建过程
登录之前搭建单机服务的机器,并切换到 root 账户:
ssh dc2-user@ip
sudo -i
创建配置文件:
vi /etc/mongod_27017.conf
文件内容如下:
# mongod_27017.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
# log的路径与上边创建的路径一一致
path: /data/log/mongodb/mongod_27017.log
# Where and how to store data.
storage:
# db储存的路径与上边创建的路径一一致
dbPath: /data/db/mongo_27017
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod_27017.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
#security:
#operationProfiling:
replication:
oplogSizeMB: 1024
replSetName: test_mongo_replica_set
secondaryIndexPrefetch: all
enableMajorityReadConcern: true
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
vi /etc/mongod_27018.conf
文件内容如下:
# mongod_27018.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
# log的路径与上边创建的路径一一致
path: /data/log/mongodb/mongod_27018.log
# Where and how to store data.
storage:
# db储存的路径与上边创建的路径一一致
dbPath: /data/db/mongo_27018
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mon