如何在网络负载平衡群集上配置报表服务器
如果要将报表服务器扩展配置为在网络负载平衡 (NLB) 群集上运行,必须执行以下操作:
确保可通过映射到虚拟服务器 IP 地址的虚拟服务器名称来访问 NLB 群集。必须提供虚拟服务器名称,才能配置 NLB 群集的单入口点。在为每个报表服务器实例配置 URL 时,会将虚拟服务器名称指定为主机。
配置视图状态验证以支持查看交互式报表。交互式报表通常会在单个用户会话期间多次呈现,以便为了响应用户操作而对新数据或不同数据进行可视化。通过配置视图状态验证,可以在用户会话期间保持连续性,而与实际请求由哪个报表服务器提供服务无关。
Reporting Services 不支持对扩展部署进行负载平衡,也不支持定义通过共享 URL 进行单点访问。您必须实现单独的软件或硬件 NLB 群集解决方案以支持 Reporting Services 扩展部署。
可以将 Reporting Services 安装在已经是 NLB 群集一部分的节点上,也可以先配置扩展部署,然后再安装群集软件。
报表服务器在 NLB 群集上的部署步骤
可以使用下面的指南来安装和配置部署:
步骤 |
说明 |
详细信息 |
---|---|---|
1 |
在将 Reporting Services 安装在 NLB 群集内的服务器节点上之前,请检查扩展部署的要求。 |
SQL Server 联机丛书中的规划扩展部署 |
2 |
配置 NLB 群集并验证它是否正常工作。 确保将主机标头名称映射到 NLB 群集的虚拟服务器 IP。主机标头名称用在报表服务器 URL 中,它比 IP 地址便于记忆和键入。 |
有关详细信息,请参阅您运行的 Windows 操作系统版本的 Windows Server 产品文档。 |
4 |
在已是 NLB 群集一部分的节点上以“仅文件”模式安装 Reporting Services,并为扩展部署配置报表服务器实例。 所配置的扩展部署将不响应那些定向到虚拟服务器 IP 的请求。在配置视图状态验证之后,会在以后的步骤中将扩展部署配置为使用虚拟服务器 IP。 |
|
5 |
配置视图状态验证。 为了达到最佳效果,请在配置扩展部署之后、配置报表服务器实例以使用虚拟服务器 IP 之前执行此步骤。通过先配置视图状态验证,可以避免在用户试图访问交互式报表时出现有关状态验证失败的异常。 |
本主题中的如何配置视图状态验证。 |
6 |
将 Hostname 和 UrlRoot 配置为使用 NLB 群集的虚拟服务器 IP。 |
本主题中的如何配置 Hostname 和 UrlRoot。 |
7 |
验证能否通过指定的主机名来访问服务器。 |
本主题中的验证报表服务器访问权限。 |
如何配置视图状态验证
若要在 NLB 群集上运行扩展部署,必须配置视图状态验证,以便用户可以查看交互式 HTML 报表。您必须针对报表服务器和报表管理器执行此操作。
视图状态验证由 ASP.NET 控制。默认情况下,将启用视图状态验证并使用 Web 服务的标识来执行验证。但是,在 NLB 群集方案中,存在运行于不同计算机上的多个服务实例和 Web 服务标识。因为每个节点的服务标识都各不相同,所以您无法依赖单个进程标识来执行验证。
若要解决此问题,可以生成一个任意验证密钥来支持视图状态验证功能,然后将每个报表服务器节点手动配置为使用同一密钥。可以使用随机生成的十六进制序列。十六进制序列的长度由验证算法(如 SHA1)确定。
通过使用由 .NET Framework 提供的 autogenerate 功能,生成一个验证密钥和解密密钥。最后,您必须具有单个 <machineKey> 条目,您可以将该条目粘贴到扩展部署中每个报表管理器实例的 Web.config 文件中。
下面的示例说明了您必须获得的值。请不要将该示例复制到配置文件中,其中的密钥值是无效的。
<machineKey validationKey="123455555" decryptionKey="678999999" validation="SHA1" decryption="AES"/>
打开报表管理器的 Web.config 文件,并在 <system.web> 部分粘贴所生成的 <machineKey> 元素。默认情况下,报表管理器的 Web.config 文件位于 \Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager\Web.config 中。
保存该文件。
对扩展部署中的每个报表服务器重复上述步骤。
确保 \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 配置文件。
在文本编辑器中打开 RSReportServer.config。
查找 <Service> 部分,并将以下信息添加到配置文件,将 Hostname 值替换为 NLB 服务器的虚拟服务器名:
<Hostname>virtual_server</Hostname>
查找 UrlRoot。此元素未在该配置文件中指定,但是所使用的默认值是采用 http:// 或 https://<计算机名称>/<报表服务器> 格式的 URL,其中 <报表服务器> 是报表服务器 Web 服务的虚拟目录名称。
为 UrlRoot 键入一个包括群集虚拟名称的值,其格式为:http:// 或 https://<虚拟服务器>/<报表服务器>。
保存该文件。
对于扩展部署中的每个报表服务器,在其相应的 RSReportServer.config 文件中重复上述步骤。
验证报表服务器访问权限
验证是否可通过虚拟服务器名称(例如,https://MyVirtualServerName/reportserver 和 https://MyVirtualServerName/reports)访问扩展部署。
通过查看报表服务器日志文件或检查 RS 执行日志(该执行日志表包含的 InstanceName 列可以显示处理特定请求的实例名称),可以检查哪个节点实际处理报表。有关详细信息,请参阅 SQL Server 联机丛书中的Reporting Services 日志文件。
如果不能连接到报表服务器上,请检查 NLB 以确保请求发送到报表服务器,并查看报表服务器 HTTP 日志,以确保服务器接收请求。
对失败的请求进行疑难解答
如果请求未到达报表服务器实例,请检查 RSReportServer.config 文件,验证虚拟服务器名称是否指定为报表服务器 URL 的主机名:
在文本编辑器中打开 RSReportServer.config 文件。
查找 <Hostname>、<ReportServerUrl> 和 <UrlRoot>,并检查每个设置的主机名。如果该值不是预期的主机名,请将其替换为正确的主机名。
如果在做出以下更改后启动 Reporting Services 配置工具,则该工具可能会将 <ReportServerUrl> 设置更改为默认值。请始终保留一份配置文件的备份副本,以备需要用包含要使用的设置的版本替换该配置文件时使用。