跨两个或多个数据中心分布的副本集

在本页面

Overview

replica sets提供了针对单实例故障的基本保护,而其成员都位于单个数据中心中的副本集易受数据中心故障的影响。断电,网络中断和自然灾害都是可能影响成员位于单个设施中的副本集的问题。

在地理上不同的数据中心之间分布副本集成员可增加冗余,并在其中一个数据中心不可用时提供容错能力。

成员分布

为了在数据中心发生故障时保护您的数据,请在备用数据中心中至少保留一个成员。如果可能,请使用奇数个数据中心,并选择成员分布,以最大程度地保证即使丢失数据中心,其余副本集成员也可以构成多数或最少提供数据副本的可能性。

Examples

三元副本集

例如,对于三成员副本集,成员的一些可能的分布包括:

  • 两个数据中心:数据中心 1 的两个成员和数据中心 2 的一个成员。如果副本集的成员之一是仲裁者,则将仲裁者与承载数据的成员一起分发到数据中心 1.

  • 如果数据中心 1 发生故障,则副本集将变为只读。

    • 如果数据中心 2 发生故障,则副本集将保持可写状态,因为数据中心 1 中的成员可以举行选举。
  • 三个数据中心:一个成员是数据中心 1,一个成员是数据中心 2,一个成员是数据中心 3.

  • 如果任何数据中心发生故障,副本集将保持可写状态,因为其余成员可以举行选举。

Note

在两个数据中心之间分布副本集成员可提供优于单个数据中心的好处。在两个数据中心分布中,

  • 如果其中一个数据中心发生故障,则与单个数据中心分发不同,该数据仍可读取。

  • 如果具有少数成员的数据中心发生故障,则副本集仍然可以同时执行写操作和读操作。

  • 但是,如果具有大多数成员的数据中心发生故障,则副本集将变为只读。

如果可能,请在至少三个数据中心中分配成员。对于配置服务器副本集(CSRS),最佳实践是分布在三个(或更多,取决于成员的数量)中心中。如果第三个数据中心的成本过高,则一种分配可能性是在公司 Policy 允许的情况下,在两个数据中心之间平均分配数据承载成员,并将其余成员存储在云中。

五人副本集

对于具有 5 个成员的副本集,成员的一些可能的分布包括:

  • 两个数据中心:数据中心 1 的三个成员和数据中心 2 的两个成员。

  • 如果数据中心 1 发生故障,则副本集将变为只读。

    • 如果数据中心 2 发生故障,则副本集将保持可写状态,因为数据中心 1 中的成员可以创建多数。
  • 三个数据中心:两个成员是数据中心 1,两个成员是数据中心 2,一个成员是站点数据中心 3.

  • 如果任何数据中心发生故障,副本集将保持可写状态,因为其余成员可以举行选举。

Note

在两个数据中心之间分布副本集成员可提供优于单个数据中心的好处。在两个数据中心分布中,

  • 如果其中一个数据中心发生故障,则与单个数据中心分发不同,该数据仍可读取。

  • 如果具有少数成员的数据中心发生故障,则副本集仍然可以同时执行写操作和读操作。

  • 但是,如果具有大多数成员的数据中心发生故障,则副本集将变为只读。

如果可能,请在至少三个数据中心中分配成员。对于配置服务器副本集(CSRS),最佳实践是分布在三个(或更多,取决于成员的数量)中心中。如果第三个数据中心的成本过高,则一种分配可能性是在公司 Policy 允许的情况下,在两个数据中心之间平均分配数据承载成员,并将其余成员存储在云中。

例如,以下 5 个成员副本集将其成员分布在三个数据中心中。

分布在三个数据中心的 5 个成员副本集的示意图。

成员的可选举性

副本集的某些成员(例如,具有网络限制或资源有限的成员)不应成为failover中的主要成员。配置不应成为主要成员的成员具有priority 0

在某些情况下,您可能希望将一个数据中心中的成员选为主要成员,然后再选择其他数据中心中的成员。您可以修改成员的priority,以使一个数据中心中的成员比其他数据中心中的成员具有更高的priority

在以下示例中,数据中心 1 中的副本集成员比数据中心 2 和 3 中的成员具有更高的优先级;数据中心 2 中的成员比数据中心 3 中的成员具有更高的优先级:

分布在三个数据中心的 5 个成员副本集的示意图。副本集包含优先级为 0.5 和优先级为 0 的成员。

Connectivity

验证您的网络配置是否允许所有成员之间进行通信;也就是说,每个成员都必须能够连接到其他每个成员。