本文總結使用 Azure Migrate: Discovery and assessment 工具以發現並評估 VMware 環境中遷移至Azure伺服器的前提條件與支援需求。
要評估伺服器,首先建立一個 Azure Migrate 專案。 Azure Migrate: Discovery and Assessment 工具會自動加入專案中。 接著,部署 Azure Migrate 設備。 設備會持續偵測本地或 Azure VMware 解決方案 伺服器,並將設定與效能元資料傳送至 Azure。 探索完成時,請將探索到的伺服器收集到群組,並依群組執行評量。
當您規劃 VMware 伺服器遷移到 Azure 時,請參考 migration 支援矩陣。
VMware 需求
| VMware | 詳細資訊 |
|---|---|
| vCenter Server | 你想發現和評估的伺服器必須由 vCenter Server 版本 9.0、8.0、7.0、6.7、6.5、6.0 或 5.5 來管理。 目前不支援提供設備中的 ESXi 主機詳細資料來探索伺服器。 vCenter Server (用於探索及評量伺服器) 和 ESXi 主機 (用於複寫伺服器) 不支援 IPv6 位址。 |
| 權限 | Azure Migrate: Discovery and Assessment 工具需要 vCenter Server 唯讀帳號。 如果您想要使用此工具進行軟體清查、無代理程式的相依性分析、Web 應用程式和 SQL 探索,則帳戶必須具有在 VMware 虛擬機器 (VM) 上進行客體作業的權限。 |
伺服器需求
| VMware | 詳細資訊 |
|---|---|
| 作業系統 | 所有 Windows 和 Linux 作業系統都可以進行遷移評估。 |
| 儲存體 | 支援連接至 SCSI、IDE 和 SATA 型控制器的磁碟。 |
Azure Migrate 裝置需求
Azure Migrate and Modernize 使用 Azure Migrate 設備進行發現與評估。 您可以使用匯入至 vCenter Server 的 VMware Open Virtualization Appliance 範本,在 VMware 環境中將設備部署為伺服器。 您也可以使用 PowerShell 指令碼。 深入了解 VMware 的設備需求。
以下是設備的更多需求:
連接埠存取權需求
| 裝置 | Connection |
|---|---|
| Azure Migrate 裝置 | TCP 連接埠 3389上的輸入連線,以允許遠端桌面對設備連線。 連接埠 44368 上的輸入連線,可使用下列 URL 從遠端存取設備管理應用程式: https://<appliance-ip-or-name>:44368。 透過通訊埠 443 (HTTPS) 進行輸出連線,以將發現與效能中繼資料傳送至 Azure Migrate 與 Modernize。 |
| vCenter Server | TCP 連接埠 443 上的輸入連線,以允許設備收集設定和效能中繼資料以進行評定。 根據預設,設備會連線到連接埠 443 上的 vCenter。 如果 vCenter Server 接聽不同的連接埠,您可以在設定探索時修改連接埠。 |
| ESXi 主機 | 為探索軟體清查或無代理程式相依性分析,設備會連線到 TCP 通訊埠 443 上的 ESXi 主機,以探索伺服器上的軟體清查和相依性。 |
軟體清查需求
除了偵測伺服器外,Azure Migrate: Discovery and Assessment 也能對伺服器進行軟體盤點。 軟體清單提供透過使用 Azure Migrate 與 Modernize 發現的 Windows 與 Linux 伺服器上執行的應用程式、角色與功能清單。 它讓您能辨識並規劃針對本地或 Azure VMware 解決方案 工作負載量身打造的遷移路徑。
| 支援 | 詳細資訊 |
|---|---|
| 支援的伺服器 | 你可以對新增至每個 Azure Migrate 設備上的 vCenter Servers 中運行的最多 10,000 台伺服器進行軟體盤點。 |
| 作業系統 | 支援運行所有 Windows 與 Linux 版本的伺服器。 |
| 伺服器需求 | 對於軟體清查,必須在您的伺服器上安裝並執行 VMware 工具。 VMware 工具版本必須是 10.2.1 版或更新版本。 Windows 伺服器必須安裝 PowerShell 2.0 或更新版本。 Windows 管理儀器(WMI)必須啟用並可於 Windows 伺服器上使用,以收集伺服器上所安裝的角色與功能細節。 |
| vCenter Server 帳戶 | 若要與伺服器互動以執行軟體盤點,用於評估的 vCenter Server 唯讀帳戶必須具有在 VMware VM 上執行來賓作業的權限。 |
| 伺服器存取 | 你可以在設備設定管理員中新增多個網域和非網域(Windows/Linux)憑證以管理軟體庫存。 你必須有一個訪客使用者帳號(Windows 伺服器),以及一個標準使用者帳號(非 sudo 存取權)才能使用所有 Linux 伺服器。 |
| 連接埠存取 | 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 Authentication 或 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 帳號需對每個 SQL Server 實例擁有這些低權限的讀取權限。 為了簡單起見,您可以使用 低權限帳戶佈建公用程式 來建立自訂帳戶,或使用屬於系統管理員伺服器角色成員的任何現有帳戶。 |
| SQL Server 版本 | 支援 SQL Server 2008 及更新版本。 |
| SQL Server 版本 | 支援 Enterprise、Standard、Developer 和 Express 版本。 |
| 支援的 SQL 設定 | 支援探索獨立、高可用性和具災害保護的 SQL 部署。 也支援探索由 Always On 容錯移轉叢集執行個體和 Always On 可用性群組提供技術支援的高可用性災害復原 SQL 部署。 |
| 支援的 SQL 服務 | 目前僅支援 SQL Server Database Engine。 不支援發現 SQL Server Reporting Services、SQL Server Integration Services 以及 SQL Server Analysis Services。 |
備註
預設情況下,Azure Migrate and Modernize 使用最安全的 SQL 實例連接方式。 也就是說,Azure Migrate 和 Modernize 透過將 TrustServerCertificate 屬性設為 true,來加密Azure Migrate設備與來源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 應用程式探索需求
軟體清查 會識別探索到的伺服器上當前存在的網頁伺服器角色。 如果伺服器安裝了網頁伺服器,Azure Migrate and Modernize 會發現伺服器上的網頁應用程式。
您可以同時在設備上新增網域和非網域認證。 請確定所使用的帳戶在來源伺服器上具有本機系統管理員權限。 Azure Migrate 和 Modernize 會自動將憑證對應到各自的伺服器,所以你不用手動映射。 最重要的是,這些憑證永遠不會傳送給 Microsoft,而是保留在原始環境中運行的設備上。
裝置連接後,會收集 ASP.NET 網頁應用程式(IIS 網頁伺服器)及 Java 網頁應用程式(Tomcat 伺服器)的設定資料。 Web 應用程式組態資料每隔 24 小時會更新一次。
| 支援 | ASP.NET 網頁應用程式 | Java 網頁應用程式 |
|---|---|---|
| Stack | VMware、Hyper-V 以及實體伺服器。 | VMware、Hyper-V 以及實體伺服器。 |
| Windows 伺服器 | 支援 Windows Server 2008 R2 及更新版本。 | 不支援。 |
| Linux 伺服器 | 不支援 | 符合 需求的伺服器。 |
| 網頁伺服器版本 | IIS 7.5 和更新版本。 | Tomcat 8 或更新版本。 |
| Connection | 使用VMware工具。
若未安裝 VMware 工具,預設會使用 WinRM 埠 5986(HTTPS)。 如果目標伺服器沒有設定 HTTPS 前置條件,通訊會回退到 WinRM 埠 5985(HTTP) |
使用VMware工具。
若未安裝 VMware 工具,則使用 SSH 埠 22(TCP)。 |
| 必要權限 | 使用者應該是兩個使用者群組的一員:1. 遠端管理使用者 2. IIS_IUSRS。 使用者必須擁有以下位置的讀取權限:C:\Windows\system32\inetsrv\config、C:\Windows\system32\inetsrv\config\applicationHost.config 及 C:\Windows\system32\inetsrv\config\redirection.config。 使用 secpol.msc 將使用者加入「以批次工作登入」的狀態,並確保使用者不屬於「拒絕以批次工作登入」的狀態。 |
在所有 CATALINA_HOME 目錄上,遞歸地設定 讀取 (r) 和 執行 (x) 的權限。 |
備註
資料在靜止狀態和傳輸過程中始終會進行加密。
相依性分析需求 (無代理)
相依性分析可協助您分析所探索到伺服器之間的相依性。 你可以在 Azure Migrate 專案中用地圖視圖輕鬆視覺化相依關係。 你可以用相依關係來將相關伺服器分組,方便遷移到 Azure。 下表摘要說明用於設定無代理程式相依性分析的需求。
| 支援 | 詳細資訊 |
|---|---|
| 支援的伺服器 | 您可以在每個設備上對最多 3,000 台伺服器 (跨多個 vCenter Server) 啟用無代理程式相依性分析。 |
| Windows 伺服器 | Windows Server 2022 Windows Server 2019 Windows Server 2016 Windows Server 2012 R2 Windows Server 2012 Windows Server 2008 R2(64 位元) Windows Server 2008(32 位元) |
| Linux 伺服器 | Red Hat Enterprise Linux 6.x、7.x、8.x、9.x、9.5 Ubuntu 24.04、22.04、12.04、14.04、16.04、18.04、20.04、22.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 Alma Linux 8.x、9.x Rocky Linux 8.x、9.x |
| 伺服器需求 | VMware Tools (10.2.1 和更新版本) 必須安裝在您想要分析的伺服器上並加以執行。 Windows 伺服器使用的是 PowerShell 2.0 或更新版本。 Linux 伺服器已安裝Bash 4.0版或更新版本。 WMI 應該在 Windows 伺服器上啟用並可用。 |
| vCenter Server 帳戶 | Azure Migrate 和 Modernize 用於評估的唯讀帳號必須擁有 VMware 虛擬機上訪客操作的權限。 |
| Windows 伺服器存取 | 具有伺服器上管理員權限的使用者帳戶 (本機或網域)。 |
| Linux 伺服器存取權 | 具有執行 ls 和 netstat 命令權限的 sudo 使用者帳戶。 如果您要提供 sudo 使用者帳戶,請確定您啟用 NOPASSWD ,讓帳戶執行必要的命令,而不需要在每次叫用 sudo 命令時提示輸入密碼。 |
| 連接埠存取 | Azure Migrate 設備必須能連接到運行你想發現相依關係伺服器的 ESXi 主機上的 TCP 埠 443。 執行 vCenter Server 的伺服器會傳回 ESXi 主機連線,可下載包含相依性資料的檔案。 |
| 探索方法 | 伺服器之間的相依性資訊是使用安裝在伺服器 (執行 vCenter Server) 上的 VMware 工具所收集。 設備會使用 vSphere API 從伺服器收集資訊。 伺服器上未安裝任何代理程式,且設備不會直接連線至伺服器。 |
備註
在某些最新的 Linux OS 版本中,netstat 命令已由 ss 命令取代;準備伺服器時,請記住該命令。
代理程式型相依性視覺化(已淘汰)
基於代理的相依分析 僅支援於經典視圖,且新體驗中無法使用。 經典觀點預計於 2026 年底前淘汰。 在此之前,您可以繼續存取已啟用代理依賴分析的伺服器的 Log Analytics 工作空間。 不過,你無法新增伺服器來進行以代理程式為基礎的相依性分析。 相關資訊請參見 「設定相依性視覺化」。
如果你使用 Service Map 進行基於代理的相依性分析,請遷移到 VM Insights。 ServiceMap 已經退役。
備註
代理程式型相依性分析需額外付費。 相關的 Log Analytics 工作空間可能會產生使用費。 價格資訊請參見 Azure 監視器 定價。
使用 RVTools XLSX 匯入伺服器 (預覽)
作為使用 Azure Migrate 設備遷移至 Azure 旅程的一部分,你首先會發現伺服器、庫存和工作負載。 不過,若要在部署設備之前快速評估,您可以使用 RVTools XLSX 檔案 (預覽)來匯入伺服器。
主要優點
使用 RVTools XLSX 檔案:
- 協助在部署設備之前建立商務案例或評估伺服器。
- 當部署 Azure Migrate 設備受到組織限制時,可作為替代方案。
- 當你無法分享允許存取本地或 Azure VMware 解決方案 伺服器的憑證時,這很有幫助。
- 當安全限制阻礙你收集並傳送設備收集的資料到 Azure 時,它很有用。
局限性
本節討論要考慮的限制。
如果您要使用 RVTools XLSX 檔案來匯入伺服器並建置商務案例,則以下是一些限制:
- Azure 設定中的效能歷史持續時間不適用。
- 伺服器在商業案例利用率深入解析圖表中被歸類為「未知」,並按現狀計費,而不針對 Azure 或 Azure VMware 解決方案 成本進行適當大小調整。
後續步驟
- 檢閱評量最佳做法。
- 學習如何準備 VMware 評估。