将故障转移群集实例迁移到 Azure VM 上的 SQL Server

本文介绍如何使用 Azure Migrate: 服务器迁移工具将 Always On 故障转移群集实例 (FCI) 迁移到 Azure VM 上的 SQL Server。 使用迁移工具,可以将故障转移群集实例中的每个节点迁移到托管 SQL Server 的 Azure VM,以及群集和 FCI 元数据。

在本文中,学习如何:

  • 准备 Azure 和源环境以进行迁移。
  • 开始复制 VM。
  • 监视复制。
  • 运行完整的 VM 迁移。
  • 使用 Azure 共享磁盘重新配置 SQL 故障转移群集。

本指南使用 Azure Migrate 的基于代理的迁移方法,该方法将任何服务器或虚拟机视为物理服务器。 迁移物理计算机时,“Azure Migrate: 服务器迁移”使用与 Azure Site Recovery 服务中基于代理的灾难恢复功能相同的复制体系结构,并且某些组件共享相同的代码库。 某些内容可能链接到 Site Recovery 文档。

先决条件

开始学习本教程之前,应做好以下准备:

  1. Azure 订阅。 如有必要,请创建一个免费帐户
  2. 安装 Azure PowerShell Az 模块
  3. 从 GitHub 存储库下载 PowerShell 示例脚本

准备 Azure

准备 Azure 以使用服务器迁移进行迁移。

任务 详细信息
创建 Azure Migrate 项目 Azure 帐户需要“参与者”或“所有者”权限才能创建新项目
验证 Azure 帐户的权限 Azure 帐户需要拥有 Azure 订阅的参与者或所有者权限、用于注册 Microsoft Entra ID(以前称为 Azure Active Directory)的权限、Azure 订阅上用于创建 Key Vault、创建 VM 以及写入 Azure 托管磁盘的“用户访问管理员”权限。
设置 Azure 虚拟网络 设置 Azure 虚拟网络 (VNet)。 复制到 Azure 时,将创建 Azure VM 并将其加入到在设置迁移时指定的 Azure VNet。

若要检查是否具有适当的权限,请执行以下步骤:

  1. 在 Azure 门户中打开订阅,然后选择“访问控制(IAM)”。
  2. 在“检查访问权限”中,找到相关帐户并选择它以查看权限。
  3. 你应该拥有“参与者”或“所有者”权限。
    • 如果你刚刚创建了免费的 Azure 帐户,那么你就是订阅的所有者。
    • 如果你不是订阅所有者,请让所有者分配该角色。

如果需要分配权限,请按照准备 Azure 用户帐户中的步骤进行操作。

准备迁移

若要为服务器迁移做准备,你需要验证服务器设置,并做好准备来部署复制设备。

检查计算机要求

确保计算机符合迁移到 Azure 的要求。

  1. 验证服务器要求。
  2. 验证复制到 Azure 的源计算机是否符合 Azure VM 要求
  3. 某些 Windows 源需要进行一些其他更改。 在进行这些更改之前迁移源会阻止 VM 在 Azure 中启动。 对于某些操作系统,Azure Migrate 可自动做出这些更改。

为复制做准备

“Azure Migrate:Azure Migrate 使用复制设备将计算机复制到 Azure。 复制设备运行以下组件:

  • 配置服务器:配置服务器在本地和 Azure 之间协调通信并管理数据复制。
  • 进程服务器:进程服务器充当复制网关。 它接收复制数据,通过缓存、压缩和加密对其进行优化,然后将其发送到 Azure 中的缓存存储帐户。

为设备部署做好准备,如下所述:

  • 创建一台用于托管复制设备的 Windows Server 2016 计算机。 查看计算机要求
  • 复制设备使用 MySQL。 查看在设备上安装 MySQL 的选项
  • 查看复制设备访问公有云政府云时所需的 Azure URL。
  • 查看复制设备的端口访问要求。

注意

复制设备不应安装在要复制或迁移的源计算机上,也不应安装在以前可能已安装 Azure Migrate 发现和评估设备的计算机上。

下载复制设备安装程序

