記憶域スペース ダイレクトで FCI を作成する (Azure VM 上の SQL Server)

適用対象: Azure VM 上の SQL Server

ヒント

同じ Azure 仮想ネットワーク内の複数のサブネットに SQL Server VM を作成することで、フェールオーバー クラスター インスタンスに対して Azure Load Balancer または分散ネットワーク名 (DNN) が不要になります。

この記事では、記憶域スペース ダイレクトを使用して、Azure Virtual Machines (VM) 上の SQL Server でフェールオーバー クラスター インスタンス (FCI) を作成する方法について説明します。 記憶域スペース ダイレクトは、Windows クラスター内のノード (Azure VM) 間でストレージ (データ ディスク) を同期するソフトウェア ベースの仮想記憶域ネットワーク (VSAN) として機能します。

詳細については、Azure VM 上の SQL Server を使用した FCI およびクラスターのベスト プラクティスの概要に関する記事をご覧ください。

Note

これで Azure Migrate を使用して、フェールオーバー クラスター インスタンス ソリューションを Azure VM 上の SQL Server にリフト アンド シフトできるようになりました。 詳細については、フェールオーバー クラスター インスタンスの移行に関するページを参照してください。

概要

記憶域スペース ダイレクト (S2D) では、コンバージド型とハイパーコンバージド型の 2 種類のアーキテクチャがサポートされています。 ハイパーコンバージド インフラストラクチャでは、SQL Server FCI ノードごとにストレージが存在するように、クラスター化されたアプリケーションをホストしている同じサーバーにストレージが配置されます。

次の図では、Azure VM 上の SQL Server でハイパーコンバージド記憶域スペース ダイレクトを使用する完全なソリューションを示します。

Diagram of the complete solution, using hyperconverged Storage Spaces Direct

上の図では、次のリソースが同じリソース グループ内に示されています。

  • Windows Server フェールオーバー クラスター内の 2 つの仮想マシン。 仮想マシンがフェールオーバー クラスター内にある場合、仮想マシンはクラスター ノードまたはノードとも呼ばれます。
  • 各仮想マシンには、2 つ以上のデータ ディスクがあります。
  • 記憶域スペース ダイレクトは、データ ディスク上のデータを同期し、同期されたストレージを記憶域プールとして提供します。
  • 記憶域プールは、クラスターの共有ボリューム (CSV) をフェールオーバー クラスターに提供します。
  • SQL Server FCI のクラスター ロールは、CSV をデータ ドライブ用に使用します。
  • サブネットが 1 つの場合に SQL Server FCI の IP アドレスを保持するための Azure ロード バランサー。
  • Azure 可用性セットにより、すべてのリソースが保持されます。

Note

このソリューション全体を、Azure でテンプレートから作成できます。 テンプレートの例は、GitHub のAzure クイック スタート テンプレートのページから使用できます。 この例は、特定のワークロード向けに設計およびテストされたものではありません。 このテンプレートを実行すれば、ドメインに接続された記憶域スペース ダイレクト ストレージで SQL Server FCI を作成できます。 このテンプレートは、評価のうえ、目的に応じた変更が可能です。

前提条件

この記事に記載されている手順を完了するには、次のものが必要です。

Windows フェールオーバー クラスターの作成

Windows Server フェールオーバー クラスターを作成する手順は、SQL Server VM を 1 つのサブネットにデプロイしたか、それとも複数のサブネットにデプロイしたかによって異なります。 クラスターを作成するには、複数のサブネットの場合または 1 つのサブネットの場合のチュートリアルの手順に従います。 これらのチュートリアルは可用性グループを作成するためのものですが、クラスターを作成する手順は同じです。

クォーラムを構成する

ディスク監視は最も回復力のあるクォーラム オプションですが、記憶域スペース ダイレクトで構成されたフェールオーバー クラスター インスタンスではサポートされていません。 そのため、クラウド監視は、Azure VM 上の SQL Server 向けのこの種類のクラスター構成に推奨されるクォーラム ソリューションです。

クラスターに多数の投票がある場合は、ビジネス ニーズに最適なクォーラム ソリューションを構成します。 詳細については、SQL Server VM でのクォーラムに関する記事をご覧ください。

クラスターを検証する

フェールオーバー クラスター マネージャーの UI で、または PowerShell を使用してクラスターを検証します。

UI を使用してクラスターを検証するには、いずれかの仮想マシンで次の手順を実行します。

  1. [サーバー マネージャー] で、 [ツール] を選択し、 [フェールオーバー クラスター マネージャー] を選択します。

  2. [フェールオーバー クラスター マネージャー] で、 [操作] を選択し、 [構成の検証] を選択します。

  3. [次へ] を選択します。

  4. [サーバーまたはクラスターの選択] で、両方の仮想マシンの名前を入力します。

  5. [テスト オプション] で、 [選択するテストのみを実行する] を選択します。

  6. [次へ] を選択します。

  7. 次に示すように、 [テストの選択] で、 [ストレージ] を除くすべてのテストを選択します。

    Select cluster validation tests

  8. [次へ] を選択します。

  9. [確認] で、 [次へ] を選択します。

    構成の検証ウィザードにより、検証テストが実行されます。

