在 Exchange Server 中管理数据库可用性组

数据库可用性组 (DAG) 是一组最多 16 个 Exchange 邮箱服务器,可提供从数据库/服务器/网络故障中自动进行数据库级恢复。 DAG 使用连续复制和部分 Windows 故障转移群集技术,提供高可用性和网站恢复。 DAG 中的邮箱服务器相互进行故障监视。 添加到 DAG 后,邮箱服务器便会与 DAG 中的其他服务器协同工作,自动执行数据库级的数据库故障恢复。

创建 DAG 时,DAG 最初是空的。 将第一个服务器添加到 DAG 时,将为 DAG 自动创建故障转移群集。 此外,还将启动监视服务器的网络或故障的基础结构。 然后,故障转移群集检测信号机制和群集数据库用于跟踪和管理有关 DAG 的信息,这些信息可能会快速更改,例如数据库装载状态、复制状态和上次装载的位置。

创建 DAG

DAG 创建方法是在 Exchange 管理中心 (EAC) 中使用"新建数据库可用性组"向导,或在 Exchange 命令行管理程序中运行 New-DatabaseAvailabilityGroup cmdlet。 创建 DAG 时,请提供 DAG 的名称,以及可选的见证服务器和见证目录设置。 此外,还可以为 DAG 分配一个或多个 IP 地址,方法为使用静态 IP 地址,或使用动态主机配置协议 (DHCP) 为 DAG 自动分配必要的 IP 地址。 可以使用 DatabaseAvailabilityGroupIpAddresses 参数将 IP 地址手动分配给 DAG。 如果省略此参数,DAG 会尝试使用网络中的 DHCP 服务器来获取 IP 地址。

如果要创建包含运行 Windows Server 2012 R2 的邮箱服务器的 DAG,还可以选择创建没有群集管理访问点的 DAG。 在这种情况下,群集在 Active Directory 中没有群集名称对象 (CNO) ,并且群集核心资源组将不包含网络名称资源或 IP 地址资源。

有关创建 DAG 的详细步骤,请参阅创建数据库可用性组

创建 DAG 时,将在 Active Directory 中创建一个空对象,该对象表示具有指定名称的 DAG,以及 msExchMDBAvailabilityGroup 的对象类。

DAG 使用 Windows Server 2008 R2 或更高版本中的一部分 Windows 故障转移聚类分析技术(例如群集检测信号、群集网络和群集数据库 ()来存储更改或可快速更改的数据,例如数据库状态从主动更改为被动或反向,或者从装载到已卸载或反向) 。 因此,只能在安装在 Windows 支持版本(包括 Windows 故障转移聚类分析)上的 Exchange 邮箱服务器上创建 DAG。

注意

由 DAG 创建和使用的故障转移群集必须专用于 DAG。 该群集不能用于任何其他高可用性解决方案或任何其他用途。 例如,故障转移群集不能用于对其他应用程序或服务进行群集。 不支持将某个 DAG 的基础故障转移群集用于该 DAG 以外的用途。

DAG 见证服务器和见证目录

创建 DAG 时,需要为 DAG 指定一个名称,该名称不超过 15 个字符,该名称在 Active Directory 林中是唯一的。 此外,每个 DAG 会配置一个见证服务器和见证目录。 仅当 DAG 中成员数量偶数时,才使用见证服务器及其目录,并且仅用于仲裁目的。 无需提前创建见证目录。 Exchange 会在见证服务器上自动创建并保护见证目录。 见证目录不得用于除 DAG 见证服务器之外的其他任何目的。

注意

在数据库镜像拓扑中,可以有名为“见证服务器”的第三台服务器。 使用此见证服务器,可以自动执行从主体服务器到镜像服务器的故障转移(反之亦然)。 与主体服务器和镜像服务器不同,见证服务器不为数据库提供服务。 此见证服务器的作用是验证给定的合作伙伴服务器是否正常运行。 支持自动故障转移是此见证服务器的唯一功能,它可以发现哪个服务器保留数据库的主体副本,哪个服务器保留数据库的镜像副本。

见证服务器的要求如下:

  • 见证服务器不能是 DAG 的成员。

  • 见证服务器必须与 DAG 位于同一个 Active Directory 林中。

  • 见证服务器必须运行 Windows Server 2008 或更高版本。

  • 单个服务器可以充当多个 DAG 的见证。 但是,每个 DAG 都需要其自己的见证目录。

无论使用哪个服务器作为见证服务器,如果在预期的见证服务器上启用了 Windows 防火墙,则必须为文件和打印机共享启用 Windows 防火墙例外。 见证服务器使用 SMB 端口 445。

重要

如果指定的见证服务器不是 Exchange 2010 或更高版本的服务器,则必须在创建 DAG 之前将 Exchange 受信任子系统通用安全组 (USG) 添加到见证服务器上的本地 Administrators 组。 需要这些安全权限来确保 Exchange 可以根据需要在见证服务器上创建并共享目录。

见证服务器和见证目录不需具有容错能力,也不需使用任何形式的冗余或高可用性。 无需对见证服务器使用群集文件服务器或采用其他任何形式的恢复机制。 其原因是多方面的。 对于大型 DAG(例如,六个成员或更多),只有在发生多个故障时才需要见证服务器。 由于六成员 DAG 可以承受多达两个投票者故障,而不会丢失仲裁,因此三个投票者发生故障后才需要见证服务器来维持仲裁。 此外,如果故障影响到了当前的见证服务器(例如,由于硬件故障而丢失了见证服务器),则可以使用 Set-DatabaseAvailabilityGroup cmdlet 配置新的见证服务器和见证目录(前提是拥有仲裁)。

