数据库副本布局设计

 

适用于: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上一次修改主题: 2010-11-11

为邮箱服务器设计高可用性解决方案时,需要确保各种基础结构组件的高可用性,其中包括:

  • 基础结构服务(如 Active Directory 和域名系统 (DNS))

  • 数据库可用性组 (DAG) 成员服务器

  • 各个存储组件(如磁盘、存储控制器和存储架)

  • 各个网络组件(如路由器、交换机和聚合器)

  • 服务器和存储机架

  • 电源总线

  • 数据中心

每一个组件区域均代表潜在的故障点,有时将其称为“故障域”。因此,DAG 的可用性级别最终取决于如何设计解决方案来隔离并最小化某个域发生故障时可能对 DAG 环境产生的负面影响。若要实现故障域之间的独立性,每个故障域必须具有一个数据库副本。此外,由于故障会导致多个副本不可用,因此每个故障域仅需要一个副本。

例如,考虑有两个数据库副本的情况。每个副本分别存储在单独的磁盘组中,但这两个副本位于相同的存储阵列中。如果存储阵列出现故障或因任何原因不可用,则这两个副本也将不可用。在本示例中,故障域为存储阵列。阵列中只应驻留每个邮箱数据库的一个副本。否则,如果阵列出现故障,数据库的多个(也可能所有)副本都将不可用。

规划邮箱体系结构时,需考虑以下其他设计要点:

  • 是否部署多个数据库副本?

  • 部署多少个数据库副本?

  • 是否有站点恢复体系结构?

  • 部署哪种类型的邮箱服务器恢复模型?

  • 部署多少个邮箱服务器?

  • 使用什么备份模型?

  • 使用什么存储体系结构?

有关如何针对这些问题进行规划的详细信息,请参阅了解高可用性因素

目录

不平衡的数据库副本布局

设计平衡的数据库副本布局

服务器故障期间示例方案中的主动数据库分布

设计方案

若要了解与高可用性和站点恢复相关的管理任务,请参阅管理高可用性和站点恢复

不平衡的数据库副本布局

若要了解在 DAG 中应如何分布数据库副本,请参考 Contoso, Ltd 为其高可用性邮箱服务器解决方案规划的 DAG 设计。Contoso 正在构建由以下部分组成的 DAG:

  • 4 个邮箱服务器

  • 20 个邮箱数据库

  • 每个邮箱数据库的 2 个副本

所有服务器都部署在单个数据中心,每台服务器有其自身专用的存储,且每台服务器都部署在其自有的服务器机架中。

Contoso 要求两个高可用性数据库副本(例如,非滞后)始终可用,并且解决方案需能经受得住两个 DAG 成员同时中断而不对数据库可用性产生负面影响。

根据这些要求,使用的数据库副本布局如下图所示。

初始数据库副本布局

数据库副本布局表 1

最初,由于该设计将每个数据库的主动副本分布在 4 个 DAG 成员之间,因此看起来是合理的。但是,使用此设计需要注意某些事项。从服务器资源的角度来看,该布局并非最佳。例如,如果单台服务器出现故障,会导致数据库分布不平衡,如下图所示。

发生单台服务器故障后的数据库副本布局

发生单台服务器故障后的数据库副本布局

Server4 出现故障会导致数据库 DB16 至 DB20 在 Server1 上激活,而不是分布在其余的 3 台服务器之间。其结果是激活的邮箱数据库分布不平衡,以及服务器资源使用量的不平衡。与其他两台服务器(Server2 和 Server3)相比,Server1 的使用量增加了一倍。

另一个需要注意的事项是,DAG 包含的副本不足以经受两台服务器同时中断的所有情况。另一台服务器出现故障可能会导致 50% 的数据库不可用。如果 Server1 和 Server4 出现故障或同时不可用,则 10 个数据库将不可用,如下图所示。

发生双重服务器故障后的数据库副本布局

发生双重服务器故障后的数据库副本布局

此设计不满足能够经受双重服务器故障的核心要求。为了能够经受双重服务器故障并且维护所有主动数据库,必须部署第三个副本并设计新的布局。

返回顶部

设计平衡的数据库副本布局

设计平衡的数据库副本布局可能需要回顾一些设计决策以得到最佳设计。使用以下设计原则规划数据库副本布局:

  • 确保通过将每个副本相互隔离并分别放入不同的故障域中来最小化邮箱数据库的多个数据库副本故障。例如,在同一服务器机架内或同一存储阵列中仅放置特定邮箱数据库的单个数据库副本。

  • 以统一的分布式方式设计数据库副本布局,以确保主动邮箱数据库在出现故障后平衡分布。任何特定服务器上每个数据库副本的激活首选项总和必须相等或接近相等。这可以使故障后的分布接近相等,前提是副本正常且是最新版本。

