了解活动管理器

 

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

上一次修改主题: 2015-03-09

Microsoft Exchange Server 2010 包含一个称为“活动管理器”的新组件,该组件提供的功能可替换通过与以前版本的 Exchange 的群集服务集成而提供的资源模型和故障转移管理功能。Exchange 不再使用群集资源模型来获得高可用性。exres.dll 提供的所有 Exchange 群集资源(包括称为群集邮箱服务器的构造)将不再存在。Windows 故障转移群集供 Exchange 使用,但没有适用于 Exchange 的群集组,而且群集中没有存储资源。因此,如果您使用群集管理工具检查群集,将仅显示核心群集资源(IP 地址和网络名称,必要时显示仲裁资源)。群集节点和网络也会存在,但它们由 Exchange 管理,而不由群集或群集工具管理。

活动管理器作为一个角色在所有邮箱服务器上运行。在未针对高可用性进行配置的邮箱服务器上,只有一个活动管理器角色:“独立活动管理器”。在作为数据库可用性组 (DAG) 成员的服务器上,具有两个活动管理器角色:“主要活动管理器”(PAM) 和“备用活动管理器”(SAM)。PAM 为 DAG 中的活动管理器,用于确定哪些副本将是主动副本,哪些副本将是被动副本。PAM 负责获取拓扑更改通知并对服务器故障作出反应。担任 PAM 角色的 DAG 成员始终是当前拥有群集仲裁资源(默认群集组)的成员。如果拥有群集仲裁资源的服务器出现故障,PAM 角色将自动移至获得群集仲裁资源所有权的仍正常工作的服务器。此外,如果您需要将托管群集仲裁资源的服务器脱机以便维护或升级,则必须先将 PAM 移至 DAG 中的其他服务器。PAM 可控制数据库各副本之间的主动标志的所有移动(在任意指定时间只能有一个副本处于活动状态,并且可以装入或卸除该副本)。PAM 还可以在本地系统上执行 SAM 角色的功能(检测本地数据库和本地信息存储故障)。

SAM 提供有关哪个服务器将邮箱数据库的活动副本托管到 Exchange 的其他组件的信息,后者正在运行活动管理器客户端组件(例如,RPC 客户端访问服务或集线器传输服务器)。SAM 将检测本地数据库和本地信息存储的故障。它通过请求 PAM 启动故障转移(如果复制了数据库)来对故障作出反应。SAM 不会确定故障转移的目标,也不会更新数据库在 PAM 中的位置状态。它将访问活动数据库副本位置状态,以便响应所收到的数据库活动副本查询。

注释注意:
Exchange 2010 不是群集应用程序。相反,它会对群集、组、群集网络(检测信号)、节点管理、群集注册表和一些控制代码功能使用 clusapi.dll 中实现的群集库功能。此外,活动管理器还将当前邮箱数据库信息(例如,主动数据和被动数据以及装入数据)存储在群集数据库中。尽管该信息是直接存储在群集数据库中的,但任何其他组件无法直接访问该信息。

在 Exchange 2010 中,Microsoft Exchange 复制服务会定期监视所有已装入的数据库的运行状况。此外,它还会监视可扩展存储引擎 (ESE) 中的任何 I/O 错误或故障。如果该服务检测到故障,它将通知活动管理器。然后,活动管理器会确定应装入哪个数据库副本以及装入该数据库时需要执行的操作。另外,活动管理器还会跟踪邮箱数据库的活动副本(基于该数据库的最后一个装入副本),并将跟踪结果信息提供给与 RPC 客户端相连的客户端访问服务器上的 RPC 客户端访问组件。

活动管理器最佳副本选择

如果发生的某个故障影响了复制的邮箱数据库,活动管理器将采取多个步骤,选择发生故障的数据库的最佳副本进行激活,以便从故障中恢复。一般过程按以下顺序进行:

  1. 活动管理器检测到故障。

  2. PAM 运行称为最佳副本选择 (BCS) 的内部算法。

  3. 出现名为 attempt copy last logs (ACLL) 的进程,该进程尝试从故障转移之前托管主动数据库副本的服务器中复制所有缺失的日志文件。

  4. ACLL 进程完成后,PAM 通过远程过程调用 (RPC) 向 Microsoft Exchange 信息存储区发出装入请求。此时:

    1. 装入数据库并且提供给客户端;或

    2. 不装入数据库,PAM 针对下一个最佳副本(如果存在)执行步骤 3 和 4。

