Sql-Server

為報表伺服器數據庫設置可用性組

  • February 4, 2020

我正在閱讀有關將 SSRS 與 AG 一起使用的 msdn 文章,並且對設置相同的內容幾乎沒有疑問:

  • 伺服器 A - 將託管具有橫向擴展部署的報表伺服器服務
  • 伺服器 N1 - 使用 ReportServer 和 ReportServerTempdb 數據庫作為主副本的節點 1
  • 伺服器 N2 - 節點 2 是 ReportServer 和 ReportServerTempdb 的輔助副本

以上節點將成為多子網集群的一部分,N1 在 DC1 中,N2 在 DC2 中。

我正在考慮首先為這些多子網創建帶有 2 個 IP 的偵聽器,以便我們可以在安裝報告服務時使用相同的偵聽器,並將偵聽器名稱指向實例,它的報告伺服器數據庫指向它,以便它知道主副本即使在之後故障轉移。

我的上述理解正確嗎?這是它應該如何工作的嗎?

其次,文件說即使我在 N1 和 N2 之間使用同步模式也不支持自動故障轉移?真的嗎?為什麼只有 SSRS 才會出現這種情況?另外,如果是,我們可以自動進行故障轉移還是每次都必須手動,因為我認為數據源應用程序字元串可以使用該選項MultiSubnetFailover=true

感謝您的投入。

文件聲明不支持自動故障轉移的原因是必須執行故障轉移後任務以確保報表伺服器完全線上。有關需要完成哪些任務的確切資訊,請參閱本節。本質上,它歸結為需要停止舊主伺服器上的 SQL 代理並重新啟動報表伺服器服務。

我正在考慮首先為這些多子網創建具有 2ips 的偵聽器,以便我們可以在安裝報告服務時使用相同的偵聽器,並將偵聽器名稱指向實例及其報告伺服器數據庫,以便即使在故障轉移之後它也能知道主副本。我的上述理解正確嗎?這是它應該如何工作的嗎?

是的,首先建構您的 AG 並配置偵聽器,然後在配置報表伺服器時將其指向偵聽器。

其次,文件說即使我在 N1 和 N2 之間使用同步模式也不支持自動故障轉移?真的嗎?為什麼只有 SSR 才會出現這種情況?此外,如果是,我們可以自動進行故障轉移還是每次都必須手動,因為我認為數據源應用程序字元串可以使用選項多子網故障轉移 = 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,您可以避免超時。

引用自:https://dba.stackexchange.com/questions/258787