Windows Server 2016 以降の環境では、DNN (Distributed Network Name : 分散ネットワークネーム) というクラスターリソースが追加されました。
この DNN のクラスターリソースは、SQL Server 2019 で SQL Server on Azure VM の高可用性環境を構築する場合にも活用をすることができるようになっています。
Windows Server 2019 の Azure VM で WSFC を構築した場合、CNO (Cluster Name Object) が従来の VNN (Virtual Network Name : VNN) ではなく、DNN で自動的に作成が行われたりもしますが、DNN についてきちんと情報を調べたことが無かったので、本投稿で情報をまとめておきたいと思います。
本ブログでも DNN を使用した SQL Server on Azure VM の高可用性環境には触れてきましたが、きちんと情報を調べるまで、雰囲気でしか理解できていませんでした…。
Contents
DNN (Distributed Network Name : 分散ネットワークネーム)
DNN は Windows Server 2016 で導入された機能となります。
DNN の詳細については、Windows Server 2016/2019 Cluster Resource / Resource Types に、次のように記載が行われています。
Distributed Network Name (clusres.dll): A Distributed Network Name is a name in the Cluster that does not use a clustered IP Address. It is a name that is published in DNS using the IP Addresses of all the nodes in the Cluster. Client connectivity to this type name is reliant on DNS round robin. In Azure, this type name can be used in leiu of having the need for an Internal Load Balancer (ILB) address. The predominant usage of a Distributed Network Name is with a Scale-Out File Server (discussed next). In Windows Server 2019, we added the ability for the Cluster Name Object (CNO) to use a DNN. For more information on the CNO usage as a Distinguished Network Name, please refer to the Windows Server 2019 Failover Clustering New Features blog.
意訳をすると次のような記述が行われています。
分散ネットワーク名 (DNN) は、クラスター名に対してクラスターの IP アドレスを使用しません。
クラスター内の全てのノードの IP アドレスを使用して、DNS により公開される名前です。
このリソースタイプの名前に対するクライアントの接続性は、DNS のラウンドロビンに依存しています。
Azure では、このタイプの名前は、ILB (Internal Load Balancer) アドレスを必要としない場合に使用できます。
Windows Server 2019 で導入された WSFC の新機能については、フェールオーバー クラスタリングの新機能 で記載されており、Windows Server 2019 では、次のような Azure 向けの機能の追加も行われています。
Azure 対応のクラスター
フェールオーバークラスターは、Azure IaaS 仮想マシンで実行されている時間を自動的に検出し、構成を最適化して、最高レベルの可用性を実現するために、Azure の計画済みメンテナンスイベントのプロアクティブなフェールオーバーとログ記録を実現します。 また、クラスター名の動的ネットワーク名を使用してロードバランサーを構成する必要がないため、展開も簡略化されます。
Windows Server 2019 で追加された機能の詳細については、Windows Server 2019 Failover Clustering New Features の Part 6 で解説が行われています。
Windows Server 2019 では、クラスターを作成する際の New-Cluster に「-ManagementPointNetworkType」というスイッチが追加されています。(投稿時点では、ドキュメントに記載ないですが…。)
デフォルトでは、「Automatic」が使用され、実行されている場所に応じて、Singleton (VNN : 従来のコンピューター名 / IP の組み合わせ) / Distributed (DNN) が自動的に使い分けられます。
Azure 向けの機能拡張としては、DNN の利用だけでなく、Azure IaaS に向けた最適な構成を行うための機能 (Windows Server 2019 の新機能の記載内容) があることも紹介されています。
「Azure 対応のクラスター」(Azure-aware clusters) ですが、具体的な情報が少ないのですが、4. What’s New in Windows 2019 for SAP に少し記述がありました。
Windows Clustering includes a new feature useful for SAP customers called Azure-aware clusters. Windows 2019 cluster can receive and respond to Azure planned maintenance notifications. Windows cluster will failover services before planned maintenance events occur
Azure の計画メンテナンス通知を受信した場合、サービスのフェールオーバーを行い、再起動前にサービスをフェールオーバーさせるというような動作が含まれているようですね。
DNN と SQL Server 2019 の組み合わせ
DNN は Windows Server 2016 で追加された機能であるため、次に記載する SQL Server 2019 と DNN を組み合わせた機能については、Windows Server 2016 以降 + SQL Server 2019 で実現することができます。
SQL Server は 2019 が DNN を組み合わせることができるバージョンとなりますが、SQL Server 2019 RTM で対応しているのではなく、その後リリースされた累積更新プログラムによって SQL Server の高可用性環境との組み合わせがサポートされました。
DNN を使用した高可用性環境では、Azure Load Balancer (ALB) を使用することなく、高可用性環境のエンドポイントを作成することができるようになります。
従来型の VNN / DNN の違いについては、クラスター構成のベスト プラクティス (Azure VM 上の SQL Server) にも記載が行われていますので、以下の記載内容のほかに、こちらのドキュメントも、メリット / デメリットを把握するのに活用できるのではないでしょうか。
SQL Server 2019 CU2 以降の FCI (フェールオーバークラスターインスタンス) のサポート
SQL Server 2019 CU2 で FCI で DNN のサポートが追加されました。
docs のドキュメントとしても公開されています。
DNN を使用した FCI へのアクセスについては、基本的なデータベースの機能はサポートされていますが、SQL Server FCI および DNN との機能の相互運用性 に記載されているような一部の機能については、DNN でのアクセスはサポートされていません。
そのため、使用したい機能によっては、DNN ではなく、従来の VNN + ALB を選択するケースも残っています。
SQL Server 2019 CU8 以降の AlwaysOn 可用性グループのサポート
SQL Server 2019 CU8 で AlwaysOn 可用性グループのリスナーで DNN のサポートが追加されました。
docs のドキュメントとしても公開されています。
FCI と同様に DNN 経由のアクセスについては、いくつかサポートされていないものがあり、AG と DNN リスナーとの機能の相互運用性 に記載があります。
AlywasOn 可用性グループで DNN を使用する場合、大きな影響としては、「分散型可用性グループ」をサポートしていないことではないでしょうか。
これについては WARNING: Distributed Network Names and Distributed Availability Groups でも触れられています。
分散型可用性グループは、AlwaysOn 可用性グループを使用しながら、各可用性グループの結合度を薄くすることができる機能となり、DR や新環境への切り替えで活用することができます。
現状、DNN は分散型可用性グループをサポートしていないため、分散型可用性グループを意匠する場合には、従来の VNN + ALB の構成をとる必要があります。