注意

如果见证服务器丢失了存储内容,或有人更改了见证目录或共享权限,则还可以使用 Set-DatabaseAvailabilityGroup cmdlet 在原始位置配置见证服务器和见证目录。

见证服务器放置的注意事项

DAG 的见证服务器放置将取决于业务需求和组织的可用选项。 Exchange 现在包括对 Exchange 2010 中不推荐或不可行的新 DAG 配置选项的支持。 这些选项包括使用第三个位置,如第三个数据中心、分支机构或 Microsoft Azure 虚拟网络。

下表列出了不同部署方案中见证服务器放置的常规建议。

部署方案 建议
在单个数据中心部署单个 DAG 查找相同数据中心中的见证服务器作为 DAG 成员
在两个数据中心部署单个 DAG;没有其他可用位置 在 Microsoft Azure 虚拟网络上查找见证服务器来启用自动数据中心故障转移,或

在主数据中心查找见证服务器

在单个数据中心部署多个 DAG 查找相同数据中心中的见证服务器作为 DAG 成员。 其他选项包括:
  • 为多个 DAG 使用相同的见证服务器
  • 为不同的 DAG 使用 DAG 成员作为见证服务器
在两个数据中心中部署多个 DAG 在 Microsoft Azure 虚拟网络上查找见证服务器来启用自动数据中心故障转移,或

在数据中心查找视为每个 DAG 的主服务器的见证服务器。 其他选项包括:

  • 为多个 DAG 使用相同的见证服务器
  • 为不同的 DAG 使用 DAG 成员作为见证服务器
在两个以上数据中心部署单个或多个 DAG 在此配置中,见证服务器应位于您希望大多数仲裁投票位于其中的数据中心。

跨两个数据中心部署 DAG 后,现在可以使用第三个位置来托管见证服务器。 如果组织有一个网络基础结构的第三个位置,该位置与影响部署 DAG 的两个数据中心的网络故障隔离开来,则可以在该第三个位置部署 DAG 的见证服务器,从而将 DAG 配置为能够自动将数据库故障转移到另一个数据中心,以响应数据中心级别的故障事件。 如果你的组织只有两个物理位置,则可以使用 Microsoft Azure 虚拟网络作为放置见证服务器的第三个位置。

在 DAG 创建过程中指定见证服务器和见证目录

创建 DAG 时,必须提供 DAG 的名称。 您也可以选择指定见证服务器和见证目录。

创建 DAG 时,可以使用以下选项和行为组合:

  • 只能指定 DAG 的名称,并将 “见证服务器 ”和“ 见证目录 ”字段留空。 在此方案中,向导在本地 Active Directory 站点中搜索未安装邮箱服务器的客户端访问服务器,并在该服务器上自动创建默认目录 (%SystemDrive%:\DAGFileShareWitnesses\<DAGFQDN>) 和默认共享 (<DAGFQDN>) ,并使用该客户端访问服务器作为见证服务器。 例如,考虑操作系统已安装到驱动器 C 上的见证服务器 CAS3。contoso.com 域中名为 DAG1 的 DAG 将使用默认见证目录 C:\DAGFileShareWitnesses\DAG1.contoso.com,该目录将共享为 \CAS3\DAG1.contoso.com。

  • 可以指定 DAG 的名称、要使用的见证服务器以及要在见证服务器上创建并共享的目录。

  • You can specify a name for the DAG and the witness server that you want to use, and leave the Witness directory field blank. In this scenario, the wizard creates the default directory on the specified witness server.

  • You can specify a name for the DAG, leave the Witness server field blank, and specify the directory you want created and shared on the witness server. In this scenario, the wizard searches for a Client Access server that doesn't have the Mailbox server installed, and it automatically creates the specified DAG on that server, shares the directory, and uses that Client Access server as the witness server.

DAG 形成后,最初使用多数节点仲裁模型。 将第二个邮箱服务器添加到 DAG 后,仲裁将自动更改为多数节点和文件共享仲裁模型。 发生此更改后,DAG 的群集将开始使用见证服务器来维持仲裁。 如果见证目录不存在,Exchange 会自动创建该目录并将其共享,使 DAG 的 CNO 计算机帐户具有对该共享的完全控制权限。

注意

不支持使用属于分布式文件系统 (DFS) 命名空间的文件共享。

如果创建 DAG 之前在见证服务器上启用了 Windows 防火墙,那么防火墙可能会阻止创建 DAG。 Exchange 使用 Windows Management Instrumentation (WMI) 在见证服务器上创建目录和文件共享。 如果启用了见证服务器上的 Windows 防火墙,但没有针对 WMI 配置防火墙例外,那么 New-DatabaseAvailabilityGroup cmdlet 将会失败,并出现错误。 如果指定见证服务器,但未指定见证目录,则会收到以下错误消息:

The task was unable to create the default witness directory on server <Server Name>. Please manually specify a witness directory.

如果指定见证服务器和见证目录,则会收到以下警告消息:

Unable to access file shares on witness server '<ServerName>'. Until this problem is corrected, the database availability group may be more vulnerable to failures. You can use the Set-DatabaseAvailabilityGroup cmdlet to try the operation again. Error: The network path was not found.

