VMware 发现支持矩阵

注意

本文引用了 CentOS,这是一个接近生命周期结束状态的 Linux 发行版。 请相应地考虑你的使用和规划。

本文汇总了使用 Azure Migrate:发现和评估工具来对用于 Azure 迁移的 VMware 服务器执行发现与评估的先决条件和支持要求。

若要评估服务器,请先创建 Azure Migrate 项目。 “Azure Migrate:发现和评估”工具会自动添加到改项目。 然后,部署 Azure Migrate 设备。 此设备会持续发现本地服务器,并向 Azure 发送配置和性能元数据。 在发现完成后,将发现的服务器收集到组中,并按组运行评估。

在计划将 VMware 服务器迁移到 Azure 时,请参阅迁移支持矩阵

VMware 要求

VMware 详细信息
vCenter Server 要发现和评估的服务器必须由 vCenter Server 8.0、7.0、6.7、6.5、6.0 或 5.5 管理。

目前不支持通过在设备中提供 ESXi 主机详细信息来发现服务器。

IPv6 地址不适用于 vCenter Server(用于服务器的发现和评估)和 ESXi 主机(用于服务器的复制)。
权限 “Azure Migrate:发现和评估”工具需要 vCenter Server 只读帐户。

如果想将该工具用于软件清单、无代理依赖项分析、Web 应用和 SQL 发现,则该帐户必须具有对 VMware 虚拟机 (VM) 的来宾操作权限。

服务器要求

VMware 详细信息
操作系统 可以对所有 Windows 和 Linux 操作系统进行迁移评估。
存储 支持附加到 SCSI、IDE 和基于 SATA 的控制器的磁盘。

Azure Migrate 设备要求

Azure 迁移和现代化使用 Azure Migrate 设备进行发现和评估。 可以使用 PowerShell 脚本将该设备部署为 VMware 环境中的服务器。 详细了解 VMware 的设备要求

以下介绍设备的更多要求:

端口访问要求

设备 连接
Azure Migrate 设备 TCP 端口 3389 上的入站连接,可便于通过远程桌面连接来连接到设备。

端口 44368 上的入站连接,使用 URL https://<appliance-ip-or-name>:44368 远程访问设备管理应用。

端口 443 (HTTPS) 上的出站连接,用于将发现和性能元数据发送到 Azure Migrate and Modernize。
vCenter Server TCP 端口 443 上的入站连接,可便于设备收集用于评估的配置和性能元数据。

默认情况下,设备在端口 443 上连接到 vCenter。 如果 vCenter Server 在不同端口上侦听,可以在设置发现时修改端口。
ESXi 主机 若要发现软件清单无代理依赖关系分析,可以将设备连接到 TCP 端口 443 上的 ESXi 主机,以发现服务器上的软件清单和依赖关系。

软件清单需求

除了发现服务器以外,“Azure Migrate:发现和评估”还可以执行服务器上的软件清单。 软件清单提供了使用 Azure 迁移和现代化发现的在 Windows 和 Linux 服务器上运行的应用程序、角色和功能的列表。 借助软件清单,你可以确定和计划为本地工作负载定制的迁移路径。

支持 详细信息
支持的服务器 你可从添加到每台 Azure Migrate 设备的 vCenter Server 中对高达 10,000 台服务器执行软件清单。
操作系统 支持运行所有 Windows 和 Linux 版本的服务器。
服务器要求 对于软件清单,必须在服务器上安装并运行 VMware 工具。 VMware 工具版本必须为 10.2.1 或更高版本。

在 Windows 服务器上必须安装 PowerShell 2.0 或更高版本。

Windows Management Instrumentation (WMI) 在 Windows 服务器上必须已启用且可用,以收集服务器上安装的角色和功能的详细信息。
vCenter Server 帐户 若要与适用于软件清单的服务器进行交互,用于评估的 vCenter Server 只读帐户必须具有在 VMware VM 上执行来宾操作的权限。
服务器访问 可以在软件清单的设备配置管理器中添加多个域和非域 (Windows/Linux) 凭据。