PowerShell を使用してクラスターを検証するには、いずれかの仮想マシンの管理者 PowerShell セッションから次のスクリプトを実行します。

Test-Cluster –Node ("<node1>","<node2>") –Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration"

ストレージを追加する

記憶域スペース ダイレクト用のディスクは空にする必要があります。 パーティションまたはその他のデータを含めることはできません。 ディスクをクリーニングするには、「記憶域スペース ダイレクトの展開」の手順に従います。

  1. 記憶域スペース ダイレクトを有効にします

    次の PowerShell スクリプトを実行すると、記憶域スペース ダイレクトが有効化されます。

    Enable-ClusterS2D
    

    [フェールオーバー クラスター マネージャー] に、記憶域プールが表示されるようになります。

  2. ボリュームを作成します

    記憶域スペース ダイレクトは、記憶域プールをユーザーが有効化した場合に、記憶域プールを自動的に作成します。 これでボリュームを作成する準備が整いました。 PowerShell コマンドレット New-Volume は、ボリュームの作成プロセスを自動化します。 このプロセスには、書式設定、クラスターへのボリュームの追加、および CSV の作成が含まれます。 次の例では、800 ギガバイト (GB) の CSV が作成されます。

    New-Volume -StoragePoolFriendlyName S2D* -FriendlyName VDisk01 -FileSystem CSVFS_REFS -Size 800GB
    

    前記のコマンドを実行すると、800 GB のボリュームがクラスター リソースとしてマウントされます。 ボリュームは C:\ClusterStorage\Volume1\ にあります。

    このスクリーンショットでは、記憶域スペース ダイレクトが有効な CSV が示されています。

    Screenshot of a Cluster Shared Volume with Storage Spaces Direct

クラスターのフェールオーバーをテストする

クラスターのフェールオーバーをテストします。 [フェールオーバー クラスター マネージャー] で、クラスターを右クリックし、 [その他の操作]>[コア クラスター リソースの移動]>[ノードの選択] の順に選択した後、クラスターの他のノードを選択します。 コア クラスター リソースをクラスターのすべてのノードに移動してから、プライマリ ノードに戻します。 クラスターを各ノードに正常に移動できる場合は、SQL Server をインストールする準備ができています。

Test cluster failover by moving the core resource to the other nodes

SQL Server FCI を作成する

フェールオーバー クラスターと、ストレージを含むすべてのクラスター コンポーネントを構成したら、SQL Server FCI を作成できます。

  1. RDP を使用して最初の仮想マシンに接続します。

  2. フェールオーバー クラスター マネージャーで、すべてのコア クラスター リソースが最初の仮想マシン上にあることを確認します。 必要に応じて、すべてのリソースをこの仮想マシンに移動します。

  3. オペレーティング システムのバージョンが Windows Server 2019 で、既定の分散ネットワーク名 (DNN) を使用して Windows クラスターが作成されている場合、SQL Server 2017 以下に対する FCI インストールはエラー The given key was not present in the dictionary で失敗します。

    インストール中に、SQL Server では既存の仮想ネットワーク名 (VNN) に対するクエリを設定しますが、Windows クラスター DNN は認識されません。 この問題は、SQL Server 2019 の設定で修正されています。 SQL Server 2017 以下の場合は、次の手順に従ってインストール エラーを回避します。

    • フェールオーバー クラスター マネージャーで、クラスターに接続し、[ロール] を右クリックし、[空のロールの作成](Create Empty Role) を選択します。
    • 新しく作成した空のロールを右クリックし、[リソースの追加] を選択し、[クライアント アクセス ポイント] を選択します。
    • 任意の名前を入力し、ウィザードを完了してクライアント アクセス ポイントを作成します。
    • SQL Server FCI のインストールが完了したら、一時的なクライアント アクセス ポイントを含むロールを削除してかまいません。
  4. インストール メディアを探します。 仮想マシンでいずれかの Azure Marketplace イメージが使用されている場合、メディアは C:\SQLServer_<version number>_Full にあります。 [Setup](セットアップ) を選択します。

  5. [SQL Server インストール センター] で、 [インストール] を選択します。

  6. [SQL Server フェールオーバー クラスターの新規インストール] を選択します。 ウィザードの指示に従って、SQL Server FCI をインストールします。

  7. [クラスター ネットワークの構成] ページで指定する IP は、SQL Server VM を 1 つのサブネットにデプロイしたのか、それとも複数のサブネットにデプロイしたのかによって異なります。

    1. 単一サブネット環境の場合、Azure Load Balancer に追加する IP アドレスを指定します。
    2. 複数サブネット環境の場合、フェールオーバー クラスター インスタンスのネットワーク名の IP アドレスとして以前に指定した、最初の SQL Server VM のサブネット内のセカンダリ IP アドレスを指定します。

    provide the secondary IP address in the subnet of the first SQL Server VM that you previously designated as the IP address of the failover cluster instance network name

  8. [データベース エンジンの構成] で、FCI のデータ ディレクトリは、クラスター化されたストレージにある必要があります。 記憶域スペース ダイレクトでは、これは共有ディスクではなく、各サーバー上のボリュームのマウント ポイントです。 記憶域スペース ダイレクトは、両方のノード間でボリュームを同期します。 ボリュームは、CSV としてクラスターに表示されます。 データ ディレクトリとして CSV のマウント ポイントを使用します。

    Data directories

  9. ウィザードの手順を完了すると、セットアップにより、SQL Server FCI が最初のノードにインストールされます。

  10. 最初のノードで FCI のインストールが成功したら、RDP を使用して 2 番目のノードに接続します。

  11. [SQL Server インストール センター] を開きます。 [インストール] を選択します。

  12. [SQL Server フェールオーバー クラスターにノードを追加] を選択します。 ウィザードの指示に従って SQL Server をインストールし、このノードを FCI に追加します。

  13. 複数サブネットの場合、 [クラスター ネットワークの構成] で、フェールオーバー クラスター インスタンスのネットワーク名の IP アドレスとして以前に指定した、2 番目の SQL Server VM のサブネット内のセカンダリ IP アドレスを入力します。

    enter the secondary IP address in the subnet of the second SQL Server VM subnet that you previously designated as the IP address of the failover cluster instance network name

    [クラスター ネットワークの構成][次へ] を選択した後、セットアップでは、サンプル画像のように SQL Server のセットアップによって複数のサブネットが検出されたことを示すダイアログ ボックスが表示されます。 [はい] を選択して確定します。

    Multi Subnet Confirmation

  14. ウィザードの手順を完了すると、セットアップによって 2 番目の SQL Server FCI ノードが追加されます。

  15. SQL Server フェールオーバー クラスター インスタンスに追加する他のすべてのノードで、以上の手順を繰り返します。