如果在创建 DAG 之后但未添加服务器之前启用了见证服务器上的 Windows 防火墙,那么防火墙可能会阻止添加或删除 DAG 成员。 如果在见证服务器上启用了 Windows 防火墙,并且没有为 WMI 配置防火墙例外, 则 Add-DatabaseAvailabilityGroupServer cmdlet 将显示以下警告消息:

Failed to create file share witness directory 'C:\DAGFileShareWitnesses\DAG_FQDN' on witness server '<ServerName>'. Until this problem is corrected, the database availability group may be more vulnerable to failures. You can use the Set-DatabaseAvailabilityGroup cmdlet to try the operation again. Error: WMI exception occurred on server '<ServerName>': The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

若要解决上述错误和警告,请执行以下步骤之一:

  • 在见证服务器上手动创建见证目录和共享,并为该目录和共享的 DAG 完全控制权分配 CNO。

  • 在 Windows 防火墙中启用 WMI 例外。

  • 禁用 Windows 防火墙。

DAG 成员身份

创建 DAG 后,可以使用 EAC 中的“管理数据库可用性组”向导或 Exchange 命令行管理程序中的 Add-DatabaseAvailabilityGroupServerRemove-DatabaseAvailabilityGroupServer cmdlet 向 DAG 添加服务器或从中删除服务器。 若要详细了解如何管理 DAG 成员身份,请参阅 管理数据库可用性组成员身份

注意

作为 DAG 成员的每个邮箱服务器也是 DAG 使用的基础群集中的一个节点。 因此,在任何时间点,邮箱服务器只能是一个 DAG 的成员。

如果添加到 DAG 的邮箱服务器没有安装故障转移群集组件,则用于添加服务器的方法(例如, Add-DatabaseAvailabilityGroupServer cmdlet 或管理数据库可用性组向导)会安装故障转移群集功能。

将第一个邮箱服务器添加到 DAG 时,会发生以下事件:

  • 安装 Windows 故障转移群集组件(如果尚未安装)。

  • 使用 DAG 名称创建故障转移群集。 此故障转移群集由 DAG 独占使用,并且此群集必须专用于 DAG。 不支持将此群集用于任何其他用途。

  • 在默认计算机容器中创建 CNO。

  • DAG 的名称和 IP 地址在域名系统 (DNS) 中注册为主机 (A) 记录。

  • 服务器添加到 Active Directory 中的 DAG 对象中。

  • 使用装入到所添加服务器中的数据库的信息更新群集数据库。

在大型或多站点环境中,尤其是 DAG 扩展为多个 Active Directory 站点的环境中,必须等待包含第一个 DAG 成员的 DAG 对象 Active Directory 复制完成。 如果未在整个环境中复制此 Active Directory 对象,则添加第二个服务器可能会导致为 DAG 创建新的群集 (和新的 CNO) 。 之所以创建,是因为从要添加的第二个成员的角度来看,DAG 对象显示为空,从而导致 Add-DatabaseAvailabilityGroupServer cmdlet 为 DAG 创建群集和 CNO,即使这些对象已存在也是如此。 若要验证是否已复制了包含第一个 DAG 服务器的 DAG 对象,请在要添加的第二个服务器上使用 Get-DatabaseAvailabilityGroup cmdlet 来验证已添加的第一个服务器是否作为该 DAG 的成员列出。

将第二个和后续服务器添加到 DAG 时,会发生以下事件:

  • 服务器加入 DAG 的 Windows 故障转移群集中。

  • 仲裁模型自动进行调整:

    • 对于成员数为奇数的 DAG 采用多数节点仲裁模型。

    • 对于成员数为偶数的 DAG 采用多数节点和文件共享仲裁模型。

  • 需要时,Exchange 将自动创建见证目录和共享。

  • 服务器添加到 Active Directory 中的 DAG 对象中。

  • 使用已装入数据库的信息更新群集数据库。

注意

自动更改仲裁模型。 但是,如果仲裁模型未自动更改为正确的模型,则可以仅使用 Identity 参数运行 Set-DatabaseAvailabilityGroup cmdlet,以便在 DAG 的仲裁设置中更正。

预先暂存 DAG 的群集名称对象

CNO 是在 Active Directory 中创建的一个计算机帐户,与群集名称资源相关联。 群集名称资源与 CNO 绑定,该 CNO 是支持 Kerberos 的对象,充当群集标识并提供群集的安全上下文。 在将第一个成员添加到该 DAG 时形成了 DAG 基础群集以及该群集的 CNO。 将第一个服务器添加到 DAG 时,远程 Powershell 将与正在添加的邮箱服务器上的 Microsoft Exchange 复制服务取得联系。 如果还未安装故障转移群集功能,Microsoft Exchange 复制服务将安装该功能,并开始群集创建过程。 Microsoft Exchange 复制服务在 LOCAL SYSTEM 安全上下文中运行,并且群集创建也正是在此上下文中执行。

警告

如果您的 DAG 成员运行 Windows Server 2012,则必须在将第一个服务器添加到 DAG 中之前预先暂存 CNO。 如果 DAG 成员Windows Server 2012 R2 运行,并且创建没有群集管理访问点的 DAG,则不会创建 CNO,并且无需为 DAG 创建 CNO。

