了解卷影冗余

 

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

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

Exchange 的高可用性策略侧重于存储在邮箱数据库中的数据的可用性和可恢复性。在为邮箱服务器实施了高可用性解决方案后,如果电子邮件到达邮箱,电子邮件不会丢失并且可以在发生故障后轻松地恢复。

但是,这些策略不会扩展到传输过程中的邮件。如果在处理邮件时集线器传输服务器发生故障,且无法恢复,则可能导致数据丢失。随着集线器传输服务器处理的邮件量的增加,防止可能的数据丢失成为管理员日益关注的问题。

Microsoft Exchange Server 2007 引入了集线器传输服务器角色的传输转储程序功能。Exchange 2007 集线器传输服务器维护最近传递到其邮箱位于群集邮箱服务器上的收件人的邮件队列。进行故障转移时,群集邮箱服务器自动请求 Active Directory 站点中的每台集线器传输服务器重新提交传输垃圾站队列中的邮件。这可防止在群集进行故障转移的过程中丢失邮件。虽然这确实可以提供基本级别的传输冗余,但仅适用于群集连续复制 (CCR) 环境中的邮件传递,而且当邮件在集线器传输服务器和边缘传输服务器之间传输时,这并不解决可能的邮件丢失问题。

Exchange Server 2010 引入了“卷影冗余”功能,可在整个传送过程中为邮件提供冗余。该解决方案涉及一项类似于传输转储程序的技术。使用卷影冗余,将延迟从传输数据库删除邮件,直至传输服务器确认该邮件的所有下一跃点都已完成传递。在回报成功传递之前,如果任何后续跃点发生故障,系统都会将传递的邮件重新提交到该后续跃点。

卷影冗余具有下列优点:

  • 它避免了对任何特定集线器传输服务器或边缘传输服务器的状态的依赖。只要您的路由拓扑中存在冗余的邮件路径,任何传输服务器都变成不再需要的服务器。

  • 如果传输服务器出现故障,您可以将其从生产环境中删除,而不会清空其队列或丢失邮件。

  • 如果您希望升级集线器传输服务器或边缘传输服务器,您可以随时使该服务器脱机,而不用冒丢失邮件的风险。

  • 它不需要为传输服务器存储硬件冗余。

  • 与在多个服务器上创建邮件的重复副本相比,它占用的带宽较少。使用卷影冗余生成的唯一额外网络流量是传输服务器之间“丢弃状态”的交换。丢弃状态是每个传输服务器维护的信息。它指示准备何时从传输数据库丢弃邮件。

  • 它提供了弹性,并简化了从传输服务器故障恢复的过程。

卷影冗余是通过扩展 SMTP 服务实现的。借助服务扩展,SMTP 主机可以协商卷影冗余支持并交换卷影邮件的丢弃状态。

要查找与管理传输服务器相关的管理任务吗?请参阅管理传输服务器

卷影冗余组件

下表提供了对卷影冗余的所有组件的说明。

卷影冗余组件

组件 描述

主邮件

提交以进行传输传递的原始邮件。

卷影邮件

传输服务器在确定邮件接下来的所有跃点已成功对该邮件进行传递之前保留的该邮件的副本。

主服务器

当前正在处理邮件的传输服务器。

卷影服务器

在将邮件传递到主服务器之后保留该邮件的卷影副本的传输服务器。

卷影队列

传输服务器用于存储卷影邮件的队列。传输服务器对于其将主邮件传递到的每个跃点都具有单独的卷影队列。

丢弃状态

传输服务器为卷影邮件维护的信息,指示准备何时丢弃邮件。

丢弃通知

卷影服务器从主服务器接收的响应,指示准备何时丢弃邮件。

卷影冗余管理器

管理卷影冗余的传输组件。

检测信号

传输服务器验证彼此的可用性的过程。

返回顶部

卷影冗余邮件流

为说明启用了卷影冗余的邮件流,请考虑以下简单方案:集线器传输服务器通过外围网络中的边缘传输服务器将邮件发送到第三方邮件服务器。

使用卷影冗余的邮件流

卷影冗余邮件流

