一、副本集部署指南
1.部署一个副本集
这个指南介绍了,如何使用3个现有的mongod实例,创建一个3成员副本集。
一个3成员副本集提供了足够的冗余来适应大多数网络分区以及系统故障。这种模式也有足够的能力来适应分布式读操作。副本集应该有奇数个成员,才能保证选举的顺利。基本的过程是:启动一个mongod实例,进行副本集配置,添加其他mongod实例到此副本集中。
1.1部署准备
生产部署时,你需要管理分开运行在不同机器上的mongod实例。当使用虚拟机时,你需要放置每一个mongod实例于分开的host服务器上,冗余的电源电路和冗余的网络路径。
部署副本集前,你需要在每一台机器上安装MongoDB。
创建副本集前,你需要核实你的网络环境,保障所有的机器间的连接正常。一个成功的副本集,每一个成员必须能够连接到其他的任意成员。
1.2部署注意事项
- 架构 在每台机器上部署成员时,尽可能绑定到默认的MongoDB端口27017,也可以使用bind_ip选项来保证对配置ip的应用监听。在一个地理分布的副本集中,保证大多数的副本集mongod实例存在于primay附近。
- 连接 保证所有的间网络连接的通畅,进行权限控制,以及防火墙控制
- 配置 指定每台机器运行时的配置文件为/etc/mongod.conf或者相关位置,或者指定文件存储位置
1.3部署过程
·step1 使用合适的选项,启动每一个成员上的实例,连接到同一个副本集。
mongod --replSet "rs0" /etc/mongod.conf
·step2 使用mongod shell连接到一个成员实例,初始化副本集:
rs.initate()
·step3 在同一mongod shell中,修改初始化副本集的配置:
rs.conf()
执行结果如下
{
"_id" : "rs0",
"version" : 1,
"members" : [
{
"_id" : 1,
"host" : "mongodb0.example.net:27017"
}
]
}
·step4 在同一mongod shell中,将其他成员添加到该副本集,完成后,副本集将选举出一个primary:
rs.add("mongodb1.example.net")
·step5 在同一mongod shell中,检查副本集的状态:
rs.status()
2、部署一个开发测试用的副本集
在开发测试环境中,可以使用一台机器来模拟3成员的副本集。原理是在单台机器上运行多个不同port的mongod实例,然后将他们添加到副本集。
·step1 为每一个port的mongod实例创建一个文件目录:
mkdir -p /srv/mongodb/rs0-0 /srv/mongodb/rs0-1 /srv/mongodb/rs0-2
·step2 启动mongod实例,指定port,dbpath,replset等参数:
mongod --port 27017 --dbpath /srv/mongodb/rs0-0 --replSet rs0 --smallfiles