如果计算机帐户的创建环境受限,或者计算机帐户创建于默认计算机容器之外的其他容器中,则可以预先暂存并设置 CNO。 为 CNO 创建并禁用计算机帐户,然后执行以下步骤之一:

  • 向您要添加到 DAG 的第一个邮箱服务器的计算机帐户分配对该计算机帐户的完全控制权限。

  • 向 Exchange 受信任子系统 USG 分配对该计算机帐户的完全控制权限。

向您要添加到 DAG 的第一个邮箱服务器的计算机帐户分配对该计算机帐户的完全控制权限,可确保 LOCAL SYSTEM 安全上下文能够管理预先暂存的计算机帐户。 也可改为向 Exchange 受信任子系统 USG 分配对该计算机帐户的完全控制权限,因为该 Exchange 受信任子系统 USG 包含了域中所有 Exchange 服务器的计算机帐户。

有关如何预先暂存和设置 DAG 的 CNO 的详细步骤,请参阅为数据库可用性组预留群集名称对象

从 DAG 中删除服务器

在 EAC 中使用管理数据库可用性组向导,或在Exchange 命令行管理程序中使用 Remove-DatabaseAvailabilityGroupServer cmdlet 可以将邮箱服务器从 DAG 中删除。 将邮箱服务器从 DAG 中删除之前,必须先从服务器中删除所有复制的邮箱数据库。 如果试图从 DAG 中删除带有复制的邮箱数据库的邮箱服务器,任务将失败。

在某些情况下,必须先将邮箱服务器从 DAG 中删除才能执行特定操作。 这些情况包括:

  • 执行服务器恢复操作:如果作为 DAG 成员的邮箱服务器丢失,或者发生故障且无法恢复,需要更换,则可以使用 Setup /m:RecoveryServer 开关执行服务器恢复操作。 但是,在执行恢复操作之前,必须先使用带有 ConfigurationOnly 参数的 Remove-DatabaseAvailabilityGroupServer cmdlet 从 DAG 中删除服务器。

  • 删除数据库可用性组:在某些情况下,可能需要删除 DAG (例如,禁用第三方复制模式) 。 如果需要删除 DAG,必须先删除 DAG 中的所有服务器。 如果试图删除包含任何成员的 DAG,任务会失败。

配置 DAG 属性

将服务器添加到 DAG 之后,可以使用 EAC 或Exchange 命令行管理程序配置 DAG 的属性,包括 DAG 使用的见证服务器和见证目录以及分配给 DAG 的 IP 地址。

可配置的属性包括:

  • 见证服务器:要托管文件共享见证的文件共享的服务器的名称。 我们建议您指定客户端访问服务器作为见证服务器。 此命名使系统能够根据需要自动配置、保护和使用共享,并使消息传递管理员能够了解见证服务器的可用性。

  • 见证目录:将用于存储文件共享见证数据的目录的名称。 系统将自动在指定的见证服务器上创建此目录。

  • 数据库可用性组 IP 地址:必须将一个或多个 IP 地址分配给 DAG,除非 DAG 成员Windows Server 2012 R2 运行,并且你正在创建没有 IP 地址的 DAG。 或者,可以使用手动分配的静态 IP 地址配置 DAG 的 IP 地址,或在组织中使用 DHCP 服务器自动将它们分配给 DAG。

使用 Exchange 命令行管理程序可以配置 EAC 中不可用的 DAG 属性,例如 DAG IP 地址;网络加密和压缩设置;网络发现;用于复制的 TCP 端口;和备用见证服务器和见证服务器目录设置;和 以启用数据中心激活协调模式。

有关如何配置 DAG 属性的详细步骤,请参阅配置数据库可用性组属性

DAG 网络加密

通过利用 Windows Server 操作系统的加密功能,DAG 支持加密。 DAG 在 Exchange 服务器之间使用 Kerberos 身份验证。 Microsoft Kerberos 安全支持提供程序 (SSP) EncryptMessage 和 DecryptMessage API 可处理 DAG 网络通信的加密。 Microsoft Kerberos SSP 支持多种加密算法。 (有关完整列表,请参阅第 3.1.5.2 节 Kerberos 协议扩展的“加密类型”。) Kerberos 身份验证握手选择列表中支持的最强加密协议:通常高级加密标准 (AES) 256 位,可能使用基于 SHA 哈希的消息身份验证代码 (HMAC) 来维护数据的完整性。 有关详细信息,请参阅 HMAC

网络加密是 DAG 的属性,而不是 DAG 网络的属性。 可以在Exchange 命令行管理程序中使用 Set-DatabaseAvailabilityGroup cmdlet 配置 DAG 网络加密。 下表显示了 DAG 网络通信的可能加密设置:

Setting 说明
已禁用 未使用网络加密。
已启用 所有 DAG 网络上都使用了网络加密,用于复制和种子设定。
InterSubnetOnly 在不同子网间进行复制时,将在 DAG 网络上使用网络加密。 此设置是默认设置。
SeedOnly 所有 DAG 网络上都使用了网络加密,仅用于种子设定。

DAG 网络压缩

DAG 支持内置压缩。 启用压缩时,DAG 网络通信使用 XPRESS(LZ77 算法的 Microsoft 实现)。 此压缩与许多 Microsoft 协议中使用的压缩类型相同,尤其是 Microsoft Outlook 和 Exchange 之间的 MAPI RPC 压缩。

