WSFCとAzure Shared DisksによるHAクラスター構成をやってみた

    「Azure Shared Disks」の概要や、WSFCと組み合わせてHAクラスター構築をした手順をご紹介します。

    1.Azure Shared Disksとは

    Azure Shared Disksとは、マネージド ディスクを複数の仮想マシン (VM) に同時に接続できるようにする Azure マネージド ディスクの新機能です。

    いままでのクラウド環境では、接続されたDiskはその仮想サーバーでしか使用することが出来ませんでしたが、Azure Shared Disksでは複数の仮想サーバーで共有することが可能になります。これにより、クラウド上でのHAクラスターを使用した共有DISKの利用が簡単に実装できるようになります。
    (2020 年 7 月 17 日: Azure Shared Disks の一般提供が開始されました)

    Azure Shared Disksを使用する上での制約

    Ultra ディスクと Premium SSD のみで共有ディスクを有効にできる

    Ultra ディスクは仮想マシン作成時の可用性オプションを『可用性ゾーン』に指定した場合に利用することが可能になります。

    ※ 可用性ゾーンとは、Azureリージョン内にある物理的に離れたたデータセンターのことです。物理的に離れた可用性ゾーンは、1つのデータセンターがシステム障害でダウンしても他のゾーンで機能するようになっていますので、障害に強いシステムを構築することが可能になります。

    Premium SSDで共有ディスクとして使用可能なサイズはP15(256 GiB)以上のサイズのDISKになります。

       ※ 最大共有数が2以上のDISKが共有ディスクとして使用できます。

     

    ディスクを同時に共有できるノードの最大数

    ディスクには、共有できるノードの最大数を表す maxShares 値が定義されています。それぞれの値は以下となっています。

     

    異なる可用性ゾーンで共有することが出来ない

    可用性オプションで『可用性ゾーン』を指定した場合、DISKを共有する仮想マシンは同じ可用性ゾーンを指定している必要があります。

    ※ 2を選択した場合、他方も2を選択する必要があります。 

    Azure Backup および Azure Site Recovery は使用できない

     

    フルマネージドのファイル共有は使用できません

    Azure Shared Disksでは、SMB または NFS を使用してアクセスできるフル マネージドのファイルシステムをネイティブに提供していません。 Windows Server Failover Clustering(以下、WSFC) や Pacemaker のような、クラスター ノードの通信と書き込みロックを処理するクラスター マネージャーを使用する必要があります。

    制限事項につきましては、以下サイトを参照ください。
    https://docs.microsoft.com/ja-jp/azure/virtual-machines/disks-shared

    2.料金と利用メリット

    料金

    Azure Shared Disksは特別な料金は発生しません。Managed Disksの価格で利用可能です。
    (共有可能なP15以上のDISKをローカルストレージで使用する場合と、共有DISKとして利用する場合の料金は同額です)

    利用料金はリージョンによって異なっていますが、日本リージョンでは月約5,000円から開始できます。
    (記事記載時では、P15のDISKは西日本では4,451.76円、★東日本では4,896.72円となっています)

    <東日本リージョンの価格例>

    ※最新の価格は以下サイトから確認できます。
    https://azure.microsoft.com/ja-jp/pricing/details/managed-disks/

     

    利用メリット

    Azure Shared Disksを利用するメリットとしては、利用方法がとても簡単であることかと思います。データDISK作成時に表示される『共有DISKを有効にする』のチェックボックスを有効にするだけです。

     

     

    既存のオンプレミスのクラスター環境をAzueに移行するのに二の足を踏んでいた管理者には、もう一度検討するきっかけになるのではないかと思います。

    また、HAクラスターの共有DISKとして利用する以外にも、ファイルストレージ的な利用も可能です。

    3.Azure Shared Disksを使った例

    これまでは、フェールオーバークラスターの仮想マシンを構成する場合、『SIOS DataKeeper for Windows Cluster Edition(以下、DKCE)』などの製品により、各仮想マシンのローカルストレージをレプリケーションし、同じデータを保持することで実現させていましたが、Azure Shared Disks を用いることで1つのDISKを複数の仮想マシンで共有することが可能になりました。

    ※ DKCEはMicrosoft Azure上で正式に動作認定されている製品です。

    Azure Shared Disks(ASD)を使用したHAクラスター構成を、WSFC を使用して、実際にやってみました。

     

    4.WSFC + ASDを使った冗長構成やってみた

    Azureで『WSFC + ASD』を使用してSQL フェールオーバー クラスター環境を構築してみました。

    構成は以下となります。

    《構成内容》
    ・ADサーバ(Windows Server 2019 )
    ※ Windows Server 2016以降では、ワークグループ構成のクラスターを作成できるようになっていますが、今回は同一のActive Directoryドメインに参加して構成します。
    ・SQL Server①(Windows Server 2019 )
        SQL Server②(Windows Server 2019 )
        WSFCとSQL Server 2019 フェールオーバー クラスターをインストール。
    ・共有ストレージ (Azure Shared Disks)
        2台のSQL Serverの共有ストレージ。

    ① Windows Server 2019 × 3台作成

         (ADサーバ、SQL Server①、SQL Server②)
    SQL Serverに設定する2台の仮想サーバー作成時に、データ ディスクは共有可能なサイズのDISKを指定します。

    共有DISKは『最大共有数』が2以上の記載があるDISKが対象です。
    SQL Server②は、『既存のディスクの接続』からSQL Server①で作成したデータDISKを接続させます。

     

    ② Windows Server 2019 日本語化

    Azureから作成するWindows Server イメージは英語版をベースにされているので、日本語で操作したい場合は、日本言語を別途追加する必要があります。

     

    ③ ADサーバー構築

    ①で作成したWindows Server 2019 サーバー1台に対して『役割と機能の追加』から『Active Directoryドメイン サービス』を追加し、ドメインコントローラーに昇格させます。

     

    ④ ドメイン参加

    ①で作成したWindows Server 2019 の残り2台(SQL Server①、SQL Server②)を③で作成したADドメインに参加させます。

     

    ⑤ データDISKの初期化(共有DISK)

    SQL Server①のサーバーマネージャーの『ファイルサービスと記憶域サービス』から共有DISKに新規ボリュームを作成します。

    この後、ウィザードに従い進めていくとDISKを共有している仮想サーバーに共有DISKが追加されていることが確認できます。

    ⑥ WSFC構築

    各SQL Serverに『役割と機能の追加』から『フェールオーバークラスタリング』を追加します。
    続いて、構成の検証を行い、『検証されたノードを使用してクラスターを今すぐ作成する』にチェックを付けます。

    クラスター作成ウィザードが開始されるので、指示に従い進めます。
    クラスター構成が完了後、共有DISKをクラスターのDISKに追加します。

     

    ⑦ SQLサーバー フェールオーバークラスターのインストール

    SQL Server①でSQLのインストーラーを起動し、『SQL Server フェールオーバークラスターの新規インストール』を進めます。

    SQL Server②では同様にSQLのインストーラーを起動し、こちらは『SQL Server フェールオーバークラスターにノードを追加』を進めます。

     

    ⑧ 確認

    簡易的ではありますが、WSFC+ASDを使用したSQL Server フェールオーバークラスターの構成が出来上がります。稼働系のサーバーに、共有DISKがマウントされているのがわかります。

    フェールオーバーを実際行ってみましたが、Azure 上で問題なく共有DISKが稼働系から待機系に引継ぎ、使用できることが確認できました。

    《フェールオーバーによる、稼働系と待機系の切り替え》

     

    稼働系の共有DISKが待機系に移動し、新たな稼働系の共有DISKになります。

    5.DKCEによるレプリケーション構成との比較

    Microsoft Azure上正式に動作認定されているHAクラスターソリューションである、DKCEによる「SANLess Clusters」構成との違いについて確認したいと思います。

    《Azure Shared DisksとDKCEとの比較》
    以下2台で構成されたフェールオーバー クラスター環境での比較になります。

     

    【構築工数】

    構築の難易度に関しては、どちらの構成も比較的容易に構築可能です。

    作業工数の差異はDKCEの場合、『DKCEの設定(ローカルストレージをレプリケーションして共有DISKとして設定する)』手順が必要になります。
    ※以降、表中のASDはAzure Shared Disksを、DKCEはDataKeeper for Windows Cluster Editionを指す。

    ※1 『DKCE設定』はウィザードを進めていけば簡単に設定することが可能です。また、AzureポータルのMarketplaceからDKCEがインストール済の仮想マシンを利用することも可能です。

    【コスト】

    2台のサーバーを使用したフェールオーバー クラスター環境の場合、『Azure Shared Disks』の構成では、共有DISK1本の料金、『DKCE』の構成ではDISK2本分の料金+ライセンス料金が必要になります。

    Azure Shared Disks』では、Premium SSD 256GiB以上のサイズのDISKが必須となりますが、『DKCE』を使用した場合にはStandard HDD やStandard SSD などコストの安いDISKを使用することができるためコストを抑えることができます。

    ただ、Premium SSD 256GiB以上のサイズで構成する場合は、『Azure Shared Disks』に比べ、倍の2本のDISKが必要になるので、構成によってはコストが増えることが想定されます。

    また、高パフォーマンスが必要な場合、アプリケーションの要件よりも高い IOPS を提供するディスクサイズ、VMサイズを選択する必要があります。どちらの構成でも同じですが高パフォーマンスが必要な場合はVMサイズのコストが増加することも考慮することが必要です。

    IOPSは仮想マシンのサイズ選択からそれぞれのVMサイズIOPSの情報を確認することができます。

    【対応できる障害の種類】

    サーバー障害については、どちらの構成でも違いはありませんが、『Azure Shared Disks』は可用性ゾーンを分けることが出来ません。そのため、データセンター全体に影響する障害の影響を受けてしまいます。

    DKCEは異なる可用性ゾーン間で構成することが可能です。

    また、DKCEは高可用性向けの『Azure Site Recovery』が利用できるので、リージョン全体に影響する障害にも強い、高可用性のシステムを構築することが可能です。

    《Azure Site Recoveryとは》
    Azure Site Recoveryは、他のリージョンにレプリケーションをすることが出来ます。これにより、複数障害の発生や、リージョン内での大規模障害が発生した場合、他のレプリケーションされた他のリージョンでサービスを再開させることが出来ます。

    ※補足情報
    Azure Shared Disks』を使用した構成でも、『Azure Site Recovery』は設定し、実行することが可能ですが、エラーで終了しますので、ご留意ください。下『Azure Site Recovery』を使用して、西日本リージョンから東日本リージョンにレプリケーションを実際に試した結果です。

    《Azure Shared Disksを使用した仮想サーバーをレプリケーションした結果》
     → エラーとなります。

    《DKCEを使用した仮想サーバーをレプリケーションした結果》
    → 成功

    6.まとめ

    Azure Shared Disks』は非常に簡単に利用できるメリットがありますが、可用性ゾーンを利用できないなどまだ可用性の観点からは十分ではないと感じます。

    お勧めするケースとしては、以下のような構成を検討している場合です。

    • 複数台でDISKを共有する必要がある構成。
    • 大容量の共有DISKが必要な構成。

    SLAが非常に重要になるシステムでは可用性ゾーンを考慮して大規模障害に強いシステム構成が可能な『DKCE』が選択肢に入るのかと思います。

    また、『DKCE』で構成した場合、DISKのサイズ・種類を柔軟に利用できるのも大きなメリットになるかと思います。


    DKCEを使ったクラウド上での構成例や、関連資料のダウンロードはこちらのページをご覧ください。



    SNSでもご購読できます。