搜索最佳副本时,PAM 最多使用十组不同的条件来确定要激活的最佳副本。确定最佳副本后,ACLL 开始运行。完成 ACLL 进程后,如果从先前的活动副本复制了所有缺少的日志文件,则会装入数据库而不造成任何数据丢失。这称为无损故障转移。如果 ACLL 进程不成功,将协商为 AutoDatabaseMountDial 配置的值。有关 AutoDatabaseMountDial 的详细信息,请参阅Set-MailboxServer。如果丢失的日志数少于为 AutoDatabaseMountDial 配置的值,则会装入数据库。如果丢失的日志数超过为 AutoDatabaseMountDial 配置的值,则在装入缺少的日志文件或管理员显式装入数据库并接受更大的数据丢失之前,将不会装入数据库。如果数据库未自动装入,PAM 将选择下一个最佳副本(如果存在)。初始选择的数据库副本未自动装入的原因至少有三种:

  1. 丢失的日志文件数大于为 AutoDatabaseMountDial 配置的值。

  2. 在其上执行装入尝试的服务器配置了最大数目的主动数据库,并且该服务器上的主动数据库副本数目已达到最大值。

  3. 数据库副本的激活被挂起。

最佳副本选择过程

活动管理器在开始最佳副本选择过程之初,首先创建可能作为激活候选对象的数据库副本的列表。所有无法到达或被管理性阻止激活(通过使用 Set-MailboxServer cmdlet 的 DatabaseCopyAutoActivationPolicy 属性)的数据库副本都将忽略,且不会在选择过程中使用。列表顺序取决于 Exchange 2010 的版本:

  • 在 Exchange 2010 正式发布 (RTM) 版本中,活动管理器使用复制队列长度作为主键来对结果列表进行排序。计算基于 LastLogInspected(从副本的角度而言)进行,因此潜在副本的列表将根据 LastLogInspected 的最高值(即复制队列长度最短的副本)来排序。然后,活动管理器使用 ActivationPreference 值作为辅助键再次对列表进行排序。ActivationPreference 值最低的副本在列表中具有最高的优先级。

  • Exchange 2010 Service Pack 1 (SP1) 中的行为与 RTM 版本中相同,自动数据库装入拨号值配置为 Lossless 的服务器除外。如果使用 Lossless 设置,活动管理器将使用 ActivationPreference 的值作为主键对结果列表按升序排列。此行为是特意设计的,旨在通过移动操作(如切换或运行 StartDagServerMaintenance.ps1)最大限度地降低数据库的不平衡性。

接下来,活动管理器会尝试查找列表上状态为“正常”、“DisconnectedAndHealthy”、“DisconnectedAndResynchronizing”或“SeedingSource”的邮箱数据库副本,然后使用十组条件按顺序评估列表上每个副本的激活可能性。活动管理器确定是否存在满足第一组条件的激活候选对象:

  • 具有状态为“正常”的内容索引。

  • 具有少于 10 个日志文件的复制队列长度。

  • 具有少于 50 个日志文件的重播队列长度。

如果没有一个数据库副本符合第一组条件,活动管理器将尝试查找符合第二组条件的数据库副本:

  • 具有状态为“爬网”的内容索引。

  • 具有少于 10 个日志文件的复制队列长度。

  • 具有少于 50 个日志文件的重播队列长度。

如果没有一个数据库副本符合第二组条件,活动管理器将尝试查找符合第三组条件的数据库副本:

  • 具有状态为“正常”的内容索引。

  • 具有少于 50 个日志文件的重播队列长度。

如果没有一个数据库副本符合第三组条件,活动管理器将尝试查找符合第四组条件的数据库副本:

  • 具有状态为“爬网”的内容索引。

  • 具有少于 50 个日志文件的重播队列长度。

如果没有一个数据库副本符合第四组条件,活动管理器将尝试查找符合第五组条件的数据库副本:

  • 具有少于 50 个日志文件的重播队列长度。