与网络加密一样,网络压缩也是 DAG 的一个属性,而不是 DAG 网络的属性。 在Exchange 命令行管理程序中使用 Set-DatabaseAvailabilityGroup cmdlet 可以配置 DAG 网络压缩。 下表显示了 DAG 网络通信的可能压缩设置:

Setting 说明
已禁用 未使用网络压缩。
已启用 所有 DAG 网络上都使用了网络压缩,用于复制和种子设定。
InterSubnetOnly 在不同子网间进行复制时,将在 DAG 网络上使用网络压缩。 此设置是默认设置。
SeedOnly 所有 DAG 网络上都使用了网络压缩,仅用于种子设定。

DAG 网络

DAG 网络包含一个或多个用于复制流量或 MAPI 流量的子网。 每个 DAG 都包含最多一个 MAPI 网络,以及零个或更多复制网络。 在单个网络适配器配置中,网络同时用于 MAPI 和复制通信。 尽管支持单个网络适配器和路径,但我们建议每个 DAG 至少拥有两个 DAG 网络。 在两个网络的配置中,通常有一个网络专门用于复制通信,而另一个网络主要用于 MAPI 通信。 还可以向每个 DAG 成员添加网络适配器,并将其他 DAG 网络配置为复制网络。

注意

使用多个复制网络时,无法指定网络使用的优先级顺序。 Exchange 会从复制网络组中随机选择一个复制网络用于日志传送。

在 Exchange 2010 中,在许多情况下需要手动配置 DAG 网络。 默认情况下,在 Exchange 的更高版本中,系统会自动配置 DAG 网络。 因为您可以创建或修改 DAG 网络,所以必须首先通过运行以下命令启用手动 DAG 网络控制:

Set-DatabaseAvailabilityGroup <DAGName> -ManualDagNetworkConfiguration $true

启用手动 DAG 网络配置之后,你即可在Exchange 命令行管理程序中使用 New-DatabaseAvailabilityGroupNetwork cmdlet 创建 DAG 网络。 有关如何创建 DAG 网络的详细步骤,请参阅 创建数据库可用性组网络

可以在Exchange 命令行管理程序中使用 Set-DatabaseAvailabilityGroupNetwork cmdlet 配置 DAG 网络属性。 有关如何配置 DAG 网络属性的详细步骤,请参阅 配置数据库可用性组网络属性。 需要配置每个 DAG 网络的必需和可选参数:

  • 网络名称:DAG 网络的唯一名称,最多包含 128 个字符。

  • 网络说明:DAG 网络的可选说明,最多 256 个字符。

  • 网络子网:使用 IPAddress/Bitmask 格式输入的一个或多个子网 (例如,192.168.1.0/24(对于 Internet 协议版本 4 (IPv4) 子网);2001:DB8:0:C000:/64(适用于 Internet 协议版本 6 (IPv6) 子网) )。

  • 启用复制:在 EAC 中,选中复选框,将 DAG 网络用于复制流量并阻止 MAPI 流量。 清除复选框以防止复制使用 DAG 网络并启用 MAPI 流量。 在 Exchange 命令行管理程序中,使用 Set-DatabaseAvailabilityGroupNetwork cmdlet 中的 ReplicationEnabled 参数启用和禁用复制。

注意

在 MAPI 网络上禁用复制并不保证系统不会将 MAPI 网络用于复制。 当配置的所有复制网络都脱机、出现故障或由于其他原因而不可用,只有 MAPI 网络保留(该网络配置为禁用复制)时,系统使用 MAPI 网络进行复制。

系统创建的初始 DAG 网络(例如 MapiDagNetwork 和 ReplicationDagNetwork01)基于群集服务枚举的子网。 每个 DAG 成员都必须具有相同数目的网络适配器,并且每个网络适配器都必须具有唯一子网上的 IPv4 地址(也可以具有 IPv6 地址)。 多个 DAG 成员可以具有相同子网上的 IPv4 地址,但是特定 DAG 成员中的每个网络适配器和 IP 地址对必须处于唯一子网上。 此外,只有用于 MAPI 网络的适配器才应配置有默认网关。 复制网络不应配置有默认网关。

例如,请考虑 DAG1,这是一个两成员 DAG,其中每个成员都有两个网络适配器(一个专用于 MAPI 网络,另一个用于复制网络)。 下表显示了 IP 地址配置设置示例:

示例网络适配器设置

服务器网络适配器 IP 地址/子网掩码 默认网关
EX1 (MAPI) 192.168.1.15/24 192.168.1.1
EX1(复制) 10.0.0.15/24 不适用
EX2 (MAPI) 192.168.1.16 192.168.1.1
EX2(复制) 10.0.0.16 不适用

在下面的配置中,在 DAG 中配置了两个子网:192.168.1.0 和 10.0.0.0。 在将 EX1 和 EX2 添加到 DAG 时,会枚举这两个子网,并会创建两个 DAG 网络:MapiDagNetwork (192.168.1.0) 和 ReplicationDagNetwork01 (10.0.0.0)。 将配置这些网络,如下表所示:

单子网 DAG 的枚举 DAG 网络设置

名称 子网 接口 启用了 MAPI 访问 启用了复制
MapiDagNetwork 192.168.1.0/24 EX1 (192.168.1.15)
EX2 (192.168.1.16)
True True
ReplicationDagNetwork01 10.0.0.0/24 EX1 (10.0.0.15)
EX2 (10.0.0.16)
False True

