在網路負載平衡叢集上設定報表伺服器

如果您要將報表伺服器向外延展設定為在網路負載平衡 (NLB) 叢集上執行,就必須進行下列工作:

  • 確定此 NLB 叢集可透過對應至虛擬伺服器 IP 位址的虛擬伺服器名稱存取。 虛擬伺服器名稱是必要的項目,如此您才能夠設定 NLB 叢集的單一進入點。 當您針對每個報表伺服器執行個體設定 URL 時,就會將此虛擬伺服器名稱指定為主機。

  • 設定檢視狀態驗證,以便支援互動式報表檢視。 為了回應使用者動作,互動式報表通常會在單一使用者工作階段期間轉譯許多次,以便視覺化全新或不同的資料。 透過設定檢視狀態驗證,不論哪一個報表伺服器服務實際的要求,接近程度都會保留在使用者工作階段中。

Reporting Services 並未提供可用來使向外延展部署負載平衡,或透過共用 URL 定義單一存取點的功能。 您必須實作個別的軟體或硬體 NLB 叢集解決方案,以支援 Reporting Services 向外延展部署。

您可以將 Reporting Services 安裝在已經屬於 NLB 叢集一部分的節點上,也可以先設定向外延展部署,然後再安裝叢集軟體。

在 NLB 叢集上部署報表伺服器的步驟

您可以使用下列指導方針來安裝和設定部署:

步驟 描述 更多資訊
1 在 NLB 叢集的伺服器節點上安裝 Reporting Services 之前,請先檢查向外延展部署的需求。 設定原生模式報表伺服器向外延展部署
2 設定 NLB 叢集並確認它是否正常運作。

請務必將主機標頭名稱對應至 NLB 叢集的虛擬伺服器 IP。 此主機標頭名稱會用於報表伺服器 URL 中,而且比 IP 位址更容易記得和輸入。
如需詳細資訊,請參閱 Windows Server 產品文件集來了解您所執行的 Windows 作業系統版本。
3 將主機標頭的 NetBIOS 和完整網域名稱 (FQDN) 加入至 Windows 登錄內儲存的 BackConnectionHostNames 清單。

例如,若主機標頭名稱 <MyServer> 是「contoso」之 Windows 電腦名稱的虛擬名稱,您或許可以參考 FQDN 形式的 contoso.domain.com。 您需要將主機標頭名稱 (MyServer) 及 FQDN 名稱 (contoso.domain.com) 均加入 BackConnectionHostNames 中的清單。

然後將電腦重新開機以確認變更是否生效。
若您伺服器環境中包含本機電腦上的 NTLM 驗證,則必須執行此步驟,以建立回送連接。

若如此,報表管理員與報表伺服器之間的要求會是失敗的 401 狀態 (未經授權)。
4 在僅限檔案模式中,於已經屬於 NLB 叢集一部分的節點上安裝 Reporting Services,並針對向外延展部署設定報表伺服器執行個體。

您所設定的向外延展可能不會回應導向虛擬伺服器 IP 的要求。 將向外延展設定為使用虛擬伺服器 IP 的作業會在您設定檢視狀態驗證之後的步驟進行。
設定原生模式報表伺服器向外延展部署 (報表伺服器 Configuration Manager)
5 設定檢視狀態驗證

為了獲得最佳結果,請在您設定向外延展部署之後,而在將報表伺服器執行個體設定為使用虛擬伺服器 IP 之前,執行這個步驟。 先設定檢視狀態驗證,就可以在使用者嘗試存取互動式報表時,避免發生有關狀態驗證失敗的例外狀況。
本文章中的如何設定檢視狀態驗證
6 HostnameUrlRoot 設定為使用 NLB 叢集的虛擬伺服器 IP。 本文章中的如何設定 Hostname 和 UrlRoot
7 確認伺服器可透過您指定的主機名稱存取。 本文章中的確認報表伺服器存取

設定檢視狀態驗證