若要下载复制设备安装程序,请执行以下步骤:

  1. 在 Azure Migrate 项目中选择“服务器”,在“Azure Migrate: 服务器迁移”中选择“发现”。

    “发现 VM”选项的屏幕截图。

  2. 在“发现计算机”>“计算机是否已虚拟化?”中,选择“物理或其他(AWS、GCP 和 Xen 等)” 。

  3. 在“目标区域”中,选择要将计算机迁移到的 Azure 区域。

  4. 选择“确认迁移的目标区域为 <区域名称>”。

  5. 选择“创建资源”。 随即会在后台创建一个 Azure Site Recovery 保管库。

    • 如果已设置使用 Azure Migrate 服务器迁移进行迁移,则无法配置目标选项,因为之前已设置了资源。
    • 选择此按钮后,无法更改此项目的目标区域。
    • 所有后续迁移的目标都是此区域。
  6. 在“是否安装新的复制设备?”中,选择“安装复制设备”。

  7. 在“下载并安装复制设备软件”中,下载设备安装程序和注册密钥。 需要使用该密钥来注册设备。 下载的密钥有效期为 5 天。

    下载提供程序选项的屏幕截图。

  8. 将设备安装程序文件和密钥文件复制到为该设备创建的 Windows Server 2016 计算机。

  9. 安装完成后,设备配置向导将自动启动(也可使用在设备计算机的桌面上创建的 cspsconfigtool 快捷方式手动启动该向导)。 使用向导的“管理帐户”选项卡创建具有以下详细信息的虚拟帐户:

    • “guest”作为易记名称
    • “username”作为用户名
    • “password”作为帐户密码。

    你需要在“启用复制”阶段使用此虚拟帐户。

  10. 设备已安装并重启后,在“发现计算机”中的“选择配置服务器”内选择新设备,然后选择“完成注册”。 “完成注册”步骤会执行最终的几个任务来准备复制设备。

    “完成注册”选项的屏幕截图。

安装移动服务

在要迁移的服务器上安装移动服务代理。 复制设备上已提供代理安装程序。 找到适当的安装程序,并在要迁移的每台计算机上安装该代理。

若要安装移动服务,请执行以下步骤:

  1. 登录到复制设备。

  2. 导航到 %ProgramData%\ASR\home\svsystems\pushinstallsvc\repository

  3. 找到适用于计算机操作系统和版本的安装程序。 查看支持的操作系统

  4. 将安装程序文件复制到要迁移的计算机。

  5. 确保已准备好在部署设备时生成的通行短语。

    • 将该通行短语存储在计算机上的某个临时文本文件中。
    • 可在复制设备上获取通行短语。 在命令行中,运行 C:\ProgramData\ASR\home\svsystems\bin\genpassphrase.exe -v 查看当前的通行短语。
    • 不要重新生成通行短语。 否则会中断连接,并需要重新注册复制设备。
    • 在“/Platform”参数中,对于 VMware 计算机和物理计算机,均指定 VMware。
  6. 连接到计算机并将安装程序文件的内容提取到本地文件夹(例如 c:\temp)。 在管理员命令提示符中运行以下命令:

    ren Microsoft-ASR_UA*Windows*release.exe MobilityServiceInstaller.exe
    MobilityServiceInstaller.exe /q /x:C:\Temp\Extracted
    cd C:\Temp\Extracted
    
  7. 运行移动服务安装程序:

    UnifiedAgent.exe /Role "MS" /Platform "VmWare" /Silent
    
  8. 将代理注册到复制设备:

    cd C:\Program Files (x86)\Microsoft Azure Site Recovery\agent
    UnifiedAgentConfigurator.exe  /CSEndPoint <replication appliance IP address> /PassphraseFilePath <Passphrase File Path>
    

安装发现的计算机后,可能需要一些时间才能将其显示在“Azure Migrate:服务器迁移”中。 随着 VM 的发现,“已发现的服务器”计数会不断增大。

“已发现的服务器”选项的屏幕截图。

准备源计算机

若要准备源计算机,你需要群集的信息。

