Premium ファイル共有を使用して FCI を作成する (Azure VM 上の SQL Server)

適用対象:Azure VM 上の SQL Server

ヒント

可用性グループをデプロイする方法は多数あります。 デプロイを簡略化し、Always On 可用性グループに対して Azure Load Balancer または分散ネットワーク名 (DNN) を不要にするには、同じ Azure 仮想ネットワーク内の複数のサブネットに SQL Server 仮想マシン (VM) を作成します。 可用性グループを 1 つのサブネットに既に作成している場合は、マルチサブネット環境に移行できます。

この記事では、Premium ファイル共有を使用して Azure Virtual Machines (VM) 上の SQL Server でフェールオーバー クラスター インスタンス (FCI) を作成する方法について説明します。

Premium ファイル共有は、SSD によってバックアップおよび提供される、継続的に待機時間の短いファイル共有であり、Windows Server (2012 以降) 上の SQL Server (2012 以降) のフェールオーバー クラスター インスタンスとの使用が完全にサポートされています。 Premium ファイル共有を使用すると、柔軟性が向上し、ダウンタイムなしでファイル共有のサイズを変更したり拡張したりすることができます。

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

Note

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

前提条件

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

  • Azure サブスクリプション。
  • Azure の仮想マシンと Active Directory の両方にオブジェクトを作成するためのアクセス許可を持つアカウント。
  • 1 つの可用性セット内または複数の可用性ゾーン内の 2 つ以上のFCI 用 Azure VM
  • データ ファイル用のデータベースのストレージ クォータに基づいて、クラスター化されたドライブとして使用される Premium ファイル共有
  • 最新バージョンの PowerShell

Premium ファイル共有をマウントする

Premium ファイル共有をマウントするには、次の手順に従います。

  1. Azure portal にサインインし、お使いのストレージ アカウントに移動します。

  2. [データ ストレージ][ファイル共有] に移動し、SQL ストレージに使用する Premium ファイル共有を選択します。

  3. [接続] を選択して、ファイル共有の接続文字列を表示します。

  4. ドロップダウン リストで、使用するドライブ文字を選択し、認証方法としてストレージ アカウント キーを選択して、メモ帳などのテキスト エディターにコード ブロックをコピーします。

    Screenshot showing how to copy the PowerShell command from the file share connect portal.

  5. リモート デスクトップ プロトコル (RDP) を使用して、SQL Server FCI がサービス アカウントに使用するアカウントで SQL Server VM に接続します。

  6. 管理 PowerShell コマンド コンソールを開きます。

  7. 前にファイル共有ポータルからテキスト エディターにコピーしたコマンドを実行します。

  8. エクスプローラーまたは [ファイル名を指定して実行] ダイアログ ボックス (キーボード上の Windows + R キー) を使用して、共有に移動します。 ネットワークパス \\storageaccountname.file.core.windows.net\filesharename を使用します。 たとえば、\\sqlvmstorageaccount.file.core.windows.net\sqlpremiumfileshare のように指定します。

  9. 新しく接続されたファイル共有に、SQL データ ファイルを配置するフォルダーを少なくとも 1 つ作成します。

  10. クラスターに参加する各 SQL Server VM で、この手順を繰り返します。

重要

バックアップ ファイル用に別のファイル共有を使用して、この共有の 1 秒間の入出力操作数 (IOPS) と領域の容量をデータとログ ファイル用に確保することを検討してください。 バックアップ ファイルには、Premium または Standard のいずれのファイル共有も使用できます。

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

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

クォーラムを構成する

クラウド監視は、Azure VM 上の SQL Server 向けのこの種類のクラスター構成に推奨されるクォーラム ソリューションです。

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

クラスターを検証する

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

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

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

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

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

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

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

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

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

    Screenshot showing how to select cluster validation tests.

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

  9. [確認] で、 [次へ] を選択します。 構成の検証ウィザードにより、検証テストが実行されます。

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

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

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

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