如果没有一个数据库副本符合第五组条件,活动管理器将尝试查找符合第六组条件的数据库副本:

  • 具有状态为“正常”的内容索引。

  • 具有少于 10 个日志文件的复制队列长度。

如果没有一个数据库副本符合第六组条件,活动管理器将尝试查找符合第七组条件的数据库副本:

  • 具有状态为“爬网”的内容索引。

  • 具有少于 10 个日志文件的复制队列长度。

如果没有一个数据库副本符合第七组条件,活动管理器将尝试查找符合第八组条件的数据库副本:

  • 具有状态为“正常”的内容索引。

如果没有一个数据库副本符合以上所有八组条件,活动管理器将尝试查找符合第九组条件的数据库副本:

  • 具有状态为“爬网”的内容索引。

如果没有一个数据库副本满足第九组条件,活动管理器将尝试激活状态为“正常”、“DisconnectedAndHealthy”、“DisconnectedAndResynchronizing”或“SeedingSource”(第十组条件)的任何数据库副本。如果找不到满足第十组条件的任何数据库副本,将无法自动激活数据库副本。

一旦查找到满足一组或多组条件的一个或多个副本,ACLL 进程开始运行,以将源文件中的所有日志文件复制到潜在的新主动副本。ACLL 进程完成后,PAM 会发出装入请求,此时会出现两种情况:装入数据库并提供给客户端,或者不装入数据库而 PAM 搜索下一个最佳副本(如果存在)。

最佳副本选择示例

以下部分介绍了一些活动管理器最佳副本选择和激活过程的示例。

示例 1:基本方案

在本示例中,邮箱数据库 DB1 有 4 个副本。DB1 在 Server1 上当前处于活动状态,而 Server1 出现了硬件故障。下表显示 Server2、Server3 和 Server4 上 DB1 的数据库副本的当前状态。

数据库副本 激活首选项 复制队列长度 重播队列长度 内容索引状态 数据库状态 阻止激活

Server2\DB1

2

4

0

正常

正常

Server3\DB1

3

2

2

正常

DisconnectedAndHealthy

Server4\DB1

4

10

0

爬网

正常

根据可用副本的复制队列长度对其进行排序(必要时可使用激活首选项),可得到以下排序列表:

  • Server3\DB1

  • Server2\DB1

  • Server4\DB1

根据此列表,只有两个数据库副本满足第一组激活条件:

  • Server3 上的副本,该副本的数据库状态为“Disconnectedandhealthy”,复制队列长度小于 10,重播队列长度小于 50,且内容索引状态正常。

  • Server2 上的副本,该副本的数据库状态为“正常”,复制队列长度小于 10,重播队列长度小于 50,且内容索引状态正常。

这两个副本中,Server3 上的副本的复制队列长度最低;因此将选择 Server3 作为尝试激活的副本,因为其缺失的数据最少。

激活 Server3 上的副本后,Server3 上的 Microsoft Exchange 复制服务将执行 ACLL 进程,并尝试从之前的活动服务器(此例中为 Server1)中复制所有缺失的日志文件。ACLL 进程结束后,PAM 会收到关于 ACLL 进程结果的通知。如果成功复制了所有日志,则会将此数据库标记为主动副本,并在无数据丢失的情况下装入此数据库。如果缺失一个或多个日志,将查询 AutoDatabaseMountDial 参数的值。如果数据丢失量在所配置的值之内,则会将此数据库标记为主动副本,并在存在数据丢失的情况下装入此数据库。然后会从传输转储程序中恢复大部分的丢失数据。

如果活动管理器向信息存储区发送了装入请求但装入操作未成功完成,则活动管理器将返回上述排序列表,尝试激活下一个最佳副本(此例中为 Server2 上的副本)。

示例 2:复制队列长度相等的两个副本

在本示例中,邮箱数据库 DB2 有 4 个副本。DB2 在 Server1 上当前处于活动状态,而 Server1 出现了硬件故障。下表显示 Server2、Server3 和 Server4 上 DB2 的数据库副本的当前状态。

数据库副本 激活首选项 复制队列长度 重播队列长度 内容索引状态 数据库状态 阻止激活

Server2\DB2

2

2

0

正常

正常

Server3\DB2

3

2

2

正常