Note

Azure Marketplace ギャラリー イメージには、SQL Server Management Studio がインストールされています。 マーケットプレース イメージを使用しなかった場合は、SQL Server Management Studio (SSMS) をダウンロードしてください。

SQL IaaS 拡張機能に登録する

ポータルから SQL Server VM を管理するには、それを軽量管理モードで SQL IaaS Agent 拡張機能に登録します。このモードは、現時点では、FCI と Azure VM 上の SQL Server でサポートされている唯一のモードです。

PowerShell を使用して軽量モードで SQL Server VM を登録します (-LicenseType は PAYG または AHUB にできます)。

# Get the existing compute VM
$vm = Get-AzVM -Name <vm_name> -ResourceGroupName <resource_group_name>
         
# Register SQL VM with 'Lightweight' SQL IaaS agent
New-AzSqlVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName -Location $vm.Location `
   -LicenseType PAYG -SqlManagementType LightWeight  

接続の構成

複数のサブネットに SQL Server VM をデプロイした場合は、この手順をスキップしてください。 1 つのサブネットに SQL Server VM をデプロイした場合は、トラフィックを FCI にルーティングするための追加コンポーネントを構成する必要があります。 フェールオーバー クラスター インスタンスに対して、仮想ネットワーク名 (VNN) と Azure Load Balancer、または分散ネットワーク名を構成できます。 この 2 つの違いを確認してから、フェールオーバー クラスター インスタンスに対して分散ネットワーク名または仮想ネットワーク名と Azure Load Balancer をデプロイします。

制限事項

  • Azure Virtual Machines では、CSV および Standard Load Balancer 上のストレージを備えた Windows Server 2019 で、 Microsoft 分散トランザクション コーディネーター (MSDTC) がサポートされています。 Windows Server 2016 およびそれ以前では MSDTC はサポートされていません。
  • NTFS でフォーマットされたディスクとして接続されているディスクは、ストレージがクラスターに追加されるときに、ディスク適格性オプションがオフにされている場合にのみ、記憶域スペース ダイレクトで使用できます。
  • 軽量管理モードでの SQL IaaS Agent 拡張機能への登録のみがサポートされています。
  • 共有ストレージとして 記憶域スペース ダイレクトを使用するフェールオーバー クラスター インスタンスでは、クラスターのクォーラムに対するディスク監視の使用はサポートされていません。 代わりにクラウド監視を使用してください。

次のステップ

記憶域スペース ダイレクトがお客様に適した FCI ストレージ ソリューションでない場合は、代わりに Azure 共有ディスクまたは Premium ファイル共有を使用して FCI を作成することを検討してください。

詳細については、以下をご覧ください。