你必须拥有适用于 Windows 服务器的来宾用户帐户和适用于所有 Linux 的标准用户帐户(非 sudo 访问权限)。
端口访问 Azure Migrate 设备必须能够连接到运行要在其上执行软件清单的服务器的 ESXi 主机上的 TCP 端口 443。 运行 vCenter Server 的服务器将返回 ESXi 主机连接,以下载包含软件清单详细信息的文件。

如果你使用域凭据,Azure Migrate 设备必须能够连接到以下 TCP 和 UDP 端口:

TCP 135 - RPC 终结点
TCP 389 - LDAP
TCP 636 - LDAP SSL
TCP 445 - SMB
TCP/UDP 88 - Kerberos 身份验证
TCP/UDP 464 - Kerberos 更改操作
发现 使用服务器上安装的 VMware 工具,从 vCenter Server 执行软件清单。

设备通过 vSphere API 从运行 vCenter Server 的服务器收集有关软件清单的信息。

软件清单是无代理的。 服务器上未安装代理,并且设备不会直接连接到服务器。

SQL Server 实例和数据库发现要求

软件清单会标识 SQL Server 实例。 设备会使用此信息,尝试通过设备配置管理器中的 Windows 身份验证或 SQL Server 身份验证凭据连接到相应的 SQL Server 实例。 设备只能连接到与其建立了网络连接的 SQL Server 实例。 软件盘存本身可能无需网络连接。

连接设备后,其会收集 SQL Server 实例和数据库的配置及性能数据。 设备每隔 24 小时更新 SQL Server 配置数据,每隔 30 秒捕获性能数据。

支持 详细信息
支持的服务器 仅支持在 VMware、Microsoft Hyper-V 和物理/裸机环境中运行 SQL Server 的服务器以及 Amazon Web Services (AWS)、Google Cloud Platform (GCP) 等其他公有云的基础结构即服务 (IaaS) 服务器。

最多可以从单个设备发现 750 个 SQL Server 实例或 15,000 个 SQL 数据库,以较少者为准。 建议确保将设备的发现范围限定为发现少于 600 台运行 SQL 的服务器,以避免扩展问题。
Windows 服务器 支持 Windows Server 2008 及更高版本。
Linux 服务器 当前不支持。
身份验证机制 同时支持 Windows 和 SQL Server 身份验证。 可以在设备配置管理器中提供这两种身份验证类型的凭据。
SQL Server 访问 若要发现 SQL Server 实例和数据库,Windows 或 SQL Server 帐户必须是 sysadmin 服务器角色的成员,或者对每个 SQL Server 实例具有这些权限
SQL Server 版本 支持 SQL Server 2008 及更高版本。
SQL Server 版本 支持 Enterprise、Standard、Developer 和 Express 版本。
支持的 SQL 配置 支持发现独立、高可用性和防灾 SQL 部署。 还支持发现由 Always On 故障转移群集实例和 Always On 可用性组提供支持的高可用性灾难恢复 SQL 部署。
支持的 SQL 服务 仅支持 SQL Server 数据库引擎。

不支持 SQL Server Reporting Services、SQL Server Integration Services 和 SQL Server Analysis Services 的发现。

注意

默认情况下,Azure 迁移和现代化使用最安全的方式连接到 SQL 实例。 也就是说,Azure 迁移和现代化通过将 TrustServerCertificate 属性设置为 true 来加密 Azure 迁移设备与源 SQL Server 实例之间的通信。 此外,传输层使用安全套接字层来加密通道并绕过证书链来验证信任。 因此,必须将设备服务器设置为信任证书的根颁发机构。

但是,可以通过在设备上选择“编辑 SQL Server 连接属性”来修改连接设置。 了解详细信息以了解要选择的内容。

为 SQL Server 发现配置自定义登录名

使用以下示例脚本创建登录名并为其预配必要的权限。

Windows 身份验证

-- Create a login to run the assessment
use master;
DECLARE @SID NVARCHAR(MAX) = N'';
CREATE LOGIN [MYDOMAIN\MYACCOUNT] FROM WINDOWS;
SELECT @SID = N'0x'+CONVERT(NVARCHAR, sid, 2) FROM sys.syslogins where name = 'MYDOMAIN\MYACCOUNT'
IF (ISNULL(@SID,'') != '')
  PRINT N'Created login [MYDOMAIN\MYACCOUNT] with SID = ' + @SID