Screenshot showing how to 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 にあります。

  5. [Setup](セットアップ) を選択します。

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

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

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

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

    Screenshot of the secondary IP address in the subnet of the first VM.

  9. [データベース エンジンの構成] で、データ ディレクトリは Premium ファイル共有に存在している必要があります。 共有の完全パスを \\storageaccountname.file.core.windows.net\filesharename\foldername の形式で入力します。 ファイル サーバーをデータ ディレクトリとして指定したことを通知する警告が表示されます。 この警告は想定されています。 ファイル共有を永続化したときに RDP 経由で VM にアクセスするために使用したユーザー アカウントが、潜在的なエラーを回避するために SQL Server サービスで使用されているのと確実に同じアカウントであるようにします。

    Screenshot showing to use file share as SQL data directories.

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

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

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

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

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

    Screenshot entering the secondary IP address in the subnet of the second SQL Server VM subnet.

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

    Screenshot showing multi subnet confirmation.

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

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

Note

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

SQL IaaS Agent 拡張機能に登録する

SQL Server VM をポータルから管理するには、SQL IaaS Agent 拡張機能にそれを登録します。 SQL Server (FCI) のフェールオーバー クラスター インスタンスを持つ SQL VM では、使用できる機能に制限があることに注意してください。

SQL Server VM が SQL IaaS Agent 拡張機能に既に登録されていると同時にエージェントを必要とする機能を有効にしている場合は、その拡張機能から SQL Server VM の登録を解除し、FCI のインストール後に再登録する必要があります。

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 SQL IaaS Agent extension
New-AzSqlVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName -Location $vm.Location `
   -LicenseType <license_type>

接続の構成

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

制限事項

  • Microsoft 分散トランザクション コーディネーター (MSDTC) は、Windows Server 2016 以前ではサポートされていません。
  • FILESTREAM は、Premium ファイル共有のフェールオーバー クラスターではサポートされていません。 Filestream を使用するには、記憶域スペース ダイレクトまたは Azure 共有ディスクを代わりに使用して、クラスターをデプロイします。
  • 拡張機能に登録された SQL Server FCI は、自動バックアップ、修正プログラムの適用、高度なポータル管理など、エージェントを必要とする機能をサポートしません。 利点の表を参照してください。
  • スパース ファイルの制限のため Azure Files では、現在、データベース スナップショットはサポートされていません。
  • データベース スナップショットはサポートされていないため、ユーザー データベースの CHECKDB は CHECKDB WITH TABLOCK に戻ります。 TABLOCK では実行されるチェックが制限されます。DBCC CHECKCATALOG はデータベースに対して実行されず、Service Broker データは検証されません。
  • mastermsdb データベースの DBCC CHECKDB はサポートされていません。
  • インメモリ OLTP 機能を使用するデータベースは、Premium ファイル共有を使用してデプロイされたフェールオーバー クラスター インスタンスではサポートされていません。 ビジネスでインメモリ OLTP が必要な場合は、代わりに Azure 共有ディスクまたは記憶域スペース ダイレクトを使用して FCI をデプロイすることを検討してください。

制限付き拡張機能のサポート

現時点では、SQL IaaS Agent 拡張機能に登録されている Azure 仮想マシン上の SQL Server フェールオーバー クラスター インスタンスは、限られた数の機能のみをサポートしています。 利点の表を参照してください。

SQL Server VM が SQL IaaS Agent 拡張機能に既に登録されていて、エージェントを必要とする機能を有効にしている場合は、対応する VM の ‭‬SQL 仮想マシン‭‬ リソースを削除することによって拡張機能から‭‬登録を解除‭‬した後、SQL IaaS Agent 拡張機能にもう一度登録する必要があります。 Azure portal を使用して SQL 仮想マシン リソースを削除するときは、仮想マシンを削除してしまうことのないよう、正しい仮想マシンの横のチェック ボックスをオフにします。