物理サーバーの検出および評価のサポート マトリックス

この記事では、「Azure Migrate: 検出と評価」ツールを使用してAzureへの移行を行う際の物理サーバーの評価について、前提条件とサポート要件をまとめます。 物理サーバーをAzureに移行する場合は、移行サポート マトリックスを参照してください。

物理サーバーを評価するには、プロジェクトを作成し、Azure Migrate: 検出と評価ツールをプロジェクトに追加します。 ツールを追加したら、Azure Migrate アプライアンスをデプロイします。 アプライアンスは、オンプレミスのサーバーを継続的に検出し、サーバーのメタデータとパフォーマンス データをAzureに送信します。 検出が完了したら、検出されたサーバーをグループにまとめ、グループに対して評価を実行します。

制限事項

サポート 詳細
評価の上限 1 つのプロジェクトで最大 35,000 個の物理サーバーを検出して評価できます。
プロジェクトの制限 Azure サブスクリプションには複数のプロジェクトを作成できます。 物理サーバーに加えて、プロジェクトには、VMware 上および Hyper-V 上のサーバーを、それぞれの評価制限まで含めることができます。
探索 Azure Migrate アプライアンスは、最大 1,000 台の物理サーバーを検出できます。
評価 1 つのグループに最大 35,000 台のサーバーを追加できます。

1 回の評価で最大 35,000 台のサーバーを評価できます。

評価の詳細についてはこちらをご覧ください。

物理サーバーの要件

  • 物理サーバーの展開: 物理サーバーは、スタンドアロンにすることも、クラスターにデプロイすることもできます。

  • サーバーの種類: ベアメタル サーバー、オンプレミスで実行される仮想化サーバー、または他のクラウド (アマゾン ウェブ サービス (AWS)、Google Cloud Platform (GCP)、Xen など)。

    現在、Azure Migrateは準仮想化サーバーの検出をサポートしていません。

  • Operating system: 移行についてすべてのWindowsおよび Linux オペレーティング システムを評価できます。

    Windows Server 2008、2008 R2、2012、および 2012 R2 はサポート終了 (EOS) に達しました。 使用状況を確認し、それに応じて OS のアップグレードと移行を計画します。 詳細については、サポート終了情報を参照してください。

その結果、Azure Migrateはこれらの OS バージョンの一貫性のある結果や信頼性の高い結果を保証しません。 お客様は問題に直面する可能性があり、移行を開始する前にサポートされているWindows Serverバージョンにアップグレードすることを強くお勧めします。

Azure Migrate アプライアンスの要件

Azure Migrateでは、検出と評価に Azure Migrate アプライアンス を使用します。 物理サーバーのアプライアンスは、仮想マシン (VM) または物理サーバー上で実行できます。

ポート アクセス

次の表は、評価のためのポート要件をまとめたものです。

デバイス Connection
アプライアンス TCP ポート 3389 で、アプライアンスへのリモート デスクトップ接続を許可するための受信接続。

ポート 44368 で、https://<appliance-ip-or-name>:44368 という URL を使用してアプライアンス管理アプリにリモートでアクセスするための受信接続。

ポート 443 (HTTPS) 上の送信接続は、検出とパフォーマンスのメタデータを Azure Migrate and Modernize に送信します。
物理サーバー Windows: WinRM ポート 5986 (HTTPS) の受信接続は、Windows サーバーから構成とパフォーマンスのメタデータをプルするために使用されます。

ターゲット Hyper-V サーバーで HTTPS の前提条件が構成されていない場合、アプライアンス通信は WinRM ポート 5985 (HTTP) にフォールバックします。

フォールバックなしで HTTPS 通信を強制するには、アプライアンス構成マネージャーを切り替えます。

有効にした後、ターゲット サーバーで前提条件が構成されていることを確認します。

- ターゲット サーバーで証明書が構成されていない場合、現在検出されているサーバーと新しく追加されたサーバーの両方で検出が失敗します。

- WinRM HTTPS には、ホスト名と一致する共通名 (CN) を持つローカル コンピューターのサーバー認証証明書が必要です。 証明書の有効期限が切れていないか、失効しているか、自己署名されていない必要があります。 HTTPS 用の WinRM の構成に関する 記事 を参照してください。

- Linux: ポート 22 (TCP) 上の受信接続。Linux サーバーから構成とパフォーマンスのメタデータをプルします。

ソフトウェア インベントリの要件