ELSE
  PRINT N'Login creation failed'
GO    

-- Create user in every database other than tempdb, model, and secondary AG databases (with connection_type = ALL) and provide minimal read-only permissions.
USE master;
EXECUTE sp_MSforeachdb '
  USE [?];
  IF (''?'' NOT IN (''tempdb'',''model''))
  BEGIN
    DECLARE @is_secondary_replica BIT = 0;
    IF CAST(PARSENAME(CAST(SERVERPROPERTY(''ProductVersion'') AS VARCHAR), 4) AS INT) >= 11
    BEGIN
      DECLARE @innersql NVARCHAR(MAX);
      SET @innersql = N''
        SELECT @is_secondary_replica = IIF(
          EXISTS (
              SELECT 1
              FROM sys.availability_replicas a
              INNER JOIN sys.dm_hadr_database_replica_states b
              ON a.replica_id = b.replica_id
              WHERE b.is_local = 1
              AND b.is_primary_replica = 0
              AND a.secondary_role_allow_connections = 2
              AND b.database_id = DB_ID()
          ), 1, 0
        );
      '';
      EXEC sp_executesql @innersql, N''@is_secondary_replica BIT OUTPUT'', @is_secondary_replica OUTPUT;
    END
    IF (@is_secondary_replica = 0)
    BEGIN
      CREATE USER [MYDOMAIN\MYACCOUNT] FOR LOGIN [MYDOMAIN\MYACCOUNT];
      GRANT SELECT ON sys.sql_expression_dependencies TO [MYDOMAIN\MYACCOUNT];
      GRANT VIEW DATABASE STATE TO [MYDOMAIN\MYACCOUNT];
    END
  END'
GO

-- Provide server level read-only permissions
use master;
GRANT SELECT ON sys.sql_expression_dependencies TO [MYDOMAIN\MYACCOUNT];
GRANT EXECUTE ON OBJECT::sys.xp_regenumkeys TO [MYDOMAIN\MYACCOUNT];
GRANT EXECUTE ON OBJECT::sys.xp_instance_regread TO [MYDOMAIN\MYACCOUNT];
GRANT VIEW DATABASE STATE TO [MYDOMAIN\MYACCOUNT];
GRANT VIEW SERVER STATE TO [MYDOMAIN\MYACCOUNT];
GRANT VIEW ANY DEFINITION TO [MYDOMAIN\MYACCOUNT];
GO

-- Provide msdb specific permissions
use msdb;
GRANT EXECUTE ON [msdb].[dbo].[agent_datetime] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysjobsteps] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[syssubsystems] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysjobhistory] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[syscategories] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysjobs] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmaintplan_plans] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[syscollector_collection_sets] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmail_profile] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmail_profileaccount] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmail_account] TO [MYDOMAIN\MYACCOUNT];
GO

-- Clean up
--use master;
-- EXECUTE sp_MSforeachdb 'USE [?]; DROP USER [MYDOMAIN\MYACCOUNT]'
-- DROP LOGIN [MYDOMAIN\MYACCOUNT];
--GO

SQL Server 身份验证

--- Create a login to run the assessment
use master;
-- NOTE: SQL instances that host replicas of Always On availability groups must use the same SID for the SQL login.
 -- After the account is created in one of the members, copy the SID output from the script and include this value
 -- when executing against the remaining replicas.
 -- When the SID needs to be specified, add the value to the @SID variable definition below.
DECLARE @SID NVARCHAR(MAX) = N'';
IF (@SID = N'')
BEGIN
 CREATE LOGIN [evaluator]
     WITH PASSWORD = '<provide a strong password>'
END
ELSE
BEGIN
 DECLARE @SQLString NVARCHAR(500) = 'CREATE LOGIN [evaluator]
   WITH PASSWORD = ''<provide a strong password>''
   , SID = ' + @SID
 EXEC SP_EXECUTESQL @SQLString
