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

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

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

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

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

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

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

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

步驟

描述

詳細資訊

1

在 NLB 叢集的伺服器節點上安裝 Reporting Services 之前,請先檢查向外延展部署的需求。

規劃向外延展部署 (在《SQL Server 線上叢書》中)

2

設定 NLB 叢集並確認它是否正常運作。

請務必將主機標頭名稱對應至 NLB 叢集的虛擬伺服器 IP。此主機標頭名稱會用於報表伺服器 URL 中,而且比 IP 位址更容易記得和輸入。

如需詳細資訊,請參閱 Windows Server 產品文件集來了解您所執行的 Windows 作業系統版本。

4

在僅限檔案模式中,於已經屬於 NLB 叢集之一部分的節點上安裝 Reporting Services,並設定報表伺服器執行個體來進行向外延展部署。

您所設定的向外延展可能不會回應導向虛擬伺服器 IP 的要求。將向外延展設定為使用虛擬伺服器 IP 的作業會在您設定檢視狀態驗證之後的步驟進行。

如何:設定報表伺服器向外延展部署 (Reporting Services 組態)

5

設定檢視狀態驗證

為了獲得最佳結果,請在您設定向外延展部署之後,而在將報表伺服器執行個體設定為使用虛擬伺服器 IP 之前,執行這個步驟。先設定檢視狀態驗證,就可以在使用者嘗試存取互動式報表時,避免發生有關狀態驗證失敗的例外狀況。

本主題中的「如何設定檢視狀態驗證」。

6

將 Hostname 和 UrlRoot 設定為使用 NLB 叢集的虛擬伺服器 IP。

本主題中的「如何設定 Hostname 和 UrlRoot」。

7

確認伺服器可透過您指定的主機名稱存取。

本主題中的「確認報表伺服器存取」。

如何設定檢視狀態驗證

若要在 NLB 叢集上執行向外延展部署,您必須設定檢視狀態驗證,好讓使用者可以檢視互動式 HTML 報表。您必須針對報表伺服器和報表管理員執行這項工作。

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

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

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

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

    <machineKey validationKey="123455555" decryptionKey="678999999" validation="SHA1" decryption="AES"/>
    
  2. 為報表管理員開啟 Web.config 檔案,然後在 <system.web> 區段中貼上您所產生的 <machineKey> 元素。根據預設,報表管理員的 Web.config 檔案位於 \Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager\Web.config。

  3. 儲存檔案。

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

  5. 確認 \Reporting Services\Report Manager 資料夾中的所有 Web.Config 檔案在 <system.web> 區段中包含相同的 <machineKey> 元素。

如何設定 Hostname 和 UrlRoot

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

定義虛擬伺服器名稱之後,您可以在 RSReportServer.config 檔案中設定 Hostname 和 UrlRoot 屬性,以便將虛擬伺服器名稱包含在報表伺服器 URL 中。

警告注意事項注意

[UrlRoot] 屬性會影響使用者在 Reporting Services 訂閱傳送之電子郵件中看到的 URL。如果 [UrlRoot] 屬性在 RSReportServer.config 檔案中維持空白,在電子郵件中看到的 URL 將包含實體電腦名稱,而非 NLB 虛擬伺服器的 URL。為避免可能將實體電腦名稱洩漏給可能收到訂閱的惡意使用者,請將 [UrlRoot] 屬性變更為適當的 NLB 虛擬伺服器名稱。

當您在報表環境中使用萬用字元 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 (Reporting Services)>。如需有關編輯這個組態檔的詳細資訊,請參閱《SQL Server 線上叢書》中的<如何:修改 Reporting Services 組態檔>。

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

  2. 請尋找 <Service> 區段,並將以下資訊加入到組態檔中,以 NLB 伺服器的虛擬伺服器名稱取代 Hostname 值:

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

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

  5. 儲存檔案。

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

確認報表伺服器存取

確認您可以利用虛擬伺服器名稱來存取向外延展部署 (例如 https://MyVirtualServerName/reportserver 和 https://MyVirtualServerName/reports)。

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

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

疑難排解失敗的要求

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

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

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

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