注意

  • 在整个复制过程中保持磁盘所有权,直到最终转换。 如果磁盘所有权发生了变化,则可能是卷被损坏,并且需要重新触发复制。 设置每个磁盘的首选所有者,以避免在复制过程中转让所有权。

  • 避免在复制过程中进行活动修补和系统重新启动,以避免磁盘所有权转让。

若要准备源计算机,请执行以下操作:

  1. 标识磁盘所有权:登录到其中一个群集节点并打开“故障转移群集管理器”。 标识磁盘的所有者节点,以确定需要与每个服务器一起迁移的磁盘。

  2. 检索群集信息:对群集节点运行 Get-ClusterInfo.ps1 脚本以检索有关群集资源的信息。 该脚本将在 Cluster-Config.csv 文件中输出角色名称、资源名称、IP 和探测端口。 本文稍后会使用此 CSV 文件在 Azure 中创建和分配资源。

    ./Get-ClusterInfo.ps1
    

创建负载均衡器

为了使群集和群集角色正确响应请求,需要 Azure 负载均衡器。 如果没有负载均衡器,其他 VM 将无法访问群集 IP 地址,因为它无法识别为属于网络或群集。

  1. 填写 Cluster-Config.csv 文件中的列:

    列标题 描述
    NewIP 为 CSV 文件的每个资源指定 Azure 虚拟网络(或子网)中的 IP 地址。
    ServicePort 指定 CSV 文件中每个资源使用的服务端口。 对于 SQL 群集资源,请使用与 CSV 中的探测端口相同的服务端口值。 对于其他群集角色,使用的默认值为 1433,但你可以继续使用在当前设置中配置的端口号。
  2. 运行 Create-ClusterLoadBalancer.ps1 脚本,使用以下必需参数创建负载均衡器:

    参数 类型 描述
    ConfigFilePath 必需 指定在上一步中填写的 Cluster-Config.csv 文件的路径。
    ResourceGroupName 必需 指定要在其中创建负载均衡器的资源组的名称。
    VNetName 必需 指定负载均衡器将关联到的 Azure 虚拟网络的名称。
    SubnetName 必需 指定负载均衡器将关联到的 Azure 虚拟网络中的子网的名称。
    VNetResourceGroupName 必需 指定负载均衡器将关联到的 Azure 虚拟网络的资源组的名称。
    Location 必需 指定应在其中创建负载均衡器的位置。
    LoadBalancerName 必需 指定要创建的负载均衡器的名称。
    ./Create-ClusterLoadBalancer.ps1 -ConfigFilePath ./cluster-config.csv -ResourceGroupName $resourcegroupname -VNetName $vnetname -subnetName $subnetname -VnetResourceGroupName $vnetresourcegroupname -Location "eastus" -LoadBalancerName $loadbalancername
    

复制计算机

