實體伺服器探索和評量的支援矩陣

本文總結了使用 Azure Migrate: Discovery and assessment 工具評估實體伺服器遷移至 Azure 時的前提條件與支援需求。 如果你想將實體伺服器遷移到 Azure,請參考 migration 支援矩陣。

要評估實體伺服器,你需要建立一個專案,並將 Azure Migrate: Discovery and Assessment 工具加入專案中。 新增工具後,部署 Azure Migrate appliance。 設備持續偵測本地伺服器,並將伺服器的元資料與效能資料傳送至 Azure。 探索完成之後,請將探索到的伺服器收集到群組,然後對群組執行評量。

限制

支援 詳細資料
評量限制 您可以在單一 專案中探索及評估最多 35,000 部實體伺服器。
專案限制 你可以在 Azure 訂閱中建立多個專案。 除了實體伺服器外,專案還可包含 VMware 與 Hyper-V 上的伺服器,並依各自的評估限制設置。
探索 Azure Migrate 設備最多可偵測 1,000 台實體伺服器。
評量 您最多可以在單一群組中新增 35,000 部伺服器。

您最多可以在單一評估中評估 35,000 部伺服器。

深入了解評估。

實體伺服器需求

  • 實體伺服器部署: 實體伺服器可以獨立或部署在叢集中。

  • 伺服器類型: 裸機伺服器、執行內部部署的虛擬化伺服器,或其他雲端,例如 Amazon Web Services (AWS)、Google Cloud Platform (GCP)和 Xen。

    附註

    目前 Azure Migrate 不支援發現半虛擬化伺服器。

  • 作業系統:所有Windows及 Linux 作業系統皆可進行遷移評估。

    附註

    Windows Server 2008、2008 R2、2012 及 2012 R2 已達到支援終止(EOS)。 檢視你的使用情況,並相應規劃作業系統升級與遷移。 如需詳細資訊,請參閱終止支援:

因此,Azure Migrate 無法保證這些作業系統版本的結果一致或可靠。 客戶可能會遇到問題,強烈建議在開始遷移前升級至支援的 Windows Server 版本。

Azure Migrate 裝置需求

Azure Migrate 使用 Azure Migrate 設備進行發現與評估。 實體伺服器的設備可以在虛擬機器 (VM) 或實體伺服器上執行。

連接埠存取

下表摘要說明評估的連接埠需求。

裝置 連線
家電 TCP 連接埠 3389上的輸入連線,以允許遠端桌面對設備連線。

連接埠 44368 上的輸入連線,可使用下列 URL 從遠端存取設備管理應用程式:https://<appliance-ip-or-name>:44368。

透過連接埠 443 (HTTPS) 進行輸出連線,將探索與效能中繼資料傳送至 Azure Migrate 和現代化。
實體伺服器 Windows:WinRM 埠 5986(HTTPS)上的入站連線用於從Windows伺服器擷取設定與效能元資料。

如果目標 Hyper-V 伺服器未設定 HTTPS 前置條件,設備通訊將回退至 WinRM 埠 5985(HTTP)。

若要強制執行 HTTPS 通訊而不需後援,請切換設備組態管理員。

啟用之後,請確定已在目標伺服器上設定必要條件。

- 如果未在目標伺服器上設定憑證,則探索將會在目前探索到的伺服器和新增的伺服器上失敗。

- WinRM HTTPS 需要本機計算機伺服器驗證憑證,且具有符合主機名的通用名稱 (CN)。 憑證不得過期、撤銷或自我簽署。 請參閱如何為 WinRM 設定 HTTPS 的文章。

- Linux:使用 TCP 連接埠 22 的入站連線,從 Linux 伺服器中擷取配置與效能中繼資料。

軟體清查需求

除了偵測伺服器外,Azure Migrate: Discovery and Assessment 也能對伺服器進行軟體盤點。 軟體清單提供透過使用 Azure Migrate 與 Modernize 發現的 Windows 與 Linux 伺服器上執行的應用程式、角色與功能清單。 其可讓您找出並規劃專為內部部署工作負載量身打造的移轉路徑。

支援 詳細資料
支援的伺服器 你可以對每個 Azure Migrate 設備中發現最多 1,000 台伺服器進行軟體盤點。
作業系統 支援所有符合伺服器需求且具備存取權限的 Windows 與 Linux 版本伺服器。
伺服器需求 Windows 伺服器必須啟用 PowerShell 遠端處理,並安裝 PowerShell 2.0 或更新版本。

必須在 Windows 伺服器上啟用且可用 WMI,以收集伺服器上角色與功能的詳細資訊。

Linux 伺服器必須啟用 SSH 連線,並確保下列命令可以在 Linux 伺服器上執行,才能提取應用程式資料:list、tail、awk、grep、locate、head、sed、ps、print、sort、uniq。 根據作業系統類型和所使用的套件管理員類型,以下是一些其他命令:rpm/snap/dpkg、yum/apt-cache、mssql-server。
Windows 伺服器存取 一個 Windows 伺服器的訪客使用者帳號。
Linux 伺服器存取權 所有 Linux 伺服器的標準使用者帳戶 (非 sudo 存取權)。
連接埠存取 Windows 伺服器需要透過 5986 (HTTPS) 或 5985(HTTP) 埠口存取。 Linux 伺服器需要連接埠 22 (TCP) 的存取權。
探索 系統會使用設備上新增的伺服器認證直接連線至伺服器,以執行軟體清查。