在此方案中,邮件流将经历下列几个阶段:

  1. 集线器传输服务器将邮件传递到边缘传输服务器。

    1. 集线器传输服务器将打开与该边缘传输服务器的 SMTP 会话。

    2. 边缘传输服务器公布卷影冗余支持。

    3. 集线器传输服务器通知边缘传输服务器跟踪丢弃状态。

    4. 集线器传输服务器将邮件提交到边缘传输服务器。

    5. 边缘传输服务器确认接收到邮件,并记录发送该邮件的丢弃信息的集线器传输服务器标识。

    6. 集线器传输服务器将邮件移动到边缘传输服务器的卷影队列,并将该边缘传输服务器标记为主服务器。集线器传输服务器成为卷影服务器。

  2. 边缘传输服务器将邮件传递到下一跃点。

    1. 边缘传输服务器将邮件提交给第三方邮件服务器。

    2. 第三方邮件服务器确认收到该邮件。

    3. 边缘传输服务器将邮件的丢弃状态更新为传递完成。

  3. 集线器传输服务器将查询边缘传输服务器以获取丢弃状态(如果成功)。

    1. 在每个与边缘传输服务器的 SMTP 会话结束时,集线器传输服务器都会查询边缘传输服务器,以获取先前提交的邮件的丢弃状态。如果集线器传输服务器在初始邮件提交后尚未打开任何与边缘传输服务器的 SMTP 会话,它将打开一个与边缘传输服务器的 SMTP 会话,仅查询在特定时间段后的丢弃状态。

    2. 边缘传输服务器检查本地丢弃状态并发送回已传递的邮件的列表,然后删除丢弃信息。

    3. 集线器传输服务器从其卷影队列中删除邮件列表。

  4. 集线器传输服务器查询边缘传输服务器以获取丢弃状态,并重新提交邮件(如果失败)。

    1. 如果集线器传输服务器无法联系到边缘传输服务器,集线器传输服务器会恢复主服务器角色并将重新提交卷影队列中的邮件。

    2. 重新提交的邮件将传递到其他边缘传输服务器,且工作流从第 1 阶段开始。

      注释注意:
      如果卷影邮件没有可用的备用路由(例如上图所示的第二个边缘传输服务器),则不会重新提交它,而是保留在卷影队列中。

有关各种不同方案中的邮件流的详细信息,请参阅卷影冗余邮件流方案

多跃点方案

如果邮件通过多个支持卷影冗余的服务器,则卷影邮件会保留在一个服务器上,直到邮件路径中的下一服务器确认传递为止。为说明此工作过程,请借助包含 5 个安装有集线器传输服务器的 Active Directory 站点的组织。如下图所示,这些站点彼此连接。该组织将纽约和伦敦站点配置为集线器站点,所以来自芝加哥或亚特兰大的邮件需要通过纽约站点和伦敦站点中的集线器传输服务器才能到达都柏林站点。

多跃点方案示例拓扑

复杂拓扑示例

假定邮件是由芝加哥站点中的用户发送到都柏林站点中的用户。此邮件需要通过纽约站点和伦敦站点才能到达都柏林。此时将出现以下情况:

  1. 位于芝加哥的集线器传输服务器会将邮件发送到纽约的集线器传输服务器,并保留该邮件的一个卷影副本。

  2. 纽约的集线器传输服务器会将邮件发送到伦敦的集线器传输服务器,并查询芝加哥集线器的丢弃状态。

  3. 芝加哥集线器查询纽约集线器以获取丢弃状态,并接收邮件的丢弃通知。此时,它可以从其数据库中删除卷影邮件。邮件是否从伦敦传递到了都柏林对芝加哥的服务器何时删除卷影邮件没有影响。

集线器传输和邮箱服务器角色与 DAG 共存时的卷影冗余保护

使用数据库可用性组 (DAG) 时,已提交到邮箱数据库的邮件受到 DAG 体系结构保护。对于已传递到属于 DAG 的邮箱数据库的任何邮件,该邮件的影子副本将一直保留在传输转储程序中,直至该邮件复制到所有 DAG 成员。与此类似,从 DAG 成员提交到集线器传输服务器的任何邮件均有两个副本,一个位于集线器传输服务器队列中等待传递,另一个影子副本位于发件人的“已发送邮件”文件夹中。此方法是卷影冗余的关键组件。