若要在 NLB 叢集上執行向外延展部署,您必須設定檢視狀態驗證,好讓使用者可以檢視互動式 HTML 報表。 您必須設定報表伺服器 Web 服務的檢視狀態驗證。

若要在 NLB 叢集上執行向外延展部署,您必須設定檢視狀態驗證,好讓使用者可以檢視互動式 HTML 報表。

檢視狀態驗證是由 ASP.NET 所控制。 依預設會啟用檢視狀態驗證,並使用 Web 服務的識別來執行驗證。 但是在 NLB 叢集案例中,會有多個服務執行個體和 Web 服務識別在不同的電腦上執行。 因為此服務識別會因每個節點而異,所以您不能依賴單一處理序識別來執行驗證。

為了解決此問題,您可以產生任意驗證金鑰來支援檢視狀態驗證,然後手動將每個報表伺服器節點設定為使用相同的金鑰。 您可以使用任何隨機產生的十六進位序列。 驗證演算法 (例如 SHA1) 會決定十六進位序列必須包含的長度。

適用於:✅ SQL Server Reporting Services (2016)

  1. 使用 .NET Framework 提供的功能來自動產生驗證金鑰與解密金鑰。 最後,您必須擁有單一 <machineKey> 項目,讓您可以針對向外延展部署中的每個報表伺服器執行個體貼入到 Web.config 檔案。

    下列範例說明您必須取得的值。 請勿將此範例複製到設定檔中,因為這些金鑰值是無效的。

    <machineKey validationKey="123455555" decryptionKey="678999999" validation="SHA1" decryption="AES"/>  
    
  2. 開啟 ReportserverWeb.config 檔案,並在 <system.web> 區段中貼上您產生的 <machineKey> 元素。 根據預設,Web.config 檔案位於 \Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\Reportserver\Web.config 中。

  3. 儲存檔案。

  4. 針對向外延展部署中的每個報表伺服器重複以上步驟。

  5. 確認向外延展部署中所有報表伺服器的所有 Web.Config 檔案都在 <system.web> 區段中包含相同的 <machineKey> 元素。

適用於:✅ SQL Server Reporting Services (2017 和更新版本) ✅ Power BI 報表伺服器

  1. 使用 .NET Framework 提供的功能來自動產生驗證金鑰與解密金鑰。 最後,您必須擁有單一 <machineKey> 項目,讓您可以針對向外延展部署中的每個報表伺服器執行個體貼入到 RSReportServer.config 檔案。

    下列範例說明您必須取得的值。 請勿將此範例複製到設定檔中,因為這些金鑰值是無效的。 報表伺服器需要正確的大小寫。

    <MachineKey ValidationKey="123455555" DecryptionKey="678999999" Validation="SHA1" Decryption="AES"/>
    
  2. 開啟 ReportserverRSReportServer.config 檔案,並在 <Configuration> 區段中貼上您產生的 <machineKey> 元素。 根據預設,檔案 RSReportServer.config 位於 Reporting Services 的 \Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer\RSReportServer.config 中。 針對 Power BI 報表伺服器,檔案位於 \Program Files\Microsoft Power BI Report Server\PBIRS\ReportServer\RSReportServer.config

  3. 儲存檔案。

  4. 針對向外延展部署中的每個報表伺服器重複以上步驟。

  5. 確認向外延展部署中所有報表伺服器的所有 RSReportServer.config 檔案都在 <Configuration> 區段中包含相同的 <MachineKey> 元素。

如何設定 HostnameUrlRoot

若要在 NLB 叢集上設定報表伺服器向外延展部署,您必須定義單一虛擬伺服器名稱,以便提供伺服器叢集的單一存取點。 然後向您所在環境中的網域名稱伺服器 (DNS) 註冊這個虛擬伺服器名稱。

定義虛擬伺服器名稱之後,您必須在 RSReportServer.config 檔案中設定 HostnameUrlRoot 内容,以便將虛擬伺服器名稱包含在報表伺服器 URL 中。