END
SELECT @SID = N'0x'+CONVERT(NVARCHAR(100), sid, 2) FROM sys.syslogins where name = 'evaluator'
IF (ISNULL(@SID,'') != '')
 PRINT N'Created login [evaluator] with SID = '''+ @SID +'''. If this instance hosts any Always On Availability Group replica, use this SID value when executing the script against the instances hosting the other replicas'
ELSE
 PRINT N'Login creation failed'
GO

-- Create user in every database other than tempdb, model, and secondary AG databases (with connection_type = ALL) and provide minimal read-only permissions.
USE master;
EXECUTE sp_MSforeachdb '
 USE [?];
 IF (''?'' NOT IN (''tempdb'',''model''))
 BEGIN
   DECLARE @is_secondary_replica BIT = 0;
   IF CAST(PARSENAME(CAST(SERVERPROPERTY(''ProductVersion'') AS VARCHAR), 4) AS INT) >= 11
   BEGIN
     DECLARE @innersql NVARCHAR(MAX);
     SET @innersql = N''
       SELECT @is_secondary_replica = IIF(
         EXISTS (
           SELECT 1
           FROM sys.availability_replicas a
           INNER JOIN sys.dm_hadr_database_replica_states b
             ON a.replica_id = b.replica_id
           WHERE b.is_local = 1
             AND b.is_primary_replica = 0
             AND a.secondary_role_allow_connections = 2
             AND b.database_id = DB_ID()
         ), 1, 0
       );
     '';
     EXEC sp_executesql @innersql, N''@is_secondary_replica BIT OUTPUT'', @is_secondary_replica OUTPUT;
   END

   IF (@is_secondary_replica = 0)
   BEGIN
       CREATE USER [evaluator] FOR LOGIN [evaluator];
       GRANT SELECT ON sys.sql_expression_dependencies TO [evaluator];
       GRANT VIEW DATABASE STATE TO [evaluator];
   END
 END'
GO

-- Provide server level read-only permissions
USE master;
GRANT SELECT ON sys.sql_expression_dependencies TO [evaluator];
GRANT EXECUTE ON OBJECT::sys.xp_regenumkeys TO [evaluator];
GRANT EXECUTE ON OBJECT::sys.xp_instance_regread TO [evaluator];
GRANT VIEW DATABASE STATE TO [evaluator];
GRANT VIEW SERVER STATE TO [evaluator];
GRANT VIEW ANY DEFINITION TO [evaluator];
GO

-- Provide msdb specific permissions
USE msdb;
GRANT EXECUTE ON [msdb].[dbo].[agent_datetime] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysjobsteps] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[syssubsystems] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysjobhistory] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[syscategories] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysjobs] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmaintplan_plans] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[syscollector_collection_sets] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmail_profile] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmail_profileaccount] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmail_account] TO [evaluator];
GO

-- Clean up
--use master;
-- EXECUTE sp_MSforeachdb 'USE [?]; BEGIN TRY DROP USER [evaluator] END TRY BEGIN CATCH PRINT ERROR_MESSAGE() END CATCH;'
-- BEGIN TRY DROP LOGIN [evaluator] END TRY BEGIN CATCH PRINT ERROR_MESSAGE() END CATCH;
--GO

Web 应用发现要求

软件清单识别发现的服务器上存在的 Web 服务器角色。 如果某个服务器安装了 Web 服务器,Azure Migrate and Modernize 还会发现该服务器上的 Web 应用。

你可以在设备中同时添加域凭据和非域凭据。 请确保使用的帐户在源服务器上具有本地管理员权限。 Azure 迁移和现代化自动将凭据映射到相应的服务器,因此你不必手动映射凭据。 最重要的是,这些凭据从不发送到 Azure,而是保留在源环境中运行的设备上。

连接设备后,它会收集 ASP.NET Web 应用(IIS Web 服务器)和 Java Web 应用(Tomcat 服务器)的配置数据。 Web 应用配置数据每 24 小时更新一次。

支持 ASP.NET Web 应用 Java Web 应用
Stack VMware、Hyper-V 和物理服务器。 VMware、Hyper-V 和物理服务器。
Windows 服务器 支持 Windows Server 2008 R2 及更高版本。 不支持。
Linux 服务器 不支持。 Ubuntu Linux 16.04/18.04/20.04、Debian 7/8、CentOS 6/7 和 Red Hat Enterprise Linux 5/6/7。
Web 服务器版本 IIS 7.5 及更高版本。 Tomcat 8 或更高版本。
协议 WinRM 端口 5985 (HTTP) SSH 端口 22 (TCP)
所需的特权 本地管理员。 root 或 sudo 用户。

注意

数据始终在传输过程中静态加密。

依赖关系分析要求(无代理)

依赖关系分析可帮助你分析已发现的服务器之间的依赖关系。 你可以使用 Azure Migrate 项目中的映射视图轻松地可视化依赖关系。 你可以使用依赖关系对相关服务器进行分组,方便迁移到 Azure。 下表总结了设置无代理依赖关系分析所需满足的要求。

支持 详细信息
支持的服务器 最多可以为 1,000 个服务器(跨多个 vCenter Server,由每个设备发现)启用无代理依赖项分析。
Windows 服务器 Windows Server 2022
Windows Server 2019
Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2(64 位)
Windows Server 2008(32 位)
Linux 服务器 Red Hat Enterprise Linux 5.1、5.3、5.11、6.x、7.x、8.x
CentOS 5.1、5.9、5.11、6.x、7.x、8.x
Ubuntu 12.04、14.04、16.04、18.04、20.04
OracleLinux 6.1、6.7、6.8、6.9、7.2、7.3、7.4、7.5、7.6、7.7、7.8、7.9、8、8.1、8.3、8.5
SUSE Linux 10、11 SP4、12 SP1、12 SP2、12 SP3、12 SP4、15 SP2、15 SP3
Debian 7、8、9、10、11
服务器要求 必须在要分析的服务器上安装并运行 VMware 工具(10.2.1 及更高版本)。

服务器必须安装 PowerShell 版本 2.0 或更高版本。

应在 Windows 服务器上启用 WMI 并可供使用。
vCenter Server 帐户 用于评估的 Azure Migrate and Modernize 只读帐户必须具有在 VMware VM 上执行来宾操作的权限。
Windows 服务器访问权限 具有服务器管理权限的用户帐户(本地或域)。
Linux 服务器访问权限 有权执行 ls 和 netstat 命令的 sudo 用户帐户。 如果要提供一个 sudo 用户帐户,请确保启用 NOPASSWD,使帐户能够运行所需的命令,且不会在每次调用 sudo 命令时都提示用户输入密码。

也可创建一个对 /bin/netstat 和 /bin/ls 文件具有 CAP_DAC_READ_SEARCH 和 CAP_SYS_PTRACE 权限的用户帐户,这两个权限使用以下命令进行设置:
sudo setcap CAP_DAC_READ_SEARCH,CAP_SYS_PTRACE=ep /bin/ls
sudo setcap CAP_DAC_READ_SEARCH,CAP_SYS_PTRACE=ep /bin/netstat
端口访问 Azure Migrate 设备必须能够连接到运行要发现其依赖关系的服务器的 ESXi 主机上的 TCP 端口 443。 运行 vCenter Server 的服务器将返回 ESXi 主机连接,以下载包含依赖关系数据的文件。
发现方法 通过使用在运行 vCenter Server 的服务器上安装的 VMware 工具,即可收集服务器之间的依赖关系信息。

设备使用 vSphere API 收集服务器上的信息。

不会在服务器上安装代理,并且设备不会直接连接到服务器。

限制

要求 详细信息
项目限制 可以在一个 Azure 订阅中创建多个 Azure Migrate 项目。

可以在单个项目中最多发现和评估 VMware 环境中的 50,000 个服务器。 项目中还可以包含物理服务器和来自 Hyper-V 环境的服务器,只要不超过评估限制即可。
发现 Azure Migrate 设备最多可以发现 10,000 个跨多个 vCenter Server 运行的服务器。

该设备支持添加多个 vCenter Server。 每个设备最多可以添加 10 个 vCenter Server。

此数量也适用于 Azure VMware 解决方案。
评估 在一个组中最多可以添加 35000 台服务器。

在一次评估中最多可以评估 35000 台服务器。

了解有关评估的详细信息。

后续步骤