Replica Set 是有自动故障恢复的主从集群,与主从集群最大的区别就是没有固定的主节点,整个集群会选举出一个主节点,当其不能工作时切换到其他的节点
副本集总会有一个活跃的节点primary ,一个货多个备份节点secondary 。
在生产环境中,我们应该将每个节点部署在独立的机器上,并使用标准的MongoDB端口 27017 。使用bind_ip 参数来限制访问MongoDB的应用程序的地址
确保各个节点之间可以正常通讯,且各个客户端都处于安全的可信的网络环境中。可以考虑以下事项:
-
建立虚拟的专用网络。确保各个节点之间的流量是在本地网络范围内路由的。(Establish a virtual private network. Ensure that your network topology routes all traffic between members within a single site over the local area network.)
-
配置连接限制来防止未知的客户端连接到复制集。
-
配置网络设置和防火墙规则来对将MongoDB的端口仅开放给应用程序,来让应用程序发的进出数据包可以与MongoDB正常交流。
最后请确保复制集各节点可以互相通过DNS或是主机名解析。我们需要配置DNS域名或是设置/etc/hosts 文件来配置。
1 将复制集中的每个节点以适当的配置参数启动。
在每个节点上启动 mongod 并通过制定 replSet 参数来指定其复制集名,并可以指定其他需要的参数。参见 Replication Options 以获得其他所需复制参数。
如果我们的应用程序需要连接多个复制集,那么每个复制集需要有不同的名字。一些驱动将复制集连接按复制集名来分组。
下面的例子就指定了复制集的名字通过 --replSet 参数:
mongod --replSet "aosp"
2 面并连接到复制集的某个节点
mongo --host ip地址 --port 端口
3 初始化复制集
MongoDB将初始化一个由当前节点构成、拥有默认配置的复制集。
rs.initiate()
4指定复制集初始化参数。
rs.conf()
5 其他的节点加入复制集。
通过 rs.add() 来将剩下的节点加入复制集。
下述例子是添加两个节点:
rs.add("mongodb1.example.net")
rs.add("mongodb2.example.net")
当完成后,一个完整的复制集便完成了。这个新的复制集将选举出一个 主节点 。
6检查复制集的状态。
通过 rs.status() 命令:
rs.status()
。