但是,当集线器传输和邮箱服务器角色在同一台服务器上共存,并且您的邮箱数据库属于 DAG 时,集线器传输服务器可能要通过额外的跃点来路由邮件以避免主邮件和卷影邮件位于同一服务器硬件上。具体而言,由于单台服务器出现故障可能会导致主邮件和卷影邮件都丢失,因此集线器传输服务器角色尝试避免发生以下两种情况:

  • 传递邮件期间,邮件收件人的主动邮箱数据库和包含邮件卷影副本的传输转储程序位于同一服务器上 为避免发生这种情况,集线器传输服务器通过站点中的其他集线器传输服务器来路由邮件,以确保卷影邮件最终位于其他服务器硬件上。但是,如果没有其他可用的集线器传输服务器,将直接传递邮件。

  • 提交邮件期间,托管主邮件的传输队列和发件人“已发送邮件”文件夹中的卷影邮件位于同一服务器上 为避免发生这种情况,存储驱动程序会首选站点中的其他集线器传输服务器来提交邮件。但是,如果站点中没有其他可用的集线器传输服务器,则会将邮件提交到本地集线器传输服务器。

有关使用 DAG 时集线器传输和邮箱服务器角色共存的详细信息,请参阅使用 DAG 时的集线器传输和邮箱服务器角色共存

互操作性

在建立新的 SMTP 连接时将决定是否使用卷影冗余。如果 SMTP 连接中的两个服务器均支持卷影冗余,则使用前面提到的工作流。但是,有时 Exchange 2010 传输服务器会与不支持卷影冗余的邮件服务器交换邮件。这些服务器可能是第三方邮件服务器、早期版本的 Exchange 或尚未启用卷影冗余的 Exchange 2010 组织。

当支持卷影冗余的 Exchange 2010 传输服务器与不支持卷影冗余的服务器建立连接后,将发生下列事件:

  1. Exchange 与目标服务器建立 SMTP 连接。

  2. 目标服务器不宣称支持卷影冗余。

  3. 由于目标服务器不支持冗余,Exchange 将对每个邮件执行下列操作:

    1. 将邮件传递到目标服务器。

    2. 卷影冗余管理器将标记邮件已传递到下一跃点。

    3. 请在邮件传递到接下来的所有跃点后将其删除。

在不支持卷影冗余的服务器与 Exchange 2010 服务器建立连接后,会发生下列事件:

  1. 发送服务器与 Exchange 建立 SMTP 连接。

  2. Exchange 宣称支持卷影冗余。

  3. 由于发送服务器不支持卷影冗余,因此不会使用该功能。它会将邮件传递到 Exchange 服务器。

  4. 对于 Exchange 接收的每个邮件,它会执行下列操作:

    1. 将邮件传递到下一个跃点或创建其卷影副本。

    2. 向发送服务器发送确认。

延迟确认

卷影冗余的主要原理是在上一个跃点上保留邮件副本,直到服务器确认已成功将该邮件传递到接下来的所有跃点。在 Exchange 2010 传输服务器从不支持卷影冗余的邮件服务器接收邮件时,不可能发生此操作。此邮件服务器可以是运行较旧版本 Exchange 的 Exchange 服务器、标准 SMTP 客户端或 Internet 上的非 Exchange 邮件服务器。在这种情况下,Exchange 尝试通过延迟对邮件服务器的确认,直到确认邮件已成功在内部传递到所有后续跃点,来实现卷影冗余。这样,如果 Exchange 2010 服务器失败,发送邮件服务器会假设邮件未传递到 Exchange 并将重新尝试传递。

但是,将邮件传递到接下来的跃点可能需要很长的时间,因为路由基础结构的复杂性或接下来其中一个跃点失败。在这种情况下,为防止 SMTP 会话超时,Exchange 2010 传输服务器将向发送邮件服务器发送确认。此时,虽然不能保证邮件冗余,但这是所能采取的最佳措施。例如,在以下方案中可能会丢失邮件:Internet 邮件服务器将邮件传输到边缘传输服务器。边缘传输服务器由于网络问题无法与集线器传输服务器通信,但会向 Internet 邮件服务器确认接收到了邮件。然后边缘传输服务器失败,而且在解决网络问题之前无法恢复。此时,邮件将丢失。

延迟确认超时值由每个接收连接器的 MaxAcknowledgementDelay 属性控制。默认值为 30 秒。若要了解有关此特性的详细信息,请参阅配置卷影冗余