サーバーの検出に加えて、Azure Migrate: 検出と評価では、サーバーでソフトウェア インベントリを実行できます。 ソフトウェア インベントリには、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。 使っている OS の種類とパッケージ マネージャーの種類によっては、その他のコマンドもあります: 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 インスタンスとデータベース検出の要件

Software インベントリはSQL Serverインスタンスを識別します。 アプライアンスは、この情報を使用して、Windows 認証またはアプライアンス構成マネージャーで指定されたSQL Server認証資格情報を使用して、それぞれのSQL Server インスタンスへの接続を試みます。 アプライアンスは、ネットワークの見通し線があるSQL Serverインスタンスにのみ接続できます。 ソフトウェア インベントリ自体には、ネットワーク通信経路が必要ない場合があります。

アプライアンスが接続されると、SQL Serverインスタンスとデータベースの構成データとパフォーマンス データが収集されます。 アプライアンスは、SQL Server構成データを 24 時間ごとに更新し、30 秒ごとにパフォーマンス データをキャプチャします。

サポート 詳細
サポートされているサーバー VMware、Microsoft Hyper-V、物理/ベアメタル環境でSQL Serverを実行しているサーバーと、AWS や GCP などの他のパブリック クラウドのサービスとしてのインフラストラクチャ (IaaS) サーバーでのみサポートされます。

1 つのアプライアンスから最大 750 個のSQL Server インスタンスまたは 15,000 個の SQL データベースを検出できます。いずれか小さい方です。 スケーリングの問題を回避するために、アプライアンスのスコープで検出する SQL を実行しているサーバーの数は 600 未満にすることをお勧めします。
Windows サーバー Windows Server 2008 以降がサポートされています。
Linux サーバー 現在サポートされていません。
認証メカニズム Windows認証とSQL Server認証の両方がサポートされています。 アプライアンス構成マネージャーで両方の種類の認証の資格情報を指定できます。
SQL Server アクセス SQL Serverインスタンスやデータベースを検出するには、Windows/ドメインのアカウントまたはSQL Serverアカウントに対し、各SQL Serverインスタンスに対してこれらの低い特権の読み取りアクセス権限が必要です。 低い特権のアカウント プロビジョニング ユーティリティを使用して、カスタム アカウントを作成したり、sysadmin サーバー ロールのメンバーである既存のアカウントを簡単に使用したりできます。
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 Migrateは SQL インスタンスへの最も安全な接続方法を使用します。 つまり、Azure Migrateおよび Modernize では、TrustServerCertificate プロパティを true に設定することで、Azure Migrate アプライアンスとソース SQL Server インスタンス間の通信が暗号化されます。 また、トランスポート層では、Secure Sockets Layer を使ってチャネルが暗号化され、証明書チェーンによる信頼性の検証がバイパスされます。 そのため、証明書のルート証明機関を信頼するようにアプライアンス サーバーを設定する必要があります。

ただし、アプライアンスで Edit SQL Server connection properties を選択することで、接続設定を変更できます。 選択内容の詳細については、こちらを参照してください。

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および Modernize はサーバー上の Web アプリを検出します。

アプライアンスにドメインとドメイン以外の資格情報の両方を追加できます。 使うアカウントは、ソース サーバーに対するローカル管理者特権を持っている必要があります。 Azure Migrateと Modernize では、資格情報がそれぞれのサーバーに自動的にマップされるため、手動でマップする必要はありません。 最も重要なのは、これらの資格情報がMicrosoftに送信されることは決してなく、ソース環境で実行されているアプライアンス上に残ります。

アプライアンスが接続されると、ASP.NET Web アプリ (IIS Web サーバー) と Java Web アプリ (Tomcat サーバー) の構成データが収集されます。 Web アプリ構成データは 24 時間に 1 回更新されます。

サポート ASP.NET Web アプリ Java Web アプリ
スタック VMware、Hyper-V、物理サーバー VMware、Hyper-V、物理サーバー
Windows サーバー Windows Server 2008 R2 以降がサポートされています サポートされていません
Linux サーバー サポートされていません 要件を満たすサーバー
Web Server のバージョン IIS 7.5 以降 Tomcat 8 以降
プロトコル 既定では、WinRM ポート 5986 (HTTPS) は、ターゲット サーバーで HTTPS の前提条件が構成されていない場合、通信は WinRM ポート 5985 (HTTP) にフォールバックします SSH ポート 22 (TCP)
必要な特権 最小特権ユーザーは、2 つのユーザー グループ 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、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 Monitor の価格」を参照してください。

次のステップ

物理サーバーを検出するための準備をします。