活动管理器
适用于:Exchange Server 2013
Microsoft Exchange Server 2013 包括一个名为 Active Manager 的组件,用于管理高可用性平台,该平台包括数据库可用性组 (DAG) 和邮箱数据库副本。 活动管理器在所有邮箱服务器的 Microsoft Exchange 复制服务 (MSExchangeRepl.exe) 内运行。 在不是 DAG 成员的邮箱服务器上,有一个“活动管理器”角色:“独立活动管理器”。 在作为 DAG 成员的服务器上,具有两个活动管理器角色:“主要活动管理器”(PAM) 和“备用活动管理器”(SAM)。 PAM 为 DAG 中的活动管理器角色,用于确定哪些副本将是主动副本,哪些副本将是被动副本。 PAM 负责获取拓扑更改通知并对服务器故障作出反应。 担任 PAM 角色的 DAG 成员始终是当前拥有群集仲裁资源(默认群集组)的成员。 如果拥有群集仲裁资源的服务器出现故障,PAM 角色将自动移至获得群集仲裁资源所有权的仍正常工作的服务器。 此外,如果需要将托管群集仲裁资源的服务器脱机以便维护或升级,则必须先将 PAM 移至 DAG 中的其他服务器。 PAM 可控制数据库各副本之间的主动标志的所有移动。 (在任何指定时间只能有一个副本处于活动状态,并且可以装载或卸载该副本。) PAM 还在本地系统上执行 SAM 角色的功能, (检测本地数据库和本地信息存储) 故障。
SAM 提供有关哪个服务器将邮箱数据库的活动副本托管到 Exchange 的其他组件的信息,后者正在运行活动管理器客户端组件(例如,客户端访问或传输服务器)。 SAM 将检测本地数据库和本地信息存储的故障。 它通过请求 PAM 启动故障转移(如果复制了数据库)来对故障作出反应。 SAM 不会确定故障转移的目标,也不会更新数据库在 PAM 中的位置状态。 它将访问活动数据库副本位置状态,以便响应所收到的数据库活动副本查询。
注意
Exchange 2013 不是群集应用程序。 相反,它会对群集、组、群集网络(检测信号)、节点管理、群集注册表和一些控制代码功能使用 clusapi.dll 中实现的群集库功能。 此外,活动管理器还将当前邮箱数据库信息(例如,主动数据和被动数据以及装入数据)存储在群集数据库中(也被称为群集注册表)。 尽管该信息是直接存储在群集数据库中的,但任何其他组件无法直接访问该信息。
在 Exchange 2013 中,Microsoft Exchange 复制服务定期监视所有已装载数据库的运行状况。 此外,它还会监视可扩展存储引擎 (ESE) 中的任何 I/O 错误或故障。 如果该服务检测到故障,它将通知活动管理器。 然后,活动管理器会确定应装入哪个数据库副本以及装入该数据库时需要执行的操作。 此外,它还会根据数据库) 的最后装载副本跟踪邮箱数据库 (的活动副本,并向客户端连接到的客户端访问服务器提供跟踪结果信息。
最佳复制选择
当发生故障导致无法访问复制邮箱数据库的活动副本时,Active Manager 会采取多个步骤,通过选择要激活的受影响数据库的最佳被动副本,从故障中恢复。 此过程称为 Exchange 2010 中 BCS) (最佳副本选择,现在称为 Exchange 2013 中 BCSS) (最佳副本和服务器选择。 一般过程按以下顺序进行:
托管可用性或活动管理器检测到故障,或管理员启动无目标切换。
PAM 运行 BCSS 内部算法。
出现名为 attempt copy last logs (ACLL) 的进程,该进程尝试在故障或切换之前托管主动数据库副本的服务器中复制所有缺失的日志文件。
完成 ACLL 进程之后,将托管数据库副本邮箱服务器的 AutoDatabaseMountDial 值与正激活数据库的复制查询长度进行比较。 此时:
缺少日志文件的数量等于或小于 AutoDatabaseMountDial 的值,在这种情况下,将执行步骤 5。
缺少日志文件的数量大于 AutoDatabaseMountDial 的值,在这种情况下,Active Manager 将尝试激活下一个最佳可用副本(如果有)。
PAM 将通过远程程序调用(RPC)发出安装请求给 Microsoft Exchange Information Store。 此时:
装入数据库并且提供给客户端。
不装入数据库,PAM 针对下一个最佳副本(如果存在)执行步骤 3 和 4。
在 Exchange 2010 中,BCS 进程将评估每个数据库副本的几个方面,以确定要激活的最佳副本。 包括:
复制队列长度
重播队列长度
数据库状态
内容索引状态
在 Exchange 2013 中,Active Manager 会运行所有相同的 BCS 检查和阶段,但它现在还包括使用运行状况状态递减顺序的约束。 具体而言,BCSS 包括几个新的运行状况检查,这些检查是 Exchange 2013 中内置托管可用性监视组件的一部分。 Active Manager 执行了四个新的附加检查 (按) 执行的顺序列出:
所有正常:检查托管受影响数据库副本的服务器,该副本的所有监视组件都处于正常状态。
最高为正常:检查托管受影响数据库副本的服务器,该副本的所有监视组件均处于正常状态。
全部优于源:检查托管受影响数据库副本的服务器,该数据库具有监视组件的状态比托管受影响副本的当前服务器要好。
与源相同:检查托管受影响数据库副本的服务器,该数据库具有与托管受影响副本的当前服务器相同的状态的监视组件。
如果通过监控组件触发的故障转移(例如,通过故障转移响应程序)调用 BCSS,将强制执行额外的强制限制,其中目标服务器的组件健康必须好于出现故障转移的服务器。 例如,如果Outlook Web App失败通过故障转移响应方触发故障转移,则 BCSS 必须选择托管受影响数据库副本的服务器,Outlook Web App正常。
最佳副本选择过程
对于数据库故障 (而不是协议故障) ,Exchange 2013 中的 Active Manager 执行与 Exchange 2010 中的相同检查。 Active Manager 通过创建一个数据库副本列表来开始最佳副本选择过程,这些副本可能是激活的候选项。 对于任何无法访问或以管理员角色阻止激活的数据库副本,在选择过程中,均忽略,不加以使用。 列表的顺序取决于 AutoDatabaseMountDial 的值:
如果 AutoDatabaseMountDial 配置了除托管数据库副本的所有服务器上的值以外的
Lossless
任何值,Active Manager 将使用复制队列长度作为主键对生成的列表进行排序。 该计算基于 LastLogInspected (从副本角度看),所以潜在副本列表副本按照 LastLogInspected 的最大值(即最小副本队列长度的副本)进行分类。 如果必要,活动管理器会对列表进行第二次分类,使用激活首选项的值作为辅助关键字,以打破那些两个或更多被动副本具有同样副本队列长度的等同情况。 具有最低激活首选项值得副本在列表中具有更高优先权。如果在托管数据库副本的任何服务器上为 AutoDatabaseMountDial 配置了 值
Lossless
,则 Active Manager 将使用激活首选项的值作为主键,按升序对结果列表进行排序。 此外,当管理员在执行无特定目标的无损服务器或数据库时,活动管理器也会用激活首选项的值作为主键按照升序对结果列表进行分类。
接下来,活动管理器会尝试查找列表上状态为"正常"、"DisconnectedAndHealthy"、"DisconnectedAndResynchronizing"或"SeedingSource"的邮箱数据库副本,然后使用十组条件按顺序评估列表上每个副本的激活可能性。 活动管理器确定是否存在满足第一组条件的激活候选对象:
具有状态为"正常"的内容索引。
具有少于 10 个日志文件的复制队列长度。
具有少于 50 个日志文件的重播队列长度。
如果数据库副本均未满足第一组条件,Active Manager 会尝试查找满足第二组条件集的数据库副本:
具有状态为"爬网"的内容索引。
具有少于 10 个日志文件的复制队列长度。
具有少于 50 个日志文件的重播队列长度。
如果任何数据库副本都不符合第二组条件,Active Manager 会尝试查找满足第三组条件集的数据库副本:
具有状态为"正常"的内容索引。
具有少于 50 个日志文件的重播队列长度。
如果任何数据库副本都不符合第三组条件,则 Active Manager 会尝试查找满足第四组条件集的数据库副本:
具有状态为"爬网"的内容索引。
具有少于 50 个日志文件的重播队列长度。
如果任何数据库副本都不符合第四组条件,Active Manager 会尝试查找满足第五组条件集的数据库副本:
- 具有少于 50 个日志文件的重播队列长度。
如果数据库副本均未满足第五组条件,Active Manager 会尝试查找满足第六组条件集的数据库副本:
具有状态为"正常"的内容索引。
具有少于 10 个日志文件的复制队列长度。
如果数据库副本均未满足第六个条件,Active Manager 会尝试查找满足第七组条件的数据库副本:
具有状态为"爬网"的内容索引。
具有少于 10 个日志文件的复制队列长度。
如果数据库副本均未满足第七组条件,Active Manager 会尝试查找满足第八组条件集的数据库副本:
- 具有状态为"正常"的内容索引。
如果数据库副本均未满足所有第八组条件,Active Manager 会尝试查找满足第九组条件集的数据库副本:
- 具有状态为"爬网"的内容索引。
如果任何数据库副本都不符合第九组条件,Active Manager 会尝试激活状态为“正常”、“DisconnectedAndHealthy”、“DisconnectedAndResynchronizing”或“SeedingSource”的任何数据库副本, (第十组条件) 。 如果找不到满足第十组条件的任何数据库副本,将无法自动激活数据库副本。
找到满足一个或多个条件集的一个或多个副本后,ACLL 进程将运行,将原始源中的任何日志文件复制到潜在的新活动副本。 ACLL 进程完成后,PAM 发出装载请求,数据库装载并可供客户端使用,或者数据库无法装载,并且 PAM 会搜索下一个最佳副本 ((如果有一个副本可用) )。