設備透過 PowerShell 遠端存取從 Windows 伺服器收集軟體庫存資訊,並透過 SSH 連線從 Linux 伺服器收集。

軟體清查是無代理程式作業。 伺服器上不會安裝任何代理程式。

SQL Server 實例與資料庫發現需求

軟體庫存 識別SQL Server實例。 設備會嘗試透過設備組態管理員中提供的 Windows Authentication 或 SQL Server 認證憑證,利用這些資訊連接相應的 SQL Server 實例。 設備僅能連線至其具有網路視線的 SQL Server 執行個體。 軟體清查本身可能不需要直視性網路。

設備連接後,會收集 SQL Server 實例與資料庫的設定與效能資料。 設備每 24 小時更新一次 SQL Server 設定資料,並每 30 秒擷取一次效能資料。

支援 詳細資料
支援的伺服器 僅對 VMware、Microsoft Hyper-V 和實體/裸機環境中執行 SQL Server 的伺服器,以及其他公有雲端 (如 AWS 和 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 使用最安全的 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 應用程式探索需求

軟體清查 可以識別已檢測伺服器上的 Web 伺服器角色。 若發現伺服器安裝了網頁伺服器,Azure Migrate 與 Modernize 會偵測該伺服器上的網頁應用程式。

您可以同時在設備上新增網域和非網域認證。 請確定所使用的帳戶在來源伺服器上具有本機系統管理員權限。 Azure Migrate 和 Modernize 會自動將憑證對應到各自的伺服器,所以你不用手動映射。 最重要的是,這些憑證永遠不會傳送給 Microsoft,而是保留在原始環境中運行的設備上。

裝置連接後,會收集 ASP.NET 網頁應用程式(IIS 網頁伺服器)及 Java 網頁應用程式(Tomcat 伺服器)的設定資料。 Web 應用程式組態資料每隔 24 小時會更新一次。

支援 ASP.NET 網頁應用程式 Java 網頁應用程式
堆疊 VMware、Hyper-V 與實體伺服器 VMware、Hyper-V 與實體伺服器
Windows 伺服器 支援 Windows Server 2008 R2 及更新版本 不支援
Linux 伺服器 不支援 符合需求的伺服器
網頁伺服器版本 IIS 7.5 及以後版本 Tomcat 8 及以後版本
通訊協定 預設是 WinRM 埠 5986(HTTPS),如果目標伺服器沒有設定 HTTPS 前置條件,通訊會退回到 WinRM 埠 5985(HTTP) 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。 下表摘要說明用於設定無代理程式相依性分析的需求。

支援 詳細資料
支援的伺服器 您可以在每個設備探索到的最多 1,000 部伺服器上啟用無代理程式相依性分析。
作業系統 支援所有符合伺服器需求且具備存取權限的 Windows 與 Linux 版本伺服器。
伺服器需求 Windows 伺服器必須啟用 PowerShell 遠端處理,並安裝 PowerShell 2.0 或更新版本。

Linux 伺服器必須已啟用 SSH 連線,並確保下列命令可以在 Linux 伺服器上執行:touch、chmod、cat、ps、grep、echo、sha256sum、awk、netstat、ls、sudo、dpkg、rpm、sed、getcap、which、date。
Windows 伺服器存取 具有伺服器上管理員權限的使用者帳戶 (本機或網域)。
Linux 伺服器存取權 請參閱此連結以取得 Linux 伺服器存取權。
連接埠存取 Windows 伺服器需要透過 5986 (HTTPS) 或 5985(HTTP) 埠口存取。 Linux 伺服器需要連接埠 22 (TCP) 的存取權。
探索方法 無代理程式的相依性分析是透過設備上新增的伺服器憑證直接連線到伺服器來執行的。

該設備透過 PowerShell 遠端存取從 Windows 伺服器收集相依性資訊,並透過 SSH 連線從 Linux 伺服器收集。

伺服器不會為了提取相依性資料而安裝任何代理程式。

代理程式型相依性分析需求

基於代理的相依分析 僅支援於經典視圖,且新體驗中無法使用。 經典觀點預計於 2026 年底前淘汰。 在此之前,您可以繼續存取已啟用代理依賴分析的伺服器的 Log Analytics 工作空間。 不過,你無法新增伺服器來進行以代理程式為基礎的相依性分析。 相關資訊請參見 「設定相依性視覺化」。

如果你使用 Service Map 進行基於代理的相依性分析,請遷移到 VM Insights。 ServiceMap 已經退役。

附註

基於代理人的依賴性分析並非免費。 Log Analytics 工作空間使用費用將適用。 如需定價詳細資料,請參閱 Azure 監視器定價。

下一步

準備好進行實體伺服器的探索。