Exchange Server:使用 Microsoft Azure VM 作为 DAG 见证服务器

将 Microsoft Azure 虚拟机 (VM) 用作数据库可用性组 (DAG) 见证服务器需要三个不同的物理位置:

  • 邮箱服务器的两个数据中心。
  • DAG 见证服务器的第三个位置。

只有两个物理位置的组织现在还可以通过使用 Microsoft Azure VM 充当 DAG 的见证服务器来利用自动数据中心故障转移。 本文重点介绍在 Microsoft Azure 上放置 DAG 见证,并假定以下两个语句均为 true:

  • 你熟悉站点复原概念。
  • 你有一个跨两个数据中心的全功能 DAG 基础结构。

如果您尚未配置您的 DAG 基础结构,我们建议您首先阅读以下文章:

Microsoft Azure 的更改

该配置需要一个多站点 VPN。 通过站点到站点 VPN 连接,可以始终将您组织的网络连接到 Microsoft Azure。 但是,Azure 过去只支持单个站点到站点 VPN。 由于跨三个数据中心配置 DAG 及其见证需要多个站点到站点 VPN,因此最初无法在 Azure VM 上放置 DAG 见证。

2014 年 6 月,Microsoft Azure 引入了多站点 VPN 支持,让组织可以将多个数据中心连接到同一个 Azure 虚拟网络。 此更改还使拥有两个数据中心的组织能够将 Microsoft Azure 用作第三个位置来放置其 DAG 见证服务器。 要了解有关 Azure 中的多站点 VPN 功能的更多信息,请参阅配置多站点 VPN

注意

此配置使用 Azure 虚拟机和多站点 VPN 来部署见证服务器,并且不使用 Azure 云见证。

Microsoft Azure 文件服务器见证

下图简要介绍了将 Microsoft Azure 文件服务器 VM 用作 DAG 见证的过程。 您需要一个 Azure 虚拟网络、一个将您的数据中心连接到 Azure 虚拟网络的多站点 VPN、一个域控制器以及一个部署在 Azure 虚拟机上的文件服务器。

注意

从技术上讲,使用单个 Azure VM 即可实现这一目的并将文件见证共享放置在域控制器上。 但是,这将导致不必要的特权提升。 因此,不建议使用此配置。

Microsoft Azure 上的 DAG 见证服务器

Azure 上的 Exchange DAG 见证概述。

要为您的 DAG 见证使用 Microsoft Azure VM,需要做的第一件事就是进行订阅。 请参阅如何购买 Azure,了解订阅 Azure 的最佳方法。

拥有 Azure 订阅后,需要按顺序执行以下步骤:

  1. 准备 Microsoft Azure 虚拟网络
  2. 配置多站点 VPN
  3. 配置虚拟机
  4. 配置 DAG 见证

注意

本文中指南的大部分内容都涉及 Microsoft Azure 配置。 因此,我们会尽可能链接到 Azure 文档。

先决条件

阶段 1:准备 Microsoft Azure 虚拟网络

配置 Microsoft Azure 网络是部署过程最关键的部分。 在此阶段结束时,你将获得一个功能齐全的 Azure 虚拟网络,该虚拟网络通过多站点 VPN 连接到两个数据中心。

注册 DNS 服务器

由于此配置需要在本地服务器和 Azure VM 之间进行名称解析,因此需要将 Azure 配置为使用自己的 DNS 服务器。 Azure 虚拟网络中资源的名称解析 一文概述了 Azure 中的名称解析。

要注册您的 DNS 服务器,请执行以下操作:

  1. 在Azure 门户,转到“网络”,然后选择“新建”。

  2. 选择“ 网络服务>虚拟网络>注册 DNS 服务器”。

  3. 键入 DNS 服务器的名称和 IP 地址。 此处指定的名称是管理门户中使用的逻辑名称,无需与 DNS 服务器的实际名称匹配。

  4. 对于您要添加的其他所有 DNS 服务器,重复步骤 1 到步骤 3。

    注意

    不会按照轮循机制方式使用您注册的 DNS 服务器。 Azure VM 将使用列出的第一个 DNS 服务器,并且只有在第一个服务器不可用的情况下才使用其他服务器。

  5. 重复步骤 1 到 3,添加要用于在 Microsoft Azure 上部署的域控制器的 IP 地址。