若要完成将 ReplicationDagNetwork01 配置为专用复制网络,请通过运行以下命令禁用 MapiDagNetwork 的复制:

Set-DatabaseAvailabilityGroupNetwork -Identity DAG1\MapiDagNetwork -ReplicationEnabled:$false

在为 MapiDagNetwork 禁用了复制之后,Microsoft Exchange 复制服务将 ReplicationDagNetwork01 用于连续复制。 如果 ReplicationDagNetwork01 遇到故障,则 Microsoft Exchange 复制服务会恢复为使用 MapiDagNetwork 进行连续复制。 系统有意返回 MapiDagNetwork 以保持高可用性。

DAG 网络和多子网部署

在上面的示例中,即使 DAG 使用了两个不同的子网(192.168.1.0 和 10.0.0.0),DAG 仍被视为单子网 DAG,因为每个成员都使用相同的子网构成 MAPI 网络。 当 DAG 成员将不同的子网用于 MAPI 网络时,DAG 称为“多子网 DAG”。 在多子网 DAG 中,合适的子网会自动与每个 DAG 网络关联。

例如,请考虑 DAG2,这是一个两成员 DAG,其中每个成员都有两个网络适配器(一个专用于 MAPI 网络,另一个用于复制网络),并且每个 DAG 成员位于独立 Active Directory 站点中,其 MAPI 网络处于不同的子网上。 下表显示了 IP 地址配置设置示例:

多子网 DAG 的示例网络适配器设置

服务器网络适配器 IP 地址/子网掩码 默认网关
EX1 (MAPI) 192.168.0.15/24 192.168.0.1
EX1(复制) 10.0.0.15/24 不适用
EX2 (MAPI) 192.168.1.15 192.168.1.1
EX2(复制) 10.0.1.15 不适用

在下面的配置中,在 DAG 中配置了四个子网:192.168.0.0、192.168.1.0、10.0.0.0 和 10.0.1.0。 在将 EX1 和 EX2 添加到 DAG 时,会枚举这四个子网,但是仅创建两个 DAG 网络:MapiDagNetwork (192.168.0.0, 192.168.1.0) 和 ReplicationDagNetwork01 (10.0.0.0, 10.0.1.0)。 这些网络将按下表所示进行配置:

多子网 DAG 的枚举 DAG 网络设置

名称 子网 接口 启用了 MAPI 访问 启用了复制
MapiDagNetwork 192.168.0.0/24
192.168.1.0/24
EX1 (192.168.0.15)
EX2 (192.168.1.15)
True True
ReplicationDagNetwork01 10.0.0.0/24
10.0.1.0/24
EX1 (10.0.0.15)
EX2 (10.0.1.15)
False True

DAG 网络和 iSCSI 网络

默认情况下,DAG 将执行所有已检测到并配置为供基础群集使用的网络的发现。 此发现包括由于对一个或多个 DAG 成员使用 iSCSI 存储而使用的任何 Internet SCSI (iSCSI) 网络。 最佳做法是,iSCSI 存储应使用专用的网络和网络适配器。 这些网络不应由 DAG 或其群集管理,也不应用作 (MAPI 或复制) 的 DAG 网络。 相反,DAG 应手动禁用这些网络,使其可以专用于 iSCSI 存储流量。 若要禁止检测 iSCSI 网络并将其用作 DAG 网络,请使用 Set-DatabaseAvailabilityGroupNetwork cmdlet 配置 DAG 以忽略当前检测到的任何 iSCSI 网络,如此示例所示:

Set-DatabaseAvailabilityGroupNetwork -Identity DAG2\DAGNetwork02 -ReplicationEnabled:$false -IgnoreNetwork:$true

此命令还会禁止群集使用该网络。 虽然 iSCSI 网络会继续显示为 DAG 网络,但是在运行上面的命令之后不会将它们用于 MAPI 或复制通信。

配置 DAG 成员

作为 DAG 成员的邮箱服务器的某些属性特定于高可用性,应按照以下各节所述配置这些属性:

自动数据库装入拨号

AutoDatabaseMountDial 参数指定数据库故障转移后的自动数据库装入行为。 可以使用 Set-MailboxServer cmdlet 使用以下任何值配置 AutoDatabaseMountDial 参数:

  • BestAvailability:如果指定此值,如果复制队列长度小于或等于 12,数据库将在故障转移后立即自动装载。 复制队列长度是需要复制的被动副本识别的日志数量。 如果复制队列长度大于 12,则数据库不会自动装入。 当复制队列长度小于或等于 12 时,Exchange 会尝试将剩余日志复制到被动副本,并装载数据库。

  • GoodAvailability:如果指定此值,如果复制队列长度小于或等于 6,数据库将在故障转移后立即自动装载。 复制队列长度是需要复制的被动副本识别的日志数量。 如果复制队列长度大于 6,则数据库不会自动装入。 在复制队列长度小于或等于 6 时,Exchange 会尝试将剩余日志复制到被动副本中,并装入数据库。

  • Lossless:如果指定此值,则在将活动副本上生成的所有日志复制到被动副本之前,数据库不会自动装载。 此设置还会使活动管理器最佳副本选择算法基于数据库副本的激活首选项值(而不是其副本队列长度),对进行激活的潜在候选对象进行排序。