绕过延迟确认

某些情况下,在延迟确认超时之前,无法传递邮件。出现这些情况时,传输服务器使用以下方法之一来处理邮件:

  • 跳过延迟确认 默认情况下,传输服务器跳过延迟确认来维护 SMTP 接收吞吐量。实际上,传输服务器会在超时之前发出确认信息。

  • 卷影冗余升级 在 Microsoft Exchange Server 2010 Service Pack 1 (SP1) 中,可以将传输服务器配置为将邮件中继到站点中的任何其他传输服务器,而非跳过延迟确认。这可以有效地将邮件插入到卷影冗余管道中,从而保护邮件。该过程称为“卷影冗余升级”。与跳过延迟确认的方法相比,此方法将组织中未受保护邮件的数目降到了最低。默认情况下禁用此功能。若要启用卷影冗余升级,管理员必须编辑 Edgetransport.exe.config 文件,将 shadowredundancypromotionenabled 键更改为 true,将更改保存到文件,然后重新启动 Microsoft Exchange 传输服务 (MSExchangeTransport.exe)。有关如何执行此操作的详细信息,请参阅配置卷影冗余主题中的“启用卷影冗余升级”部分。

下表列出了传输服务器绕过延迟确认的不同情况并介绍 Exchange 2010 服务器如何处理这些情况。

方案 Exchange 2010 默认行为(跳过延迟确认) 启用了卷影冗余升级的 Exchange 2010 SP1

邮件的目标队列处于挂起状态或重试状态。

接收传输服务器跳过延迟确认。

接收传输服务器立即使用卷影冗余升级。

目标队列在添加邮件后进入重试状态。

接收传输服务器跳过后续邮件的延迟确认直至目标队列恢复就绪状态。

接收传输服务器为后续邮件使用卷影冗余升级直至目标队列恢复就绪状态。

管理员挂起目标队列或邮件。

如果管理员挂起目标队列,接收传输服务器将跳过延迟确认直至目标队列恢复就绪状态。如果管理员挂起邮件,接收传输服务器将正常处理后续邮件。

如果管理员挂起目标队列,接收传输服务器将使用卷影冗余升级直至目标队列恢复就绪状态。如果管理员挂起邮件,接收传输服务器将正常处理后续邮件。

邮件的目标队列中包含 100 多封邮件。

接收传输服务器将跳过延迟确认直至目标队列大小降到 100 以下。

如果目标队列中包含任何邮件,接收传输服务器将为后续邮件使用卷影冗余升级直至队列中的邮件清除完毕。

返回顶部

卷影冗余管理器

“卷影冗余管理器”是负责管理卷影冗余的 Exchange 2010 传输服务器的核心组件。

卷影冗余管理器负责维护服务器当前正在处理的所有主邮件的以下信息:

  • 每个正在处理的主邮件的卷影服务器。

  • 要发送到卷影服务器的丢弃状态。

卷影冗余管理器负责服务器在其卷影队列中包含的所有卷影邮件的下列内容:

  • 维护每个卷影邮件的主服务器的列表。

  • 核查每个主服务器是否可以对卷影邮件进行排队。

  • 处理来自主服务器的丢弃通知。

  • 在接收到所有预期的丢弃通知之后将卷影邮件从数据库中删除。

  • 决定卷影服务器何时应该取得卷影邮件的所有权,从而成为主服务器。

此外,卷影冗余管理器还负责管理与卷影冗余相关的性能计数器。

检测信号

卷影冗余管理器使用检测信号来确定服务器能否对卷影邮件进行排队。在两个均支持卷影冗余的服务器之间的 SMTP 会话期间,启动连接的服务器会查询目标服务器以获取之前提交到该服务器的邮件的丢弃状态。启动服务器通过发出 XQUERYDISCARD 命令来实现此目的。目标服务器会返回丢弃通知进行响应。此两个服务器之间的交换用作卷影冗余的检测信号。

检测信号存在超时值。如果在该时间段内未建立与卷影冗余管理器为其维护卷影队列的服务器的连接,该服务器将尝试与主服务器建立 SMTP 连接,来专门查询丢弃状态并重置计时器。超时值由 Set-TransportConfig cmdlet 的 ShadowHeartbeatTimeoutInterval 参数控制。此参数的默认值在 Exchange 2010 的正式发布 (RTM) 版本中为 300 秒,在 Exchange 2010 SP1 中为 900 秒。