现在,选择要迁移的 计算机。 最多可以同时复制 10 台计算机。 如果需要复制更多,则可以每批 10 台同时复制它们。

  1. 在 Azure Migrate 项目中选择“服务器”,在“Azure Migrate: 服务器迁移”中选择“复制”。

    “Azure Migrate - 服务器”屏幕的屏幕截图,显示在 Azure Migrate:服务器迁移”的“迁移工具”下选择了“复制”按钮。

  2. 在“复制”>“源设置”>“计算机是否已虚拟化?”中,选择“物理或其他(AWS、GCP 和 Xen 等)”。

  3. 在“本地设备”中,选择已设置的 Azure Migrate 设备的名称。

  4. 在“进程服务器”中,选择复制设备的名称。

  5. 在“来宾凭据”中,选择以前在复制安装程序设置过程中创建的虚拟帐户。 然后选择“下一步: 虚拟机”。

    “复制”屏幕中“源设置”选项卡的屏幕截图,其中突出显示了“来宾凭据”字段。

  6. 在“虚拟机”中的“从评估中导入迁移设置?”内,保留默认设置“否,我将手动指定迁移设置”。

  7. 检查要迁移的每个 VM。 然后选择“下一步: 目标设置”。

    “选择 VM”选项的屏幕截图。

  8. 在“目标设置”中,选择订阅以及要迁移到的目标区域,并指定迁移之后 Azure VM 所在的资源组。

  9. 在“虚拟网络”中,选择迁移之后 Azure VM 要加入到的 Azure VNet/子网。

  10. 在“可用性选项”中,选择:

    • 可用性区域,将迁移的计算机固定到区域中的特定可用性区域。 使用此选项可跨可用性区域分配形成多节点应用程序层的服务器。 如果选择此选项,则需要在“计算”选项卡中指定用于每个选定计算机的可用性区域。仅当为迁移选择的目标区域支持可用性区域时,此选项才可用
    • 可用性集,将迁移的计算机放入可用性集。 若要使用此选项,所选的目标资源组必须具有一个或多个可用性集。
    • 如果不需要为迁移的计算机使用其中任何可用性配置,则选择“无需基础结构冗余”选项。
  11. 在“磁盘加密类型”中,选择以下类型:

    • 使用平台管理的密钥进行静态加密
    • 使用客户管理的密钥进行静态加密
    • 通过平台管理的密钥和客户管理的密钥进行双重加密

    注意

    若要使用 CMK 复制 VM,需要在目标资源组下创建磁盘加密集。 磁盘加密集对象将托管磁盘映射到包含 CMK 的密钥保管库,以用于 SSE。

  12. 在“Azure 混合权益”中:

    • 如果你不想要应用 Azure 混合权益,请选择“否”。 然后,选择“下一步”。
    • 如果你的 Windows Server 计算机享有有效软件保障或 Windows Server 订阅的权益,并且你想要将此权益应用到所要迁移的计算机,请选择“是”。 然后,选择“下一步”。

    “目标设置”选项的屏幕截图。

  13. 在“计算”中,查看 VM 名称、大小、OS 磁盘类型和可用性配置(如果在上一步中选定)。 VM 必须符合 Azure 要求

    • VM 大小:如果你正在使用评估建议,则 VM 大小下拉列表会显示建议大小。 否则,Azure Migrate 会根据 Azure 订阅中最接近的匹配项选择大小。 或者,请在“Azure VM 大小”中的手动选择一个大小。
    • OS 磁盘:为 VM 指定 OS(启动)磁盘。 OS 磁盘是包含操作系统引导加载程序和安装程序的磁盘。
    • 可用性区域:指定要使用的可用性区域。
    • 可用性集:指定要使用的可用性集。

    “计算机设置”选项的屏幕截图。

  14. 在“磁盘”中,指定是否要将 VM 磁盘复制到 Azure,并选择 Azure 中的磁盘类型(标准 SSD/HDD 或高级托管磁盘)。 然后,选择“下一步”。

    • 使用之前创建的列表选择要与每个服务器一起复制的磁盘。 从复制中排除其他磁盘。

    “磁盘设置”选项的屏幕截图。

  15. 在“检查并开始复制”中检查设置,然后选择“复制”启动服务器的初始复制。

注意

在复制开始之前,随时可以在“管理”>“复制计算机”中更新复制设置。 开始复制后无法更改设置。

跟踪和监视

按以下顺序执行复制:

  • 选择“复制”会启动一个“开始复制”作业。
  • “开始复制”作业成功完成后,计算机将开始初始复制到 Azure。
  • 初始复制完成后,增量复制将会开始。 对本地磁盘所做的增量更改会定期复制到 Azure 中的副本磁盘。
  • 完成初始复制后,为每个 VM 配置计算和网络项。 群集通常有多个 NIC,但迁移过程只需要一个 NIC(将其他设置为“不创建”)。

可以在门户通知中跟踪作业状态。

可以通过选择“Azure Migrate: 服务器迁移”中的“复制服务器”来监视复制状态。

“监视复制”选项的屏幕截图。

迁移 VM