默认值为 GoodAvailability。 如果指定 BestAvailabilityGoodAvailability,并且无法将活动副本中的所有日志复制到正在激活的被动副本,则可能会丢失一些邮箱数据。 但是,安全网络功能(默认启用)将通过重新提交安全网络队列中的邮件来帮助防止大多数数据丢失。

示例:配置自动数据库装入拨号

以下示例使用 AutoDatabaseMountDial 设置 GoodAvailability配置邮箱服务器。

Set-MailboxServer -Identity EX1 -AutoDatabaseMountDial GoodAvailability

数据库副本自动激活策略

DatabaseCopyAutoActivationPolicy 参数指定所选邮箱服务器上邮箱数据库副本可用的自动激活类型。 可以使用 Set-MailboxServer cmdlet 使用以下任何值配置 DatabaseCopyAutoActivationPolicy 参数:

  • Blocked:如果指定此值,则无法在所选邮箱服务器上自动激活数据库。

  • IntrasiteOnly:如果指定此值,则允许在同一 Active Directory 站点中的服务器上激活数据库副本。 此激活会阻止跨站点故障转移或激活。 此属性适用于传入邮箱数据库副本(例如,正被制作成主动副本的被动副本)。 对于在另一个 Active Directory 站点中处于活动状态的数据库副本,无法在此邮箱服务器上为其激活数据库。

  • Unrestricted:如果指定此值,则激活所选邮箱服务器上的邮箱数据库副本没有特殊限制。

示例:配置数据库副本自动激活策略

以下示例使用 DatabaseCopyAutoActivationPolicy 设置 Blocked配置邮箱服务器。

Set-MailboxServer -Identity EX1 -DatabaseCopyAutoActivationPolicy Blocked

最大的活动数据库数

MaximumActiveDatabases 参数(也与 Set-MailboxServer cmdlet 一起使用)指定可以在邮箱服务器上装入的数据库数。 可以配置邮箱服务器以确保单个邮箱服务器不会过载,从而满足部署要求。

MaximumActiveDatabases 参数配置了整数数值。 达到最大数时,如果出现故障转移或切换,将不会激活服务器上的数据库副本。 如果这些副本在服务器上已处于活动状态,则服务器不允许装入数据库。

示例:配置最大的活动数据库数

以下示例将邮箱服务器配置为最多支持 20 个活动数据库:

Set-MailboxServer -Identity EX1 -MaximumActiveDatabases 20

对 DAG 成员执行维护

在 DAG 成员上执行任何类型的软件或硬件维护之前,应先将 DAG 成员置于维护模式中。 以下脚本提供了Exchange Server,以帮助执行 DAG 维护过程:

  • StartDagServerMaintenance.ps1:协助将所有活动数据库移出服务器。 同时移除所有关键的 DAG 支持功能,如主要活动管理器 (PAM) 角色,并阻止它们在维护完成之前移回服务器。

  • StopDagServerMaintenance.ps1:帮助使 DAG 成员退出维护模式,并使它成为所有数据库和所有关键 DAG 支持功能的活动目标。

上述两个脚本都接受 ServerName 参数 (该参数可以是主机名或完全限定的域名 (DAG 成员) 和 WhatIf 参数的 FQDN) 。 两个脚本都可以在本地或远程运行。 执行脚本的服务器必须安装 Windows 故障转移群集管理工具 (RSAT-Clustering)。

注意

RedistributeActiveDatabases.ps1 脚本也 可用,它有助于在特定 DAG 成员上装载邮箱数据库,如每个数据库的激活首选项编号所示。 但是,在 Exchange 2016 CU2 或更高版本中,名为 PreferenceMoveFrequency 的新 DAG 属性会自动平衡 DAG 中的数据库副本。 因此,仅当禁用此功能或想要手动平衡数据库副本时,才需要使用 RedistributeActiveDatabases.ps1 脚本。

StartDagServerMaintenance.ps1脚本执行以下任务:

  • 将 DAG 成员上的 DatabaseCopyAutoActivationPolicy 参数的值设置为 Blocked,以防止在服务器上激活任何数据库副本。

  • 暂停群集中的节点,这会防止节点作为及成为 PAM。

  • 将 DAG 成员上当前托管的所有活动数据库都移动至其他 DAG 成员。

  • 如果 DAG 成员当前拥有默认群集组,则脚本会将默认群集组(因此还有 PAM 角色)移动至其他 DAG 成员。

如果上述任何任务失败,则所有操作(除了成功的数据库移动)都会通过脚本撤消。

