跨越两个或更多数据中心的副本集
概述
当副本集 提供对单实例故障的基本保护时,所有成员都位于单个数据中心的副本集容易受到数据中心故障的影响。电力中断、网络中断和自然灾害都是可能影响位于单个设施中成员的副本集的问题。
将副本集成员分布在不同地理位置的数据中心中,增加了冗余,并在其中一个数据中心不可用的情况下提供了容错能力。
一些云提供商使用 区域 和 可用区。区域是独立的地域。可用区与数据中心相同,是区域内的独立物理位置。如果节点位于不同的可用区,则副本集具有高可用性,因为所有区域同时失败的可能性不大。
成员分布
为了防止数据中心故障导致数据丢失,至少保留一个成员在备用数据中心。如果可能,使用奇数个数据中心,并选择成员分布,以最大化在数据中心丢失的情况下,剩余的副本集成员可以形成多数或至少提供您的数据副本的可能性。
示例
三成员副本集
例如,对于三成员副本集,成员的可能分布包括
两个数据中心:两个成员位于数据中心1,一个成员位于数据中心2。
如果数据中心1宕机,副本集变为只读。
如果数据中心2宕机,由于数据中心1的成员可以维持选举,副本集仍然可写。
三个数据中心:一个成员位于数据中心1,一个成员位于数据中心2,一个成员位于数据中心3。
如果任何数据中心宕机,由于剩余成员可以维持选举,副本集仍然可写。
注意
将副本集成员分布在两个数据中心比单个数据中心分布提供更多好处。在两个数据中心分布中,
如果其中一个数据中心宕机,与单个数据中心分布不同,数据仍然可用于读取。
如果拥有少数成员的数据中心宕机,副本集仍然可以提供读写操作。
但是,如果拥有多数成员的数据中心宕机,副本集变为只读。
如果可能,至少将成员分布在三个数据中心。对于配置服务器副本集(CSRS),最佳实践是分布到三个(或根据成员数量更多的中心)。如果第三个数据中心的成本过高,一种分布可能性是将数据承载成员均匀分布到两个数据中心,并在公司政策允许的情况下,将剩余成员存储在云端。
五成员副本集
对于一个包含5个成员的副本集,可能的成员分布包括
两个数据中心:3个成员在数据中心1,2个成员在数据中心2。
如果数据中心1宕机,副本集变为只读。
如果数据中心2宕机,副本集仍然可写,因为数据中心1的成员可以创建一个多数。
三个数据中心:2个成员在数据中心1,2个成员在数据中心2,1个成员在站点数据中心3。
如果任何数据中心宕机,副本集仍然可写,因为剩余的成员可以执行选举。
注意
将副本集成员分布在两个数据中心比单个数据中心分布提供更多好处。在两个数据中心分布中,
如果其中一个数据中心宕机,与单个数据中心分布不同,数据仍然可用于读取。
如果拥有少数成员的数据中心宕机,副本集仍然可以提供读写操作。
但是,如果拥有多数成员的数据中心宕机,副本集变为只读。
如果可能,至少将成员分布在三个数据中心。对于配置服务器副本集(CSRS),最佳实践是分布到三个(或根据成员数量更多的中心)。如果第三个数据中心的成本过高,一种分布可能性是将数据承载成员均匀分布到两个数据中心,并在公司政策允许的情况下,将剩余成员存储在云端。
例如,以下5个成员的副本集将成员分布在三个数据中心。
成员的可选举性
副本集的一些成员,例如网络受限制或资源有限的成员,不应能够在故障转移中成为主节点。将不应成为主节点的成员配置为具有优先级0。
在某些情况下,您可能希望在一个数据中心选举出主成员之后,再选举其他数据中心的成员。您可以修改成员的priority
,使得一个数据中心的成员具有比其他数据中心成员更高的priority
。
以下示例中,数据中心1的副本集成员的优先级高于数据中心2和3的成员;数据中心2的成员优先级高于数据中心3的成员
连接性
验证您的网络配置是否允许每个成员连接到其他所有成员。