web-dev-qa-db-ja.com

リスナーあり、なしのAlwaysOn AG

AWSのAlwaysOn AGでいくつかのSQL Server(2014)を継承しました。私はこれにまったく慣れておらず、ライブの本番環境について話しています。 2つの異なるセットアップ。どちらも2つのサーバーにそれぞれ1つのAGがあり、非常に単純です。ただし、1つのセットにはリスナーが作成され、もう1つのセットには作成されません。

リスナーがいない場合でも問題なく動作します。リスナーのあるものはフェイルオーバー時に問題があります。

このサーバーにアクセスするGISアプリケーションは、フェイルオーバー後にサーバーに接続できません。元のプライマリにフェイルオーバーすると、再び正常に機能しました。接続にはリスナーを使用せず、代わりにクラスター名を使用します。

私は彼らにリスナーを使わせようとしたが、彼らはそれに接続することさえできないと言った。リスナーが正しく設定されていないと思います。

それはとにかく使用されていないので、リスナーを削除することはできますか?

しかし、私が読んだすべての内容は、リスナーを使用する必要があると述べていますが、リスナーのないサーバーは正常に動作しています。私は困惑している。

誰かが私を正しい方向に向けることができますか?

2
Susie

ただし、1つのセットにはリスナーが作成され、もう1つのセットには作成されません。

まあそれはあなたがアプリケーションが利用可能であり続けるのを助けません!リスナーなしで可用性グループを作成できますが、そのようなセットアップの有用性は低いです。

(コメントから)リスナーは正しいアプローチですが、実際の機能は、意図的な読み取り専用接続を適切なセカンダリにダイレクトできるようにすることです。

それはまったく正しくありません。リスナーは常にプライマリレプリカを指し、その主な目的は透過的なフェイルオーバーを促進して、接続文字列を変更する必要がないようにすることです。もう1つの使用法は、前述のように読み取り専用ルーティングですが、主な使用法は実際には透過的なフェイルオーバーです。

(コメントより)...しかし、クラスター名は、リスナーと同じシームレスなプライマリノードへのリダイレクトを提供します。

CNOは、可用性グループが何であるか(プライマリである必要があるかなど)を認識していません。CNOは絶対的にDOES NOT常にプライマリレプリカを指します。コアクラスターリソース(CNOを保持する)がたまたまAGプライマリと同じノードによって所有されている場合にのみそれを使用して接続できますが、それがそうではなく、かつCNOがAGをフォローしていない場合は、失敗します。次に例を示します。 CNO on SQL2016AGN3 and AG on SQL2016AGN1

リスナーがいない場合でも問題なく動作します。リスナーのあるものはフェイルオーバー時に問題があります。

リスナーなしのものmight正常に動作しています...フェイルオーバーでも正常に動作しますか?彼らは他のDNSエイリアスを使用して、リスナーのように「動作」しますか。

リスナーを持つもの、それらの接続文字列はどのように見えますか?接続文字列でリスナー名を使用していない場合はもちろん機能しません...正しい場所を指す必要があるため、リスナーが存在します。

複数のサブネットがある場合、古いクライアントライブラリが使用されている場合、または特定のキーワードが接続文字列に含まれていない場合も、リスナーへの接続が失敗することがあります。複数のサブネットがある場合、クライアントドライバーは MultiSubnetFailover キーワードをサポートするものである必要があり、これは[〜#〜] true [〜#〜]に設定する必要があります

接続にはリスナーを使用せず、代わりにクラスター名を使用します。

まあ、それは問題の50%です。

このサーバーにアクセスするGISアプリケーションは、フェイルオーバー後にサーバーに接続できません。

リスナーを使用するように接続文字列を更新し、MultiSubnetFailover = Trueを設定すると、接続に使用できるクライアントライブラリがそれをサポートしていると想定して、動作するはずです。

私は彼らにリスナーを使わせようとしたが、彼らはそれに接続することさえできないと言った。リスナーが正しく設定されていないと思います。

SQL Serverがリスナーを作成した場合、それが正しく設定されていないことを強く疑います...ただし、Edgeのケースは除外しません。

それはとにかく使用されていないので、リスナーを削除することはできますか?

私はその逆です。 GISチームに接続文字列をリスナーに変更させ、multisubnetfailoverを設定してもらいます。それで、それはうまくいくはずです...以前に述べた仮定で再び。

しかし、私が読んだすべての内容は、リスナーを使用する必要があると述べていますが、リスナーのないサーバーは正常に動作しています。私は困惑している。

はい、リスナーを使用します。それが機能しているという事実は、「これは常にnode3にあります」と書かれているドキュメントがあるか、それが機能し続けることで幸運になっているためです。また、接続文字列でレプリカ名を直接使用した可能性もあります。これにより、接続が可能になります。セカンダリの役割の設定に応じて、接続して正常に機能する場合としない場合があります...上記の設定に依存します。

2
Sean Gallardy