DisconnectedAndHealthy

Server4\DB2

4

10

0

爬网

正常

根据可用副本的复制队列长度对其进行排序(必要时可使用激活首选项),可得到以下排序列表:

  • Server2\DB2

  • Server3\DB2

  • Server4\DB2

根据此列表,只有两个数据库副本满足第一组激活条件:

  • Server2 上的副本,该副本的数据库状态为“正常”,复制队列长度小于 10,重播队列长度小于 50,且内容索引状态正常。

  • Server3 上的副本,该副本的数据库状态为“DisconnectedandHealthy”,复制队列长度小于 10,重播队列长度小于 50,且内容索引状态正常。

这两个副本中,Server2 上的副本的复制队列长度与 Server3 上的副本相等,但其“激活首选项”的值相对较低;因此 Server2 上的副本将位于列表顶端,并被选作尝试激活的副本,因为其丢失的数据最少,且“激活首选项”的值最低。

示例 3:数据库状态相同但内容索引状态不同的副本

在本示例中,邮箱数据库 DB3 有 4 个副本。DB3 在 Server1 上当前处于活动状态,而 Server1 出现了硬件故障。下表显示 Server2、Server3 和 Server4 上 DB3 的数据库副本的当前状态。

数据库副本 激活首选项 复制队列长度 重播队列长度 内容索引状态 数据库状态 阻止激活

Server2\DB3

2

0

3

爬网

正常

Server3\DB3

3

0

3

正常

DisconnectedAndHealthy

Server4\DB3

4

0

0

正常

正常

根据可用副本的复制队列长度对其进行排序(必要时可使用激活首选项),可得到以下排序列表:

  • Server2\DB3

  • Server3\DB3

  • Server4\DB3

上述服务器托管的三个数据库副本均满足激活条件。尽管 Server2 的“激活首选项”值相对较低,但其内容索引状态为“爬网”;因此,当活动管理器针对第一组条件(规定内容索引的状态为“正常”)检查列表时,会首选 Server3 上的数据库副本,因为其内容索引状态为“正常”。

示例 4:AutoDatabaseMountDial 对最佳副本选择的影响

在本示例中,邮箱数据库 DB4 有 4 个副本。DB4 在 Server1 上当前处于活动状态,而 Server1 出现了故障,导致其需要重新启动。下表显示 Server2、Server3 和 Server4 上 DB4 的数据库副本的当前状态。DAG 中所有邮箱服务器的 AutoDatabaseMountDial 参数均配置为“Lossless”(复制队列长度为 0)。

数据库副本 激活首选项 复制队列长度 重播队列长度 内容索引状态 数据库状态 阻止激活

Server2\DB4

2

0

4523

正常

正常

Server3\DB4

3

100

25

爬网

正常

Server4\DB4

4

6

62

正常

正常

由于自动数据库装入拨号设置已设为“Lossless”,活动管理器将使用“激活首选项”作为主要排序键,而不使用复制队列长度。根据可用副本的“激活首选项”对其进行排序,可得到以下排序列表:

  • Server2\DB4

  • Server3\DB4

  • Server4\DB4

所有数据库均不满足第一、第二或第三组条件,但 Server3 上的数据库副本满足第四组条件(规定内容索引状态为“爬网”且重播队列长度小于 50)。Server3 上的数据库副本的复制队列长度为 100,但由于 Server1 尚未完成重新启动,因此 ACLL 进程无法将这些缺失的日志文件复制到 Server3。ACLL 进程会通知 PAM 缺失数据量不在 AutoDatabaseMountDial 参数的配置值之内,这将导致 PAM 选择下一个最佳副本。

在以上方案中,Server2 和 Server4 上的数据库副本满足第六组条件(具有正常的数据库和内容索引,且复制队列长度小于 10)。由于 Server2 上的数据库副本在可用副本排序列表中位于相对靠上的位置,因此接下来会尝试对其进行操作。ACLL 进程在 Server2 上运行,但 Server1 仍未在网络上通信,ACLL 无法复制任何日志。由于副本的复制队列长度在 AutoDatabaseMountDial 参数的配置值之内,因此 ACLL 会向 PAM 发送成功消息,而 PAM 将通过 RPC 发出数据库装入请求。

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