构建块

为了遵循上述设计原则,建议按照特定布局放置服务器副本,以确保所有主动副本在尽可能多的服务器间对称分布。这种数据库副本的布局基于“构建块”概念。

第一个构建块(称为一级构建块)基于要托管主动数据库副本的邮箱服务器数量。假定此数量为 NN 不仅定义了邮箱服务器的数量,也定义了构建块内数据库的数量。每台服务器上分布一个主动数据库副本,形成对角线模式。与前一个示例一样,有 4 台邮箱服务器和 20 个邮箱数据库。第一个一级构建块的大小为 4,如下图所示。

一级构建块

一级构建块

对其余每个一级构建块集重复相同的模式。由于有 20 个数据库,因此一级构建块集有 5 个,如下图所示。

5 个一级构建块用于 20 个数据库

5 个一级构建块用于 20 个数据库

如果添加第二个数据库副本,则其在每个构建块集中的放置方式有所不同。由于一台服务器已经托管主动副本,因此还有 N – 1 台服务器可以托管第二个数据库副本。这 N – 1 台服务器每使用一次,就会得到一个完全对称分布,该分布可以形成新的更大的构建块。因此,新的构建块(称为二级构建块)大小为 N × (N – 1) 个数据库。这意味着第一个数据库的第二个数据库副本置于第二台服务器上,之后在构建块内以对角线模式部署每个第二副本。在第一个一级构建块集内完成该模式之后,下一个块的第二个副本的起始位置会偏移一个位置,因此第二个副本在第三台服务器上启动。

在本示例中,此时构建块大小为 4× (4 – 1) = 4× 3 = 12,这意味着每个二级构建块集由 12 个数据库构成。对于一级构建块集 1(DB1 至 DB4),DB1 的第二个副本放在 Server2 上,而对于一级构建块集 2(DB5 至 DB8),DB5 的第二个副本放在 Server3 上。每个一级构建块集的起始服务器位置从上一个一级构建块集偏移一台服务器。按照此布局继续,在 Server4 上放置 DB9 的第二个副本。这可以确保 Server1 故障可激活剩余全部三台服务器上的第二个副本,而不是在同一服务器上激活多个数据库。

具有 3 个一级构建块的二级构建块

一个具有 3 个一级块的二级构建块

对其余每个二级构建块集重复该模式。由于在本示例中有 20 个数据库,因此有两个二级构建块集。请注意,DB13 的第二个副本放在 Server2 上。

具有剩余 2 个一级构建块的二级构建块

具有剩余 2 个块的二级构建块

为了更好地理解此逻辑,请比较 DB1、DB5 和 DB9 的数据库副本放置。这些数据库中的每一个都具有一个托管在 Server1 上的主动副本。如果 Server1 出现故障,您需要在其余不同的服务器上激活第二个数据库副本来达到相等的负载分布。通过在 Server2 上放置 DB1 的第二个数据库副本,在 Server3 上放置 DB5 的第二个数据库副本,并且在 Server4 上放置 DB9 的第二个数据库副本可以实现这一目标。从 DB13 开始,只需重复此模式。以对角线模式添加其余数据库副本,如下图所示。

相等分布的数据库副本放置

相等分布的数据库副本放置

请注意,第二个构建块(DB13 至 DB20)只包含 8 个数据库,而不是 12 个。因此,如果发生单个故障,此设计将无法完全对称。若要提供完全对称的分布,请规划体系结构,使数据库数量为最大构建块大小的倍数。(在本示例中,数据库的最佳数量为 24、36、48 或 60 等。)

如果添加第三个数据库副本,同样地,对于目前每组 N × (N – 1) 个数据库放置方式必须不同。由于目前只有 N – 2 台服务器可供选择来放置第三个数据库副本,因此会生成 N – 2 种不同方式。新的构建块(称为三级构建块)大小为 N × (N – 1) × (N – 2) 个数据库。因此,第一个数据库的第三个数据库副本放在第三台服务器上,之后在此新构建块内根据起始位置以对角线模式部署每个第三副本。在第一个一级构建块集内完成该模式后,起始位置会偏移一个位置,从而将第三个副本放在第四个位置。