在 Azure 中创建本地(内部部署)网络对象

接下来,要创建表示 Microsoft Azure 中的数据中心的逻辑网络对象,请执行以下操作:

  1. 在Azure 门户中,转到“网络”,然后选择“新建”。

  2. 选择“ 网络服务>虚拟网络>”“添加本地网络”。

  3. 键入第一个数据中心站点的名称和位于该站点上的 VPN 设备的 IP 地址。 此 IP 地址必须是不在 NAT 后面的静态公共 IP 地址。

  4. 在接下来的屏幕上,为您的第一个站点指定 IP 子网。

  5. 对第二个站点重复步骤 1 到 4。

创建 Azure 虚拟网络

现在,执行以下步骤来创建 VM 使用的 Azure 虚拟网络:

  1. 在Azure 门户,转到“网络”,然后选择“新建”。

  2. 选择“ 网络服务>虚拟网络>自定义创建”。

  3. On the Virtual Network Details page, specify a name for the virtual network, and select a geographic location for the network.

  4. In the DNS Servers and VPN Connectivity page, verify that the DNS servers you previously registered are listed as the DNS servers.

  5. Select the Configure a site-to-site VPN check box under SITE-TO-SITE CONNECTIVITY.

    重要

    Do not select Use ExpressRoute because this will prevent the necessary configuration changes required to set up a multi-site VPN.

  6. Under LOCAL NETWORK, select one of the two on-premises networks you configured.

  7. “虚拟网络地址空间”页中,指定要用于 Azure 虚拟网络的 IP 地址范围。

检查点:检查网络配置

此时,转到“网络”后,您将看到您配置的虚拟网络位于“虚拟网络”下,您的本地站点位于“本地网络”下,您的注册 DNS 服务器位于“DNS 服务器”下。

阶段 2:配置多站点 VPN

使用以下步骤建立到本地站点的 VPN 网关:

  1. 使用 Azure 门户创建您的一个站点的 VPN 网关。
  2. 导出虚拟网络配置设置。
  3. 修改多站点 VPN 的配置文件。
  4. 导入更新的 Azure 网络配置。
  5. 记录 Azure 网关 IP 地址和预共享密钥。
  6. 配置内部部署 VPN 设备。

有关配置多站点 VPN 的详细信息,请参阅配置多站点 VPN

建立您的第一个站点的 VPN 网关

创建虚拟网关时,已指定它已连接到第一个本地站点。 进入虚拟网络仪表板时,会看到尚未创建网关。

若要在 Azure 端建立 VPN 网关,请参阅 VPN 网关

重要

仅执行该文章的“启动虚拟网络网关”部分中的步骤,请勿继续执行后续操作。

导出虚拟网络配置设置

Azure 管理门户当前不允许您配置多站点 VPN。 对于此配置,您需要将虚拟网络配置设置导出到 XML 文件,然后修改该文件。 按照将虚拟网络设置导出到网络配置文件中的说明导出设置。

修改多站点 VPN 的网络配置设置

在任意 XML 编辑器中打开您导出的文件。 到您的内部部署站点的网关连接列在"ConnectionsToLocalNetwork"部分中。 在 XML 文件中查找该词语,以找到相应部分。 配置文件中的此部分类似于以下示例, (为本地站点创建的示例站点名称为“站点 A”) 。

<ConnectionsToLocalNetwork>
    <LocalNetworkSiteRef name="Site A">
        <Connection type="IPsec" />
</LocalNetworkSiteRef>

要配置您的第二个站点,在"ConnectionsToLocalNetwork"部分下添加另一个"LocalNetworkSiteRef"部分。 更新的配置文件中的 节类似于以下示例, (第二个本地站点的示例站点名称为“站点 B”) 。