如果在达到超时值时服务器没有与主服务器建立连接,它将重置计时器并重新尝试。如果在一行中达到超时值十二次(Exchange 2010 RTM 中为一行中达到三次),服务器将认为主服务器已失败,因此将接管卷影邮件的所有权,并开始生成这些邮件的丢弃通知以发送到失败的主服务器。服务器在确定主服务器已失败之前等待的超时次数由 Set-TransportConfig cmdlet 的 ShadowHeartbeatRetryCount 参数控制。

有关配置卷影冗余检测信号的详细信息,请参阅配置卷影冗余

返回顶部

中断后的邮件处理

卷影冗余可以最大限度地减少由于服务器中断而造成的邮件丢失。传输服务器在中断后重新联机时,可能会出现下列两个情况:

  • 服务器使用新的传输数据库重新联机   在这种情况下,传输数据库会由于数据损坏或硬件故障而无法恢复。此时,因为传输服务器将具有新的数据库 ID,组织中的其他传输服务器会将其识别为新路由。这同样适用于服务器无法恢复的情况,此时会将新服务器设置为替代服务器。

  • 服务器使用同一传输数据库重新联机   在这种情况下,特定的传输服务器没有失败,而是长时间处于脱机状态。例如,网卡故障、长期维护服务器可能导致这种情况。

下表总结了在启用卷影冗余时传输如何响应这两种情况。为清晰起见,假定中断的服务器名为 Hub01。

恢复方案中的邮件处理

恢复方案 对具有备用路由的邮件执行的操作 对没有备用路由的邮件执行的操作

Hub01 会使用新的数据库重新联机。

当 Hub01 不可用时,每个为 Hub01 进行卷影邮件排队的服务器将承担这些邮件的所有权并重新提交。然后,会使用备用路由将这些邮件传递到其目标地址。

邮件的总延迟时间由组织中配置的检测信号超时间隔和检测信号重试计数共同决定。

这些邮件保留在每个为 Hub01 进行卷影邮件排队的服务器上的卷影队列中。当 Hub01 使用新的数据库 ID 重新联机时,卷影服务器会检测到其是否为新数据库,并将卷影队列中的邮件重新提交到 Hub01。这相当于突然发现了这些邮件的备用路由。

这些邮件的总延迟取决于中断的持续时间。

Hub01 使用同一数据库重新联机。

Hub01 将传递其队列中的邮件。这将导致重复传递这些邮件。由于采用了重复邮件检测,Exchange 邮箱用户看不到这些重复邮件。但是,外部系统上的收件人可能会收到重复的副本。

邮件的总延迟时间等于组织中配置的检测信号超时间隔和检测信号重试计数的剩积。

Hub 01 将传递其队列中的邮件,然后向卷影服务器发送丢弃通知。

这些邮件的总延迟取决于中断的持续时间。

返回顶部

卷影冗余所需的扩展权限

Exchange 2010 引入了下列两个扩展权限,都是卷影冗余需要的:

  • ms-Exch-SMTP-Accept-XSHADOW

  • ms-Exch-SMTP-Send-XSHADOW

当与 Exchange 2010 传输服务器建立 SMTP 连接时,如果 ms-Exch-SMTP-Accept-XSHADOW 扩展权限存在于正在使用的接收连接器上,该连接将公布卷影冗余支持。此外,接收连接器上的身份验证机制应该为“Exchange Server 身份验证”或“外部安全”。

当 Exchange 2010 传输服务器与其他宣称卷影冗余支持的服务器建立 SMTP 连接后,它将仅在已授予该会话 ms-Exch-SMTP-Send-XSHADOW 扩展权限时发出 XSHADOW 命令。

默认情况下,会将这些扩展权限授予所有内部发送连接器和接收连接器上的 Exchange Server 组。

注释注意:
可以使用 Set-TransportConfig cmdlet 的 ShadowRedundancyEnabled 参数为整个组织启用或禁用卷影冗余。此设置会覆盖本节中介绍的扩展权限。如果为组织禁用了卷影冗余,Exchange 将永远不会宣称卷影冗余支持或发出 XSHADOW 命令,即使将所需的扩展权限授予 SMTP 会话也是如此。

返回顶部

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