复制计算机后,即可进行迁移。 若要迁移服务器,请执行以下步骤:

  1. 在 Azure Migrate 项目中选择“服务器”>“Azure Migrate: 服务器迁移”,然后选择“复制服务器”。

    “复制服务器”选项的屏幕截图。

  2. 若要确保已迁移的服务器与源服务器同步,请停止 SQL Server 资源(在“故障转移群集管理器”>“角色”>“其他资源”中),同时确保群集磁盘处于联机状态。

  3. 在“复制计算机”中,选择“服务器名称”>“概述”,确保上次同步的时间戳是在停止服务器上要迁移的 SQL Server 资源之后,再继续执行下一步。 此过程应该只需要几分钟的时间。

  4. 在“复制计算机”中,右键单击该 VM >“迁移”。

  5. 在“迁移”>“关闭虚拟机并执行计划迁移(不会丢失任何数据)”中,选择“否”>“确定”。

    注意

    对于物理服务器迁移,不自动支持关闭源计算机。 建议在迁移时段中将应用程序关闭(不要让应用程序接受任何连接),然后启动迁移(服务器需要保持运行,这样,剩余的更改可以在迁移完成前同步)。

  6. 随即会针对该 VM 启动一个迁移作业。 在 Azure 通知中跟踪该作业。

  7. 该作业完成后,可以从“虚拟机”页查看和管理该 VM。

重新配置群集

迁移 VM 后,重新配置群集。 请按照以下步骤操作:

  1. 关闭 Azure 中已迁移的服务器。

  2. 将已迁移的计算机添加到负载均衡器的后端池。 导航到“负载均衡器”>“后端池”。

  3. 选择后端池,并添加已迁移的计算机。

  4. 通过运行 Create-SharedDisks.ps1 脚本,将服务器的已迁移磁盘重新配置为共享磁盘。 该脚本是交互式的,将提示输入计算机列表,然后显示要提取的可用磁盘(仅数据磁盘)。 系统会提示你选择哪些计算机包含要转换为共享磁盘的驱动器。 选择后,系统会再次提示你选择特定磁盘(每台计算机一次)。

    参数 类型 描述
    ResourceGroupName 必需 指定包含已迁移服务器的资源组的名称。
    NumberofNodes 可选 指定故障转移群集实例中的节点数。 此参数用于标识要创建的共享磁盘的正确 SKU。 默认情况下,该脚本假定群集中的节点数为 2。
    DiskNamePrefix 可选 指定要添加到共享磁盘名称的前缀。
    ./Create-SharedDisks.ps1 -ResourceGroupName $resourcegroupname -NumberofNodes $nodesincluster -DiskNamePrefix $disknameprefix
    
  5. 通过运行 Attach-SharedDisks.ps1 脚本将共享磁盘附加到已迁移的服务器。

    参数 类型 描述
    ResourceGroupName 必需 指定包含已迁移服务器的资源组的名称。
    StartingLunNumber 可选 指定可用于要附加到的共享磁盘的起始 LUN 号。 默认情况下,脚本尝试从 0 开始将共享磁盘附加到 LUN。
    ./Attach-ShareDisks.ps1 -ResourceGroupName $resourcegroupname
    
  6. 在 Azure 中启动已迁移的服务器并登录到任何节点。

  7. 复制 Cluster-Config.csv 文件并运行将 CSV 作为参数传递的 Update-ClusterConfig.ps1 脚本。 这将确保使用新配置更新群集资源,使群集在 Azure 中正常工作。

    ./Update-ClusterConfig.ps1 -ConfigFilePath $filepath
    

SQL Server 故障转移群集实例已就绪。

完成迁移

  1. 完成迁移后,右键单击 VM >“停止迁移”。 这样会执行以下操作:
    • 停止本地计算机的复制。
    • 从 Azure Migrate 的“复制服务器”计数中删除该计算机:服务器迁移。
    • 清除计算机的复制状态信息。
  2. 在已迁移的计算机上安装适用于 Windows 的 Azure VM 代理。
  3. 执行任何迁移后的应用调整,例如更新数据库连接字符串和 Web 服务器配置。
  4. 对 Azure 中当前运行的迁移应用程序执行最终的应用程序和迁移验收测试。
  5. 将流量交接到已迁移的 Azure VM 实例。
  6. 从本地 VM 清单中删除本地 VM。
  7. 从本地备份中删除本地 VM。
  8. 更新所有内部文档,以显示新的位置和 Azure VM 的 IP 地址。

迁移后的最佳做法