web-dev-qa-db-ja.com

レポートサーバーデータベースの可用性グループの設定

AGでのSSRSの使用に関するmsdnの記事を読んでいますが、これを設定することに少し疑問があります。

  • サーバーA-スケールアウト展開でレポートサーバーサービスをホストします
  • サーバーN1-Node 1(ReportServerおよびReportServerTempdbデータベースがプライマリレプリカとして機能)
  • サーバーN2-Node 2はReportServerおよびReportServerTempdbのセカンダリレプリカです

上記のノードは、DC1にN1、DC2にN2を持つマルチサブネットクラスターの一部になります。

私は最初に、これらのマルチサブネット用に2つのIPを使用してリスナーを作成し、レポートサービスのインストール中にそれを使用し、インスタンスのリスナー名とそのレポートサーバーデータベースをポイントして、プライマリレプリカを認識できるようにすることを考えています。フェイルオーバー。

私の上記の理解は正しいですか?それはどのように機能すると想定されていますか?

次に、N1とN2の間で同期モードを使用しても、自動フェイルオーバーはサポートされないというドキュメントがありますか?本当?そして、なぜそれがSSRSにのみ当てはまるのでしょうか。また、そうである場合、フェイルオーバーを自動化できますか、それともデータソースアプリケーションの文字列がオプションMultiSubnetFailover=trueを使用できると考えているので、毎回手動で行う必要がありますか?

入力を感謝します。

1
BeginnerDBA

ドキュメントに自動フェイルオーバーがサポートされていないと記載されている理由は、レポートサーバーが完全にオンラインであることを確認するために実行する必要があるフェイルオーバー後のタスクがあるためです。どのタスクを完了する必要があるかについては、 このセクション を参照してください。基本的には、古いプライマリでSQLエージェントを停止し、レポートサーバーサービスを再起動する必要があります。

最初にそれらのマルチサブネットの2ipsでリスナーを作成して、レポートサービスのインストール中に同じ名前を使用し、インスタンスのリスナー名とそのレポートサーバーデータベースをポイントして、フェイルオーバー後もプライマリレプリカを認識できるようにすることを考えています。私の上記の理解は正しいですか?それはどのように機能すると想定されていますか?

はい、AGを構築して最初にリスナーを構成し、次にレポートサーバーを構成するときに、それをリスナーに向けます。

次に、ドキュメントでは、N1とN2の間で同期モードを使用した場合でも、自動フェイルオーバーはサポートされていないと述べていますか?本当?そして、なぜそれがSSRにのみ当てはまるのでしょうか?また、そうである場合、データソースアプリケーション文字列がオプションmulti subnet failover = trueを使用できると考えているので、フェーバーを自動化できますか、それとも毎回手動で行う必要がありますか?

レポートデータソースとレポートサーバーデータベースについて話しているクロスオーバーがあるようです。 RSデータベースは、レポートサーバーを管理および維持するためにレポートサーバーによって使用されるデータベースです。通常、これらの名前はReportServerおよびReportServerTempDBです。これらのデータベースは、サービスを100%の通常の状態に戻すために完了する必要があるフェールオーバー後のタスクがあるため、自動フェールオーバーをサポートしていません。

これらのタスクは、スクリプトを使用して簡単に自動化できますが、ドキュメントがサポートされていないということです。レポートデータソースの場合、ソースデータベースもAGにある場合、接続文字列にAG固有のパラメーター(MultiSubnetFailoverやApplicationIntentなど)のみが必要です。その場合、それらのキーを接続文字列に追加すると、レポートはフェイルオーバー後も引き続き機能します。フェイルオーバーを自動的に処理する必要があります。

注意すべきことは、ドキュメントのこの行です:

レポートサーバーデータベースでのMultiSubnetFailoverの使用はサポートされていません。

これが意味することは、マルチサブネットクラスターがある場合、 RegisterAllProvidersIP 設定を0に設定する必要があるということです。この設定はデフォルトで1であり、リスナーに割り当てられた各IPが登録されていることを意味しますDNSで。 MultiSubnetFailoverが有効になっている場合、クライアントは各IPに並列に接続しようとし、応答した最初のIPから接続を返します。この設定はRSサービスへのRSデータベースへの接続ではサポートされていないため、フェイルオーバー後に接続しようとするとタイムアウトになる可能性があります。

解決策は、RegisterAllProvidersIPを0に設定し、そのホストレコードの低いTTLを設定することです。これにより、アクティブなIPのみがリスナーのDNSに登録され、フェイルオーバー後に新しいIPが登録されます。 DNSの場合、これは、リスナーへの新しい接続が正しいIPを使用し、タイムアウトを回避することを意味します。

2
HandyD

なぜそれがSSRSにのみ当てはまるのですか?

主な理由の1つであるハンディの回答の補足として、SSRSの依存関係はReportServerデータベースとReportServerTempDBデータベースだけでなく、SSRSのすべてのサブスクリプション構成をホストし、AGレプリケーションのスコープではないSQL Serverエージェントにも存在します。 。

したがって、AG同期によってのみ、カバーされたReportServerデータベースとReportServerTempDBデータベースが取得されました。サブスクリプションごとにSSRSによって作成されたSQLエージェントジョブではありません(以下は、SSRSによって作成されたエージェントジョブのサンプルスクリーンショットです)。

ただし、SSRSは(フェールオーバーイベントの後で)新しいプライマリレプリカですべてのジョブを再作成しますが、これを行うにはSSRSサービスを再起動する必要があります。

enter image description here

1
Shekar Kola