當您在報表環境中使用萬用字元 URL 保留項目時,請設定 Hostname 屬性。 當您指定 Hostname 屬性作為 NLB 伺服器的虛擬伺服器名稱時,報表環境的網路流量會導向 NLB 伺服器。 然後 NLB 會將要求散發到報表伺服器節點。

另外,請設定 UrlRoot 屬性,好讓報表連結可以在已匯出到靜態報表的報表中工作 (例如 Excel 或 PDF 格式) 或是在訂閱所產生的報表中工作 (例如電子郵件訂閱)。

如果您將 Reporting Services 與 Windows SharePoint Services 3.0 或 Office SharePoint Server 2007 整合,或者您將報表裝載於自訂的 Web 應用程式,您可能僅需設定 UrlRoot 屬性。 在此範例中,將 UrlRoot 屬性設定為 SharePoint 網站或 Web 應用程式的 URL。 此設定將報表環境的網路流量導向可處理報表的應用程式,而不是報表伺服器或 NLB 叢集。

請勿修改 ReportServerUrl。 如果您修改這個 URL,就會在每次處理內部要求時增加虛擬伺服器之間的額外往返。 如需詳細資訊,請參閱設定檔中的 URL (報表伺服器 Configuration Manager)。 如需編輯組態檔的詳細資訊,請參閱修改 Reporting Services 設定檔 (RSreportserver.config)

  1. 在文字編輯器中開啟 RSReportServer.config

  2. 尋找 <Service> 區段、將下列資訊新增至設定檔,並以 NLB 伺服器的虛擬伺服器名稱取代 Hostname 值:

    <Hostname>virtual_server</Hostname>  
    
  3. 尋找 UrlRoot。 雖然設定檔中並未指定此元素,但使用的預設值是採用下列格式的 URL:https://https://<computername>/<reportserver>,其中 <reportserver> 是報表伺服器 Web 服務的虛擬目錄名稱。

  4. 鍵入 UrlRoot 的值,其中包括採用下列格式的叢集虛擬名稱:https://https://<virtual_server>/<reportserver>

  5. 儲存檔案。

  6. 針對向外延展部署中的每個報表伺服器,在每個 RSReportServer.config 檔案中重複這些步驟。

確認報表伺服器存取

確認您可以透過虛擬伺服器名稱存取向外延展部署 (例如,https://MyVirtualServerName/reportserverhttps://MyVirtualServerName/reports)。

您可以查看報表伺服器記錄檔,或檢查 RS 執行記錄 (執行記錄資料表包含稱為 InstanceName 的資料行,它會顯示哪一個執行個體處理特定要求),藉以檢查實際上是哪一個節點在處理報表。 如需詳細資訊,請參閱 Reporting Services 記錄檔和來源

如果您無法連線到報表伺服器,請檢查 NLB。 確定要求有傳送到報表伺服器,並檢視報表伺服器 HTTP 記錄來確認伺服器正在接收要求。

疑難排解失敗的要求

如果要求沒有送達報表伺服器執行個體,請檢查 RSReportServer.config 檔案來確認虛擬伺服器名稱是否指定為報表伺服器 URL 的主機名稱:

  1. 在文字編輯器中開啟 RSReportServer.config 檔案。

  2. 尋找 <Hostname><ReportServerUrl><UrlRoot>,並檢查每個設定的主機名。 如果此值不是您所預期的主機名稱,請將它取代成正確的主機名稱。

如果您在進行這些變更後啟動 Reporting Services 組態工具,則該工具可能會將 <ReportServerUrl> 設定變更為預設值。 一律保存組態檔的備份副本,以防您需要將它們取代成內含欲使用之設定的版本。

設定 URL (報表伺服器組態管理員)
設定原生模式報表伺服器向外延展部署 (報表伺服器 Configuration Manager)
報表伺服器 Configuration Manager (原生模式)
管理 Reporting Services 原生模式報表伺服器