若要开始 DAG 成员上的维护过程,其中包括刷新传输队列和挂起客户端连接,请执行以下任务:

  1. 若要清空传输队列,请运行以下命令:

    Set-ServerComponentState <ServerName> -Component HubTransport -State Draining -Requester Maintenance
    
  2. 若要启动传输队列的清空,请运行以下命令:

    Restart-Service MSExchangeTransport
    
  3. 若要在 Exchange 2016 中仅) 清空所有统一消息调用 (,请运行以下命令:

    Set-ServerComponentState <ServerName> -Component UMCallRouter -State Draining -Requester Maintenance
    
  4. 若要访问 DAG 维护脚本,请运行以下命令:

    CD $ExScripts
    
  5. 若要运行 StartDagServerMaintenance.ps1 脚本,请运行以下命令:

    .\StartDagServerMaintenance.ps1 -ServerName <ServerName> -MoveComment Maintenance -PauseClusterNode
    

    对于 MoveComment 参数的值,可以进行所需的任何表示法。 上面的示例使用“维护”。

    注意

    此脚本可能需要一些时间才能执行,在此期间,你可能不会在屏幕上看到任何活动。

  6. 若要将本地队列中等待传递的邮件重定向到 Target 参数指定的 Exchange 服务器,请运行以下命令:

    Redirect-Message -Server <ServerName> -Target <Server FQDN>
    
  7. 若要将服务器置于维护模式,请运行以下命令:

    Set-ServerComponentState <ServerName> -Component ServerWideOffline -State Inactive -Requester Maintenance
    

要验证服务器是否准备好进行维护,则执行以下任务:

  1. 若要验证服务器是否已进入维护模式,请在运行以下命令时确认仅 MonitoringRecoveryActionsEnabled 处于活动状态:

    Get-ServerComponentState <ServerName> | Format-Table Component,State -Autosize
    
  2. 若要验证服务器未托管任何活动数据库副本,请运行以下命令:

    Get-MailboxServer <ServerName> | Format-List DatabaseCopyAutoActivationPolicy
    
  3. 若要验证群集节点是否已暂停,请运行以下命令:

    Get-ClusterNode <ServerName> | Format-List
    
  4. 若要验证是否已清空所有传输队列,请运行以下命令:

    Get-Queue
    

维护完成后,DAG 成员已准备好恢复服务, StopDagServerMaintenance.ps1 脚本可帮助 DAG 成员退出维护模式,并将其重新投入生产。 StopDagServerMaintenance.ps1脚本执行以下任务:

  • 恢复群集中的节点,这会为 DAG 成员启用完整群集功能。

  • 将 DAG 成员上的 DatabaseCopyAutoActivationPolicy 参数的值设置为 Unrestricted

  • 为 DAG 成员上托管的每个数据库副本运行 Resume-MailboxDatabaseCopy cmdlet。

准备好将 DAG 成员还原到完全生产状态(包括恢复传输队列和客户端连接)时,请执行以下任务:

  1. 若要将服务器配置为处于维护外模式并准备好接受客户端连接,请运行以下命令:

    Set-ServerComponentState <ServerName> -Component ServerWideOffline -State Active -Requester Maintenance
    
  2. 若要仅允许服务器在 Exchange 2016 中接受统一消息调用 () ,请运行以下命令:

    Set-ServerComponentState <ServerName> -Component UMCallRouter -State Active -Requester Maintenance
    
  3. 若要访问 DAG 维护脚本,请运行以下命令:

    CD $ExScripts
    
  4. 若要执行 StopDagServerMaintenance.ps1 脚本,请运行以下命令:

    .\StopDagServerMaintenance.ps1 -serverName <ServerName>
    
  5. 若要使传输队列能够继续接受和处理消息,请运行以下命令:

    Set-ServerComponentState <ServerName> -Component HubTransport -State Active -Requester Maintenance
    
  6. 若要恢复传输活动,请运行以下命令:

    Restart-Service MSExchangeTransport
    

要验证服务器是否准备好在生产中使用,则执行以下任务:

  1. 若要验证服务器是否处于维护模式,请运行以下命令:

    Get-ServerComponentState <ServerName> | Format-Table Component,State -Autosize
    

如果要安装 Exchange 更新,并且更新过程失败,可能会使某些服务器组件处于非活动状态,这将显示在上述 Get-ServerComponentState cmdlet 的输出中。 若要解决此问题,请运行以下命令:

  1. Set-ServerComponentState <ServerName> -Component ServerWideOffline -State Active -Requester Functional

  2. Set-ServerComponentState <ServerName> -Component Monitoring -State Active -Requester Functional

  3. Set-ServerComponentState <ServerName> -Component RecoveryActionsEnabled -State Active -Requester Functional

关闭 DAG 成员

Exchange 高可用性解决方案与 Windows 关闭过程集成。 如果 DAG 的装入数据库复制到了一个或多个 DAG 成员,则当管理员或应用程序对 DAG 中的 Windows 服务器启动关闭进程时,系统会在允许关闭进程完成前先尝试激活此装入数据库的另一个副本。

但是,此新行为并不能保证被关闭的服务器上的所有数据库都将经历 lossless 激活。 因此,最佳做法是在关闭 DAG 成员服务器之前先执行服务器切换。

在 DAG 成员上安装更新

在作为 DAG 成员的服务器上安装 Exchange 更新是一个相对简单的过程。 在 DAG 成员服务器上安装更新时,一些服务将在安装过程中停止,包括所有 Exchange 服务以及群集服务。 对 DAG 成员应用更新的一般过程如下所示:

  1. 按照上述步骤将 DAG 成员置于维护模式中。

  2. 安装更新。

  3. 按照上述步骤使 DAG 成员脱离维护模式并将其重新投入生产。

  4. (可选)使用 RedistributeActiveDatabases.ps1 脚本在 DAG 中重新平衡活动数据库副本。

有关最新 Exchange 更新的详细信息,请参阅Exchange Server内部版本号和发布日期

注意

应始终在同一版本的 Exchange 服务器上运行所有 DAG 成员 (包括累积更新和安全更新) 。 对所有 DAG 成员执行“滚动更新”,并且不要在较长时间内在不同 Exchange 版本上运行包含成员的 DAG。