一边搭建一边理解MongoDB副本集(分布于两个或多个数据中心的副本集)
作者:链上研发-175405
时间:2017-01-21
概览
尽管副本集提供了对于单节点故障的基础保护,那些位于同一个数据中心的成员还是容易受到数据中心故障的影响。断电,网络中断和自然灾害都可能影响那些在同一个数据中心的副本及成员。
不同地理位置的数据中心分布部署副本集节点于增加了冗余性并在其中一个数据中心不可用湿提供了容错。
分布部署成员
为了在数据中心故障时保护你的数据,保证至少有一个节点运行在备份数据中心中。如果可能,使用奇数个数据中心,然后选择分布部署的数量最大化满足在损失时一个数据中心的情况下,剩下的副本集成员可以选举出主节点或者至少提供一份数据的备份。
例子
三个成员的副本集
例如,对于三个成员的副本集,可行的分布部署方法包括:
- 两个数据中心:两个成员在数据中心1,一个成员在数据中心2。如果副本集中其中一个成员是监督者,把拥有数据的成员和监督者部署到数据中心1。
- 如果数据中心1故障,副本集变为只读。
- 如果数据中心2故障,副本集仍然可写,因为在数据中心1的节点可以进行选举。
- 三个数据中心:一个成员在数据中心1,一个在数据中心2,一个在数据中心3
- 如果任何一个数据中心故障,副本集仍然可写,因为剩下的成员可以进行选举。
五个成员的副本集
对与5个成员的副本集,可行的分布式部署包括:
- 两个数据中心:三个成员在数据中心1,两个成员在数据中心2
- 如果数据中心1故障,副本集变为只读。
- 如果数据中心2故障,副本集仍然可写因为在数据中心1的节点可以选举主节点。
- 三个数据中心:两个成员在数据中心1,两个成员在数据中心2,一个在数据中心3。
- 如果任何一个数据中心故障,副本集仍然可写因为其他剩下的节点可以选举主节点。
例如,下面5个副本集成员分布部署在3个数据中心内。
成员选举权
副本集的某些成员,比如那些有网络限制或有限的资源,不应该在故障时成为主节点。把那些不能成为主节点的成员设置为0优先级。
在某些情况下,你希望在其他数据中心成员成为主节点之前,讲一个数据中心中的成员选为主节点。你可以修改成员优先级,是的一个数据中心中的成员比其他数据中心的成员拥有更高的优先级。
In the following example, the replica set members in Data Center 1 have a higher priority than the members in Data Center 2 and 3; the members in Data Center 2 have a higher priority than the member in Data Center 3:
下面的例子中,在数据中心1中的副本集中的成员相比数据中心2、3的成员有用更高的优先级;在数据中心2的成员相比数据中心3拥有更高的优先级。
连接
检查你的网络设置以允许所有成员的通信,例如,每一个成员都必须能够连接其他每一个成员。
作者:链上研发-175405
时间:2017-01-21