在本示例中,构建块大小目前为 4 × (4 – 1) × (4 – 2) = 4 × 3 × 2 = 24,这意味着每个三级构建块集由 24 个数据库构成。若要得到对称数据库放置模式,请将 DB1 的第三个数据库副本放置在 Server3 上(由于 Server1 托管第一个副本且 Server2 托管第二个副本,因此 Server3 为第一台可用服务器),且每增加一个副本就偏移一个位置直到到达一级构建块集 1 的结尾。对于下一个构建块集,同样将第三个数据库副本放置在下一台可用服务器上 (Server4),并以相同的方式继续直到到达标记二级构建块集 1 结尾的数据库 DB12。对于 DB13 至 DB20,按照相同的模式,但需将第三个数据库副本偏移一个位置,以使其结尾服务器与 DB1 至 DB12 的结尾服务器不同。

具有 3 个数据库副本和 4 台服务器的平衡布局

具有 3 个副本和 4 台服务器的平衡布局

同样地,为了更好地理解此逻辑,请比较数据库 DB1 至 DB13 的数据库副本放置。这些数据库的主动数据库副本托管在 Server1 上,第二个数据库副本托管在 Server2 上。如果这些服务器出现故障,您需要在其余不同的服务器上激活第三个数据库副本来达到相等的负载分布。通过将 DB1 的第三个数据库副本放置在 Server3 上,并将 DB13 的第三个数据库副本放置在 Server4 上可以实现这一目标。DB2 和 DB14、DB3 和 DB15 等形成类似的对。从 DB25 开始,只需重复此模式(本示例不介绍过多的数据库)。

请注意,第三个构建块(DB1 至 DB20)只包含 20 个数据库,而不是 24 个。因此,如果发生双重故障,此设计将无法完全对称。同样,若要提供完全对称的分布,请规划体系结构,使数据库数量为最大构建块大小的倍数。(在本示例中,数据库的最佳数量为 24、48 或 72 等。)

如果添加第四个数据库副本,同样地,对于目前每组 N × (N – 1) × (N – 2) 个数据库放置方式必须不同。新的构建块大小为 N × (N – 1) × (N – 2) × (N – 3) 个数据库。这遵循相同的逻辑方法,并确保三台服务器出现故障的情况下新构建块内的数据库分布保持平衡。

具有 4 台服务器的示例只剩下一种放置第四个数据库副本的方法(仅剩余一台服务器可用)。因此,构建块大小实际上仍为 24。使用公式计算构建块大小也可以很明显看出: 4 × 3 × 2 × (4 – 3) = 4 × 3 × 2 × 1 = 24.

继续添加更多的数据库副本时,构建块会不断增长,计算构建块大小的通用公式为 Perm(N,M) = N × (N – 1) … (NM + 1) = N!/(NM)!= CNMM!,其中 N = 服务器数量,M = 数据库副本数量。这是显而易见的,因为您已了解通过在 N 台可用服务器间选择 M 个数据库副本的所有可能排列可以实现数据库副本的完全对称分布。

使用此方法有几个注意事项:

  • 如果部署的数据库数量不是最大构建块大小的倍数,则在发生故障事件期间会导致主动数据库非对称分布。

  • 如果部署体系结构来减少多个域故障,则在发生故障事件期间可能会导致主动数据库非对称分布。这是因为故障域定义对数据库副本放置强加了限制,从而破坏了模式的对称。

  • 如果部署的站点恢复解决方案导致站点外数据库 *故障转移事件,则在主数据中心服务器发生故障事件期间可能会导致辅助数据中心激活的数据库非对称分布。

返回顶部

服务器故障期间示例方案中的主动数据库分布

使用前面的示例,出现单台服务器故障(例如,Server4 故障)时,主动邮箱数据库分布如下图所示。DB4、DB8、DB12、DB16 和 DB20 的第二个副本被激活,并以橙色注明为“主动”。

发生单台服务器故障后的主动数据库副本分布

发生故障后的主动数据库副本分布

如果发生双重服务器故障(若干数据库的第三个副本被激活并以绿色注明为“主动”),则其余两台服务器(Server1 和 Server3)上激活的邮箱数据库数量将相等。

发生双重服务器故障后的主动数据库副本分布

发生双重故障后的主动副本分布

但是,由于本示例中数据库的数量不是最大构建块大小(24 个数据库)的倍数,因此不是所有双重服务器故障事件都会导致对称分布。

发生差异双重服务器故障后的主动数据库副本分布

发生差异故障后的主动副本分布

返回顶部

设计方案

若要了解数据库副本布局的设计原则,包括相关的数学公式,请考虑另外两个体系结构布局。

设计方案:主动/被动用户分布站点恢复解决方案

在此方案中,Contoso 决定部署以下体系结构:

  • 在两个数据中心间扩展 DAG,且以主动/被动用户分布模式进行操作。

  • 每台服务器部署在单独的服务器机架中。

  • 将每台服务器的存储与数据中心内其他服务器的存储隔离。

  • 每个数据中心有 4 台邮箱服务器。

  • 共有 24 个邮箱数据库。

  • 要求是拥有 4 个高可用性数据库副本且经受得住双重服务器故障或单个数据中心故障。

