フェールオーバー クラスター インスタンスを Azure VM 上の SQL Server に移行する
この記事では、Azure Migrate: Server Migration ツールを使用して、Always On フェールオーバー クラスター インスタンスを Azure VM 上の SQL Server に移行する方法について説明します。 この移行ツールを使用すると、フェールオーバー クラスター インスタンス内の各ノードだけでなく、クラスターや FCI メタデータも、SQL Server をホストする Azure VM に移行ができます。
この記事では、次のことについて説明します。
- Azure とソース環境を移行に向けて準備します。
- VM のレプリケートを開始します。
- レプリケーションを監視します。
- 完全な VM 移行を実行します。
- Azure 共有ディスクを使用して SQL フェールオーバー クラスターを再構成します。
このガイドでは、任意のサーバーまたは仮想マシンを物理サーバーとして扱う Azure Migrate のエージェントベースの移行アプローチを使用します。 物理マシンを移行するとき、Azure Migrate: Server Migration では、Azure Site Recovery サービスのエージェントベースのディザスター リカバリーと同じレプリケーション アーキテクチャが使用されており、一部のコンポーネントでは、同じコード ベースが共有されています。 一部のコンテンツは、Site Recovery のドキュメントにリンクされている場合があります。
前提条件
このチュートリアルを始める前に、次の準備が必要です。
- Azure サブスクリプション。 必要に応じて、無料アカウントを作成します。
- Azure PowerShell
Az
モジュールをインストールします。 - GitHub リポジトリから PowerShell サンプル スクリプトをダウンロードします。
Azure を準備する
Server Migration を使用した移行に向けて Azure を準備します。
タスク | 詳細 |
---|---|
Azure Migrate プロジェクトの作成 | Azure アカウントには、新規プロジェクトを作成するために共同作成者または所有者のアクセス許可が必要です。 |
Azure アカウントのアクセス許可の確認 | Azure アカウントでは、Key Vault を作成し、VM を作成し、Azure マネージド ディスクに書き込むために、Microsoft Entra ID (旧 Azure Active Directory) にアプリを登録するためのAzure サブスクリプション許可に対する共同作成者または所有者の許可、および Azure サブスクリプションに対するユーザー アクセス管理者の許可が必要になります。 |
Azure Virtual Network の設定 | Azure Virtual Network (VNet) を設定します。 Azure にレプリケートすると、Azure VM が作成され、移行の設定時に指定した Azure VNet に参加させられます。 |
適切なアクセス許可を持っているか確認するには、次の手順に従います。
- Azure portal でサブスクリプションを開き、 [アクセス制御 (IAM)] を選択します。
- [アクセスの確認] で関連するアカウントを探し、それを選択してアクセス許可を表示します。
- 共同作成者または所有者のアクセス許可を持っている必要があります。
- 無料の Azure アカウントを作成したばかりであれば、自分のサブスクリプションの所有者になっています。
- サブスクリプションの所有者でない場合は、所有者と協力してロールを割り当てます。
アクセス許可を割り当てる必要がある場合は、「Azure ユーザー アカウントを準備する」の手順に従います。
移行を準備する
サーバーの移行を準備するには、サーバー設定を確認し、レプリケーション アプライアンスをデプロイする準備を行う必要があります。
マシンの要件を確認する
マシンが Azure に移行するための要件を満たしていることを確認します。
- サーバーの要件を確認します。
- Azure にレプリケートするソース マシンが、Azure VM の要件に準拠していることを確認します。
- 一部の Windows ソースでは、いくつかの追加の変更が必要です。 これらの変更を行う前にソースを移行すると、VM が Azure で起動しなくなる可能性があります。 一部のオペレーティング システムでは、これらの変更が Azure Migrate によって自動的に行われます。
レプリケーションの準備
Azure Migrate: Server Migration では、レプリケーション アプライアンスを使用してマシンを Azure にレプリケートします。 レプリケーション アプライアンスは、次のコンポーネントを実行します。
- 構成サーバー: 構成サーバーは、オンプレミスと Azure の間の通信を調整し、データのレプリケーションを管理します。
- プロセス サーバー:プロセス サーバーはレプリケーション ゲートウェイとして機能します。 レプリケーション データを受信し、それをキャッシュ、圧縮、暗号化によって最適化して、Azure のキャッシュ ストレージ アカウントに送信します。
次のようにして、アプライアンスのデプロイの準備をします。
- レプリケーション アプライアンスをホストするように Windows Server 2016 マシンを作成します。 マシンの要件を確認します。
- レプリケーション アプライアンスでは MySQL が使用されます。 アプライアンスに MySQL をインストールするためのいくつかの方法を確認します。
- パブリック クラウドおよび政府機関向けクラウドにアクセスするレプリケーション アプライアンスに必要な Azure URL を確認します。
- レプリケーション アプライアンスのポート アクセス要件を確認します。
Note
レプリケーション アプライアンスは、レプリケートまたは移行しているソース マシン以外のマシンにインストールする必要があり、Azure Migrate Discovery and Assessment アプライアンスを以前にインストールしたことのあるマシンにはインストールできません。
レプリケーション アプライアンス インストーラーをダウンロードする
レプリケーション アプライアンス インストーラーをダウンロードするには、次の手順に従います。
Azure Migrate プロジェクトの >[サーバー] の [Azure Migrate: Server Migration] で、[検出] を選択します。
[マシンの検出]>[マシンは仮想化されていますか?] で、 [物理またはその他 (AWS、GCP、Xen など)] を選択します。
[ターゲット リージョン] で、マシンの移行先にする Azure リージョンを選択します。
[移行先のリージョンが <リージョン名> であることを確認してください] を選択します。
[リソースの作成] を選択します。 これで、Azure Site Recovery コンテナーがバックグラウンドで作成されます。
- Azure Migrate Server Migration を使用した移行を既に設定してある場合は、リソースが以前に設定されているため、ターゲット オプションを構成できません。
- このボタンの選択後は、このプロジェクトのターゲット リージョンを変更することはできません。
- 後続のすべての移行は、このリージョンに対して行われます。
[新しいレプリケーション アプライアンスをインストールしますか?] で、 [レプリケーション アプライアンスのインストール] を選択します。
[レプリケーション アプライアンス ソフトウェアをダウンロードしてインストールする] で、アプライアンスのインストーラーと登録キーをダウンロードします。 このキーは、アプライアンスを登録するために必要です。 キーは、ダウンロード後 5 日間有効です。
アプライアンスの設定ファイルとキー ファイルを、アプライアンス用に作成した Windows Server 2016 マシンにコピーします。
インストールが完了すると、アプライアンス構成ウィザードが自動的に起動します (アプライアンス マシンのデスクトップに作成された cspsconfigtool ショートカットを使用して、ウィザードを手動で起動することもできます)。 ウィザードの [アカウントの管理] タブを使用して、次の詳細を含むダミー アカウントを作成します。
- フレンドリ名としての "guest"
- ユーザー名としての "username"
- アカウントのパスワードとしての "password"。
このダミー アカウントは、レプリケーションを有効にするステージで使用します。
セットアップが完了しアプライアンスが再起動した後に、 [マシンの検出] の [構成サーバーの選択] で新しいアプライアンスを選択し、 [登録の終了処理] を選択します。 登録の終了処理では、レプリケーション アプライアンスを準備するための終了タスクがいくつか実行されます。
モビリティ サービスをインストールする
移行するサーバーにモビリティ サービス エージェントをインストールします。 エージェント インストーラーは、レプリケーション アプライアンス上で使用できます。 適切なインストーラーを見つけて、移行したい各マシンにエージェントをインストールします。
モビリティ サービスをインストールするには、次の手順に従います。
レプリケーション アプライアンスにサインインします。
%ProgramData%\ASR\home\svsystems\pushinstallsvc\repository
に移動します。マシンのオペレーティング システムとバージョンに合ったインストーラーを見つけます。 サポートされているオペレーティング システムを確認してください。
移行したいマシンにインストーラー ファイルをコピーします。
アプライアンスをデプロイしたときに生成されたパスフレーズを持っていることを確認します。
- マシン上の一時テキスト ファイルにファイルを格納します。
- レプリケーション アプライアンスのパスフレーズを取得できます。 現在のパスフレーズを表示するには、コマンド ラインで
C:\ProgramData\ASR\home\svsystems\bin\genpassphrase.exe -v
を実行します。 - パスフレーズを再生成しないでください。 そうすると接続が切断され、レプリケーション アプライアンスを再登録しなければならなりません。
- /Platform パラメーターで、VMware マシンと物理マシンの両方に VMware を指定します。
マシンに接続し、インストーラー ファイルの内容をローカル フォルダー (c:\temp など) に抽出します。 管理者のコマンド プロンプトでこれを実行します。
ren Microsoft-ASR_UA*Windows*release.exe MobilityServiceInstaller.exe MobilityServiceInstaller.exe /q /x:C:\Temp\Extracted cd C:\Temp\Extracted
モビリティ サービスのインストーラーを実行します。
UnifiedAgent.exe /Role "MS" /Platform "VmWare" /Silent
レプリケーション アプライアンスにエージェントを登録します。
cd C:\Program Files (x86)\Microsoft Azure Site Recovery\agent UnifiedAgentConfigurator.exe /CSEndPoint <replication appliance IP address> /PassphraseFilePath <Passphrase File Path>
インストール後、検出されたマシンが Azure Migrate: Server Migration に表示されるまでに、いくらか時間がかかることがあります。 VM が検出されると、 [検出済みサーバー] の数が増えます。
ソース マシンを準備する
ソース マシンを準備するには、クラスターからの情報が必要になります。
注意事項
最終的な切り替えが行われるまで、レプリケーション プロセス全体でディスクの所有権を維持します。 ディスクの所有権が変更されると、ボリュームが破損し、レプリケーションを再度実行する必要が生じる可能性があります。 各ディスクの優先所有者を設定して、レプリケーション プロセス中に所有権の移行が発生しないようにします。
ディスクの所有権の移行が発生しないようにするため、レプリケーション プロセス中に、修正プログラムの適用やシステムの再起動は行わないようにします。
ソース マシンを準備するには、次の操作を行います。
ディスクの所有権を特定する: いずれかのクラスター ノードにサインインし、フェールオーバー クラスター マネージャーを開きます。 ディスクの所有者ノードを特定し、各サーバーで移行する必要があるディスクを判別します。
クラスター情報を取得する: クラスター ノードで
Get-ClusterInfo.ps1
スクリプトを実行して、クラスター リソースに関する情報を取得します。 スクリプトによって、ロール名、リソース名、IP、およびプローブ ポートがCluster-Config.csv
ファイルに出力されます。 この記事の後の方で、Azure にリソースを作成して割り当てる際に、この CSV ファイルを使用します。./Get-ClusterInfo.ps1
ロード バランサーの作成
クラスターとクラスター ロールが要求に適切に応答するには、Azure ロード バランサーが必要です。 ロード バランサーを使用しない場合、VM は、ネットワークまたはクラスターに所属しているとは認識されないので、クラスター IP アドレスに到達できません。
Cluster-Config.csv
ファイルの列に入力します。列ヘッダー 説明 NewIP
CSV ファイル内の各リソースの Azure 仮想ネットワーク (またはサブネット) の IP アドレスを指定します。 ServicePort
CSV ファイル内の各リソースで使用するサービス ポートを指定します。 SQL クラスター リソースの場合は、CSV のプローブ ポートと同じ値をサービス ポートに使用します。 他のクラスター ロールの場合、使用される既定値は 1433 ですが、現在のセットアップで構成されているポート番号を引き続き使用できます。 次の必須パラメーターを使用して、
Create-ClusterLoadBalancer.ps1
スクリプトを実行し、ロード バランサーを作成します。パラメーター Type 説明 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 台をひとまとまりとして同時にレプリケートしてください。
Azure Migrate プロジェクト> サーバーの [Azure Migrate: サーバー移行] で [レプリケート] を選びます。
[レプリケート]>[ソース設定]>[マシンは仮想化されていますか?] で、[物理またはその他 (AWS、GCP、Xen など)] を選択します。
[オンプレミスのアプライアンス] で、自分が設定した Azure Migrate アプライアンスの名前を選択します。
[プロセス サーバー] で、レプリケーション アプライアンスの名前を選択します。
[ゲストの資格情報] で、「レプリケーション インストーラーのセットアップ」で作成したダミー アカウントを選択します。 その後、 [次へ: 仮想マシン] を選択します。
[仮想マシン] の [評価から移行設定をインポートしますか?] は、既定の設定である [いいえ。移行設定を手動で指定します] のままにしておきます。
移行したい各 VM を確認します。 次に、 [次のステップ: ターゲット設定] をクリックします。
[ターゲット設定] で、サブスクリプションと、移行先となるターゲット リージョンを選択し、移行後に Azure VM が配置されるリソース グループを指定します。
[仮想ネットワーク] で、移行後に Azure VM の参加先となる Azure VNet およびサブネットを選択します。
[可用性オプション] で、以下を選択します。
- 可用性ゾーン。移行されたマシンをリージョン内の特定の可用性ゾーンにピン留めします。 このオプションを使用して、複数ノードのアプリケーション層を形成するサーバーを可用性ゾーン間で分散させます。 このオプションを選択した場合は、[コンピューティング] タブで選択した各マシンに使用する可用性ゾーンを指定する必要があります。このオプションは、移行用に選択したターゲット リージョンで Availability Zones がサポートされている場合にのみ使用できます。
- 可用性セット。移行されたマシンを可用性セットに配置します。 このオプションを使用するには、選択されたターゲット リソース グループに 1 つ以上の可用性セットが必要です。
- [インフラストラクチャ冗長は必要ありません] オプション (移行されたマシンに対してこれらの可用性構成がいずれも不要な場合)。
[Disk encryption type](ディスク暗号化の種類) で、以下を選択します。
- プラットフォーム マネージド キーを使用した保存時の暗号化
- カスタマー マネージド キーを使用した保存時の暗号化
- プラットフォーム マネージド キーとカスタマー マネージド キーを使用した二重暗号化
Note
CMK を使用して VM をレプリケートするには、ターゲット リソース グループにディスク暗号化セットを作成する必要があります。 ディスク暗号化セット オブジェクトによって、SSE に使用する CMK を含む Key Vault にマネージド ディスクがマップされます。
[Azure ハイブリッド特典] で、
- Azure ハイブリッド特典を適用しない場合は、 [いいえ] を選択します。 [次へ] を選択します。
- アクティブなソフトウェア アシュアランスまたは Windows Server のサブスクリプションの対象となっている Windows Server マシンがあり、移行中のマシンにその特典を適用する場合は、 [はい] を選択します。 [次へ] を選択します。
[コンピューティング] で、VM の名前、サイズ、OS ディスクの種類、および可用性構成 (前の手順で選択した場合) を確認します。 VM は Azure の要件に準拠している必要があります。
- [VM サイズ]: 評価の推奨事項を使用している場合は、[VM サイズ] ドロップダウン リストに推奨サイズが表示されます。 それ以外の場合は、Azure Migrate によって、Azure サブスクリプション内の最も近いサイズが選択されます。 または、 [Azure VM サイズ] でサイズを手動で選択します。
- OS ディスク: VM の OS (ブート) ディスクを指定します。 OS ディスクは、オペレーティング システムのブートローダーとインストーラーがあるディスクです。
- 可用性ゾーン:使用する可用性ゾーンを指定します。
- 可用性セット:使用する可用性セットを指定します。
[ディスク] で、VM ディスクを Azure にレプリケートするかどうかを指定し、Azure でのディスクの種類 (Standard SSD か HDD、または Premium マネージド ディスク) を選択します。 [次へ] を選択します。
- 前に作成した一覧を使用して、各サーバーでレプリケートするディスクを選択します。 レプリケーションからその他のディスクを除外します。
[レプリケーションの確認と開始] で設定を確認し、 [レプリケート] を選択して、サーバーの初期レプリケーションを開始します。
Note
レプリケーションが開始される前であれば、 [管理]>[マシンのレプリケート] でレプリケーションの設定をいつでも更新できます。 レプリケーションの開始後は、設定を変更することができません。
追跡して監視する
レプリケーションは、次の順序で進められます。
- [レプリケート] を選択すると、レプリケーションの開始ジョブが開始されます。
- レプリケーションの開始ジョブが正常に終了すると、マシンで Azure への初期レプリケーションが開始されます。
- 初期レプリケーションが完了すると、差分レプリケーションが開始されます。 オンプレミスのディスクに対する増分変更は、Azure のレプリカ ディスクに定期的にレプリケートされます。
- 初期レプリケーションが完了したら、各 VM の [コンピューティング] 項目と [ネットワーク] 項目を構成します。 通常、クラスターには複数の NIC がありますが、移行に必要な NIC は 1 つのみです (他の NIC は作成しないように設定します)。
ジョブの状態は、ポータルの通知で追跡できます。
レプリケーションの状態を監視するには、Azure Migrate: Server Migration 内で [レプリケート中のサーバー] を選択します。
VM の移行
マシンがレプリケートされると、移行の準備が整います。 サーバーを移行するには、次の手順に従います。
Azure Migrate プロジェクト> サーバー> [Azure Migrate: サーバー移行] で、 [サーバーのレプリケート] を選択します。
移行するサーバーが移行元サーバーと同期されるようにするには、クラスター ディスクでオンラインの状態を保ちながら、SQL Server リソース ( [フェールオーバー クラスター マネージャー]>[ロール]>[その他のリソース] ) を停止します。
次の手順に進む前に、[コンピューターのレプリケート] で > サーバー名 >[概要] を選択して、最新の同期タイムスタンプが、移行するサーバーで SQL Server サービスを停止した後のものであることを確実にします。 わずか数分で完了します。
[マシンのレプリケート] で VM > を右クリックし、[移行] を選択します。
[移行]>[仮想マシンをシャットダウンし、データ損失のない計画された移行を実行しますか] で、 [いいえ]>[OK] の順に選択します。
Note
物理サーバーを移行する場合、ソース マシンのシャットダウンは自動的にはサポートされません。 移行期間の一環としてアプリケーションを停止させ (アプリケーションが接続を受け付けないようにして)、移行を開始することをお勧めします (移行の完了前に残りの変更を同期できるように、サーバーは動作させ続けておく必要があります)。
VM に対して移行ジョブが開始されます。 Azure 通知でジョブを追跡します。
ジョブが完了したら、 [仮想マシン] ページで VM を表示して管理できます。
クラスターを再構成する
VM を移行し終えたら、クラスターを再構成します。 次の手順に従います。
Azure で移行されたサーバーをシャットダウンします。
移行したマシンをロード バランサーのバックエンド プールに追加します。 [ロード バランサー]>[バックエンド プール] の順に移動します。
バックエンド プールを選択し、移行したマシンを追加します。
Create-SharedDisks.ps1
スクリプトを実行して、サーバーの移行するディスクを共有ディスクとして再構成します。 スクリプトは対話型であり、マシンの一覧が表示された後に、抽出可能なディスクが表示されます (データ ディスクのみ)。 共有ディスクに変更するドライブが含まれるマシンを選択するようにというメッセージが表示されます。 選択すると、マシンごとに 1 回、特定のディスクを選択するようにというメッセージが表示されます。パラメーター Type 説明 ResourceGroupName
必須 移行するサーバーが含まれるリソース グループの名前を指定します。 NumberofNodes
省略可能 フェールオーバー クラスター インスタンス内のノード数を指定します。 このパラメーターは、作成する共有ディスクの適切な SKU を識別するために使用されます。 既定では、このスクリプトは、クラスター内のノード数が 2 であると想定しています。 DiskNamePrefix
省略可能 共有ディスクの名前に追加するプレフィックスを指定します。 ./Create-SharedDisks.ps1 -ResourceGroupName $resourcegroupname -NumberofNodes $nodesincluster -DiskNamePrefix $disknameprefix
Attach-SharedDisks.ps1
スクリプトを実行して、移行するサーバーに共有ディスクを接続します。パラメーター Type 説明 ResourceGroupName
必須 移行するサーバーが含まれるリソース グループの名前を指定します。 StartingLunNumber
省略可能 共有ディスクの接続先として使用できる開始 LUN 番号を指定します。 既定では、スクリプトは 0 の LUN の共有ディスクから接続しようとします。 ./Attach-ShareDisks.ps1 -ResourceGroupName $resourcegroupname
移行したサーバーを Azure で起動し、任意のノードにサインインします。
Cluster-Config.csv
ファイルをコピーし、CSV をパラメーターとして渡してUpdate-ClusterConfig.ps1
スクリプトを実行します。 これにより、クラスターが Azure で動作するための新しい構成でクラスター リソースが更新されます。./Update-ClusterConfig.ps1 -ConfigFilePath $filepath
SQL Server のフェールオーバー クラスター インスタンスの準備が完了しました。
移行を完了する
- 移行が完了したら、VM > を右クリックして、[移行の停止] を選択します。 次の処理が実行されます。
- オンプレミス マシンのレプリケーションを停止します。
- Azure Migrate: Server Migration の [サーバーをレプリケートしています] のカウントからマシンを削除します。Server Migration に関するエラーのトラブルシューティングに役立つ情報を提供しています。
- マシンのレプリケーション状態情報をクリーンアップします。
- Azure VM for Windows エージェントを、移行するマシンにインストールします。
- データベース接続文字列、および Web サーバー構成の更新など、移行後のアプリの微調整を実行します。
- Azure で現在実行されている移行後のアプリケーション上で、最終的なアプリケーションと移行の受け入れのテストを実行します。
- 移行された Azure VM インスタンスにトラフィックを切り替えます。
- ローカル VM インベントリからオンプレミスの VM を削除します。
- ローカル バックアップからオンプレミスの VM を削除します。
- Azure VM の新しい場所と IP アドレスを示すように内部ドキュメントを更新します。
移行後のベスト プラクティス
- SQL Server の場合:
- SQL Server IaaS Agent 拡張機能 をインストールして、管理タスクを自動化します。 SQL IaaS Agent 拡張機能では、SQL Server のフェールオーバー クラスター化されたインスタンスに対する制限付き機能のみがサポートされます。
- Azure VM 上での SQL Server のパフォーマンスを最適化します。
- Azure での SQL Server の価格を把握します。
- セキュリティの強化:
- Microsoft Defender for Cloud のジャスト イン タイム管理を利用し、インバウンド トラフィック アクセスをロックダウンし、制限します。
- ネットワーク セキュリティ グループを使用して、ネットワーク トラフィックを管理エンドポイントに制限します。
- Azure Disk Encryption をデプロイして、ディスクをセキュリティ保護し、盗難や不正アクセスからデータを安全に保護します。
- IaaS リソースのセキュリティ保護に関する詳細を読み、Microsoft Defender for Cloud を確認してください。
- 監視と管理:
- Azure Cost Management をデプロイして、リソースの使用率と消費量を監視します。