<ConnectionsToLocalNetwork>
    <LocalNetworkSiteRef name="Site A">
        <Connection type="IPsec" />
    <LocalNetworkSiteRef name="Site B">
        <Connection type="IPsec" />
</LocalNetworkSiteRef>

保存更新的配置设置文件。

导入虚拟网络配置设置

添加到配置文件的第二个站点引用会触发 Microsoft Azure 创建新的隧道。 使用 Azure 门户,按照创建虚拟网络 (经典) 中的说明导入更新的文件。 导入完成后,虚拟网络仪表板将显示您的两个本地站点的网关连接。

记录 Azure 网关 IP 地址和预共享密钥

导入新的网络配置设置后,虚拟网络仪表板将显示 Azure 网关的 IP 地址。 两个站点上的 VPN 设备都连接到此 IP 地址。 记录此 IP 地址,以供参考。

还需要获取已创建的每个隧道的预共享 IPsec/IKE 密钥。 使用这些密钥和 Azure 网关 IP 地址来配置本地 VPN 设备。

需要使用 PowerShell 获取预共享密钥。 如果您不熟悉如何使用 PowerShell 管理 Azure,请参阅 Azure PowerShell

使用 Get-AzureVNetGatewayKey cmdlet 提取预共享密钥。 为每个隧道运行一次此 cmdlet。 以下示例演示为虚拟网络“Azure 站点”与站点“站点 A”和“站点 B”之间的隧道提取密钥所需的命令。在此示例中,输出将保存到单独的文件中。 另外,您可以将这些密钥传输到其他 PowerShell cmdlet 或在脚本中使用它们。

Get-AzureVNETGatewayKey -VNetName "Azure Site" -LocalNetworkSiteName "Site A" | Set-Content -Path C:\Keys\KeysForTunnelToSiteA.txt
Get-AzureVNETGatewayKey -VNetName "Azure Site" -LocalNetworkSiteName "Site B" | Set-Content -Path C:\Keys\KeysForTunnelToSiteB.txt

配置内部部署 VPN 设备

Microsoft Azure 为支持的 VPN 设备提供 VPN 设备配置脚本。 选择虚拟网络上的“下载 VPN 设备脚本”链接,仪表板为 VPN 设备选择相应的脚本。

下载的脚本具有在设置虚拟网络时配置的第一个站点的配置设置,并且可以按原样用于配置该站点的 VPN 设备。 例如,如果在创建虚拟网络时将站点 A 指定为 本地网络 ,则 VPN 设备脚本可用于站点 A。但是,您需要修改它以配置站点 B 的 VPN 设备。具体而言,您需要更新预共享密钥以匹配第二个站点的密钥。

例如,如果为站点使用路由和远程访问服务 (RRAS) VPN 设备,则需要:

  1. 在任意文本编辑器中打开配置脚本。

  2. 找到 节 #Add S2S VPN interface

  3. 在此部分中查找 Add-VpnS2SInterface 命令。 验证 SharedSecret 参数的值是否与要为其配置 VPN 设备的站点的预共享密钥匹配。

其他设备可能需要更多验证。 例如,适用于 Cisco 设备的配置脚本使用本地 IP 地址范围设置 ACL 规则。 您需要检查并验证对配置脚本中的本地站点的所有引用,然后再进行使用。

检查点:检查 VPN 状态

此时,您的两个站点都已通过 VPN 网关连接到 Azure 虚拟网络。 通过在 PowerShell 中运行以下命令,您可以验证多站点 VPN 的状态。

Get-AzureVnetConnection -VNetName "Azure Site" | Format-Table LocalNetworkSiteName, ConnectivityState

如果两个隧道都已启动并运行,则此命令的输出如以下示例所示。

LocalNetworkSiteName    ConnectivityState
--------------------    -----------------
Site A                  Connected
Site B                  Connected

通过在 Azure 管理门户中查看虚拟网络仪表板,您还可以对连接进行验证。 这两个站点的 STATUS 值显示为 “已连接”。

注意

成功建立连接后,状态更改可能需要几分钟才能在 Azure 管理门户中显示。

