マルチサブネットフェイルオーバを用いたマルチサブネット可用性グループ( Part 2 )


インyesterday’s post , 私は、利用するために可用性グループ(AG)を構成する方法を示しましたRegisterAllProvidersIP=0 クライアントを使用して接続できない場合MultiSubnetFailover=true 接続文字列属性.
私はあなたが設定したときにトレードオフをしなければならないと述べたRegisterAllProvidersIP=0 , を比較し、
マルチサブネットワーキングオーバー= true
RegisteralProvidersip = 0
❌ マイクロソフトドライバはそれをサポートしますが、JTDSや他のドライバではありません.
✅ IPの変更は、サーバーで処理されるので、すべてのドライバは、この設定で動作することができます.
❌ すべてのクライアントから接続文字列の変更が必要です.
✅ クライアントから必要な変更
✅ フェイルオーバークライアントの間にすぐに再接続することができます.
❌ 失敗したクライアントの間にDNSの変更が伝播し、TTLが期限切れになるまで再接続できません.
でも……ときにケーキを食べることができるし、それを持っている場合は?
場合によっては、いくつかのアプリケーション&クライアントが使用できないでしょうMultiSubnetFailover=true , その他のクライアントは.おそらく、あなたは古いJTDSドライバーから適切にサポートしている現在のマイクロソフトJDBCドライバーに移動するレガシーJavaアプリの束を更新することに取り組んでいますMultiSubnetFailover=true . あなたのコードベースの部分が更新されており、高速クロスサブネットフェールオーバーの接続文字列属性を使用するようにします.しかし、あなたのコードベースの他の部分はまだ更新されており、RegisterAllProvidersIP 偽のクラスタパラメータ.それは両方を持っているといいですか?

私たちは両方を持っていない理由?


時々、我々は両方の世界のベストを望みます.この場合、実際にはそうすることができます.我々が引き起こす唯一のコストは、いくつかの余分なIPアドレスを使用することです.
昨日の例では、単一のagと単一のリスナーでWSFCを使用します.リスナーにはそれぞれ2つのIPSがあり、それぞれが異なるサブネットになっています:
  • Windowsクラスタ:WSFC01
  • 利用可能なグループ:AG01

  • agリスナーAGListener01
  • 10.10.10 .XXXサブネット
  • 10.10.20 .XXXサブネット
  • 番目のリスナーを追加する


    新しいAgを作成するSSMのウィザードでは、あなたのAG上の単一のリスナーを作成することができます.しかし、簡単にT - SQLを使用して2番目のAGを追加することができます.
    昨日、私たちはAGListener01 使用するリスナーRegisterAllProvidersIP=0 , フェイルオーバーがあるときに、1つのIPだけが5分DNS更新のコストで、一度にオンラインです.私の考えでは、5分のTTL待ちは、Agリスナーが本当に非常に利用できないことを意味します.今日、私たちは、その完全なHAを提供する同じAgに2番目のリスナーを加えることができます:
    ALTER AVAILABILITY GROUP AG01  
          ADD LISTENER 'AGListener01HA' ( 
                WITH IP ( ('10.10.10.139','255.255.255.0'),
                          ('10.10.20.139','255.255.255.0') 
                        ) , PORT = 50001 );   
    GO  
    
    今、私たちは2つのリスナー(aglistener01、aglistener01 1 ha)と単一のAG(AG 01)を持っています.AgListener 01を使用するように変更されましたRegisterAllProvidersIP=0 , また、AglistEid 01 haは、クライアントが指定する必要があるデフォルトの設定を持っていますMultiSubnetFailover=true 接続文字列属性.
    以下のPowerShellを使用して、これらの2つのリスナーの設定を確認できます.
    Get-ClusterResource -Cluster WSFC01 -Name AGListener01,AGListener01HA | 
            Get-ClusterParameter -Name RegisterAllProvidersIP,HostRecordTTL
    
    Object          Name                   Value  Type
    ------          ----                   -----  ----
    AGListener01    RegisterAllProvidersIP 0      UInt32
    AGListener01    HostRecordTTL          300    UInt32
    AGListener01HA  RegisterAllProvidersIP 1      UInt32
    AGListener01HA  HostRecordTTL          1200   UInt32
    
    両方のリスナーは同じagの一部であるので、彼らは一緒に失敗するでしょう、そして、両方のリスナーは適切な主要なレプリカを示します.しかし、クライアントは、クライアントの要件に基づいて、どのリスナーを接続することができます.クライアントアプリケーションがドライバと接続文字列を更新するにつれて、より多くの利用可能なリスナーを指すように更新できます.AGListener01HA ) そのため、フェイルオーバーの高速な再接続を利用できます.
    郵便Multi-subnet availability group, with mixed MultiSubnetFailover support (Part 2) 最初に現れたAndy M Mallon - AM² .