在本示例中,一级构建块为 4,数据库分为 4 个单元,并且主动副本分布在构建块内的 4 台服务器间。

某个构建块中第一个副本的平衡分布

构建块中数据库的平均分布

对于托管主动副本的每台服务器,需将第二个数据库副本在其余所有成员服务器间尽可能平均地分布,由于每个副本之间是相互隔离的,因此继续使用对角线模式。在本示例中,二级构建块为 12,因此每 12 个数据库构成一个集。

某个构建块中第二个副本的平衡分布

跨块第二个副本的平均分布

由于此站点恢复解决方案是针对在两个数据中心具有相同数量的服务器和数据库副本的主动/被动用户分布模式,因此使用值为 4 的一级构建块在 Server5 和 Server6 之间以对角线模式放置第三个数据库副本,这可确保 Server5 和 Server6 使用与 Server1 至 Server4 上第一个数据库副本放置相对应的分布模式。

第二个构建块中第三个副本的平衡分布

跨块第三个副本的平均分布

由于此站点恢复解决方案是针对在两个数据中心具有相同数量的服务器和数据库副本的主动/被动用户分布模式,因此使用值为 12 的二级构建块在 Server5 和 Server6 之间以对角线模式放置第四个数据库副本,这可确保 Server5 和 Server6 使用与 Server1 至 Server4 上第二个数据库副本放置相对应的分布模式。

第二个构建块中第四个副本的平衡分布

跨块第四个副本的平均分布

如果发生单台服务器故障,主数据中心的其余 3 台服务器上激活的邮箱数据库数量将相等(每台服务器 8 个)。

发生单台服务器故障后的主动数据库副本分布

发生服务器故障后的主动副本分布

如果两台服务器同时发生故障,主数据中心的其余两台服务器上激活的邮箱数据库数量将相等(每台服务器 10 个),而在辅助数据中心将激活 4 个数据库。

发生单台服务器故障后的主动数据库副本分布

发生双重故障后的主动副本分布

设计方案:多个故障域

在本示例中,Wingtip Toys 决定部署以下体系结构:

  • 在单个数据中心部署所有服务器。

  • 服务器分为 3 个单元。

  • 将每单元服务器放入同一机架及其存储中。

  • 共有 3 个机架和 9 台服务器。

  • 共有 18 个邮箱数据库。

  • 要求是拥有三个高可用性数据库副本且经受得住两个成员服务器故障或一个机架故障。

在本示例中,一级构建块为 6,数据库分为 6 个单元,并且主动副本分布在构建块内的 6 台服务器间。

一级构建块的数据库副本布局

一级构建块的数据库副本布局

对于托管主动副本的每台服务器,需将第二个数据库副本在其余所有成员服务器间尽可能平均地分配,同时确保相同数据库的两个副本位于不同的服务器机架中。在本示例中,使用公式 N × (N – 2) 确保相同数据库的两个副本位于不同的机架中,而不是二级构建块公式 N × (N – 1)。这意味着二级构建块为 6 × 4 = 24。

第一个和第二个副本的数据库副本布局

第一个和第二个副本的数据库副本布局

在服务器间以对角线模式放置第三个数据库副本,同样确保相同数据库的多个副本位于不同的服务器机架中。在本示例中,使用公式 N × (N – 2) × (N – 4) 确保相同数据库的两个副本位于不同的机架中,而不是三级构建块公式 N × (N – 2)。这意味着三级构建块为 6 × 4 × 2 = 48。

第一个、第二个和第三个副本的数据库副本布局

三个副本的数据库副本布局

如果发生单台服务器故障,则主数据中心的其余 5 台服务器上激活的邮箱数据库数量将接近相等。4 台服务器中每台会有 10 个激活的数据库,而 1 台服务器(机架伙伴)会有 8 个激活的数据库。

发生单台服务器故障后的主动数据库计数和布局

发生故障后的主动数据库计数和布局

如果两台服务器同时发生故障(不同的机架),则其余 4 台服务器上激活的邮箱数据库数量将接近相等。

发生双重服务器故障后的主动数据库计数和布局(不同的机架)

发生双重故障后的主动数据库计数和布局

如果两台服务器同时发生故障(相同的机架),则其余 4 台服务器上激活的邮箱数据库数量将相等。

发生双重服务器故障后的主动数据库计数和布局(相同的机架)

发生双重故障后的主动数据库计数和布局

返回顶部

 © 2010 Microsoft Corporation。保留所有权利。