阶段 3:配置虚拟机

需要为此部署在 Microsoft Azure 中创建至少两个虚拟机:域控制器和文件服务器作为 DAG 见证。

  1. Create virtual machines for your domain controller and your file server using the instructions in Create a Virtual Machine Running Windows. Make sure that you select the virtual network you created for REGION/AFFINITY GROUP/VIRTUAL NETWORK when specifying the settings of your virtual machines.

  2. 使用 Azure PowerShell 为域控制器和文件服务器指定首选 IP 地址。 为 VM 指定首选 IP 地址时,需要更新它,这需要重启 VM。 以下示例将 Azure-DC 和 Azure-FSW 的 IP 地址分别设置为 10.0.0.10 和 10.0.0.11。

    Get-AzureVM Azure-DC | Set-AzureStaticVNetIP -IPAddress 10.0.0.10 | Update-AzureVM
    
    Get-AzureVM Azure-FSW | Set-AzureStaticVNetIP -IPAddress 10.0.0.11 | Update-AzureVM
    

    注意

    带有首选 IP 地址的 VM 将尝试使用该地址。 但是,如果该地址已被分配给不同的 VM,则带有首选 IP 地址配置的 VM 将不会启动。 为了避免这种情况,确保您使用的 IP 地址没有分配给其他 VM。

  3. 使用您组织采用的标准设置 Azure 上的域控制器 VM。

  4. 按照 Exchange DAG 见证的先决条件准备文件服务器:

    1. 使用“添加角色和功能向导”或 Install-WindowsFeature cmdlet 添加文件服务器角色。

    2. 将 Exchange 信任的子系统通用安全组添加到本地管理员组。

检查点:检查虚拟机状态

此时,您的虚拟机应该可以正常运行,并且能够与您的两个内部部署数据中心中的服务器进行通信:

  • 验证 Azure 中的域控制器是否正在复制您的内部部署域控制器。

  • 验证您是否可以按照名称找到 Azure 上的文件服务器并在 Exchange 服务器中建立 SMB 连接。

  • 验证您是否可以按照 Azure 上的文件服务器中的名称找到 Exchange 服务器。

阶段 4:配置 DAG 见证

最后,您需要将 DAG 配置为使用新的见证服务器。 默认情况下,Exchange 使用 C:\DAGFileShareWitnesses 作为您的见证服务器上的文件共享见证路径。 如果使用自定义文件路径,还应更新特定共享的见证目录。

  1. 连接到 Exchange 命令行管理程序。

  2. 运行以下命令以配置您的 DAG 的见证服务器。

    Set-DatabaseAvailabilityGroup -Identity DAG1 -WitnessServer Azure-FSW
    

有关详细信息,请参阅以下文章:

配置数据库可用性组属性

Set-DatabaseAvailabilityGroup

检查点:验证 DAG 文件共享见证

此时,DAG 配置为使用 Azure 上的文件服务器作为 DAG 见证。 执行以下步骤来验证配置:

  1. 运行以下命令对 DAG 配置进行验证。

    Get-DatabaseAvailabilityGroup -Identity DAG1 -Status | Format-List Name, WitnessServer, WitnessDirectory, WitnessShareInUse
    

    验证是否将 WitnessServer 参数设置为 Azure 上的文件服务器, 将 WitnessDirectory 参数设置为正确的路径,以及 WitnessShareInUse 参数是否显示 Primary

  2. 如果 DAG 具有偶数个节点,则会配置文件共享见证。 运行以下命令,对群集属性中的文件共享见证设置进行验证。 SharePath 参数的值应指向文件服务器并显示正确的路径。

    Get-ClusterResource -Cluster MBX1 | Get-ClusterParameter | Format-List
    
  3. 接下来,运行以下命令对"文件共享见证"群集资源的状态进行验证。 群集资源 的状态 应显示为 “联机”。

    Get-ClusterResource -Cluster MBX1
    
  4. 最后,通过检查"文件资源管理器"中的文件夹和服务器管理器中的共享,验证是否已成功地在文件服务器上创建共享。