Configure a report server on a network load balancing cluster
If you're configuring a report server scale-out to run on a Network Load Balancing (NLB) cluster, you must do the following tasks:
Ensure that the NLB cluster is accessible through a virtual server name that maps to the virtual server IP address. A virtual server name is necessary so that you can configure a single point of entry to the NLB cluster. When you configure a URL for each report server instance, you specify the virtual server name as the host.
Configure view state validation to support interactive report viewing. Interactive reports are typically rendered numerous times during a single user session to visualize new or different data in response to user actions. By configuring view state validation, continuity is preserved within the user session regardless of which report server services the actual request.
Reporting Services doesn't provide functionality for load balancing a scale-out deployment or for defining a single point of access through a shared URL. You must implement a separate software or hardware NLB cluster solution to support a Reporting Services scale-out deployment.
You can install Reporting Services on nodes that are already part of an NLB cluster, or you can configure a scale-out deployment first and then install cluster software.
Steps for report server deployment on an NLB cluster
Use the following guidelines to install and configure your deployment:
Step | Description | More information |
---|---|---|
1 | Before you install Reporting Services on server nodes in an NLB cluster, check the requirements for scale-out deployment. | Configure a native mode report server scale-out deployment |
2 | Configure the NLB cluster and verify it's working correctly. Be sure to map a host header name to the virtual server IP of the NLB cluster. The host header name is used in the report server URL, and is easier to remember and type than an IP address. |
For more information, see the Windows Server product documentation for the version of the Windows operating system that you run. |
3 | Add the NetBIOS and Fully Qualified Domain Name (FQDN) for the host header to the list of BackConnectionHostNames stored in the Windows Registry.For example, if the host header name <MyServer> is a virtual name for the Windows computer name of "contoso," you can probably reference the FQDN form as contoso.domain.com . You need to add both the host header name (MyServer) and FQDN name (contoso.domain.com) to the list in BackConnectionHostNames . Then restart the computer to ensure the changes take effect. |
This step is required if your server environment involves NTLM authentication on the local computer, creating a loop back connection. If so, the requests between Report Manager and Report Server fail with 401 (Unauthorized). |
4 | Install Reporting Services in files-only mode on nodes that are already part of an NLB cluster, and configure the report server instances for scale-out deployment. The scale-out that you configure might not respond to requests that are directed to the virtual server IP. Configuring the scale-out to use the virtual server IP occurs at a later step, after you configure view state validation. |
Configure a native mode report server scale-out deployment (Report Server Configuration Manager) |
5 | Configure view state validation. For best results, perform this step after you configure the scale-out deployment, and before you configure the report server instances to use the virtual server IP. By configuring view state validation first, you can avoid exceptions about failed state validation when users attempt to access interactive reports. |
How to Configure View State Validation in this article. |
6 | Configure Hostname and UrlRoot to use the virtual server IP of the NLB cluster. |
How to configure Hostname and UrlRoot in this article. |
7 | Verify the servers are accessible through the host name you specified. | Verify report server access in this article. |
Configure view state validation
To run a scale-out deployment on an NLB cluster, you must configure view state validation so that users can view interactive HTML reports. You must configure view state validation for the Report Server Web Service.
To run a scale-out deployment on an NLB cluster, you must configure view state validation so that users can view interactive HTML reports.
ASP.NET controls view state validation. By default, view state validation is enabled and uses the identity of the Web service to perform the validation. However, in an NLB cluster scenario, there are multiple service instances and web service identities that run on different computers. Because the service identity varies for each node, you can't rely on a single process identity to perform the validation.
To work around this issue, you can generate an arbitrary validation key to support view state validation, and then manually configure each report server node to use the same key. You can use any randomly generated hexadecimal sequence. The validation algorithm (such as SHA1) determines how long the hexadecimal sequence must be.
Applies to: SQL Server Reporting Services (2016)
Autogenerate a validation key and decryption key by using the functionality provided by the .NET Framework. In the end, you must have a single
<machineKey>
entry that you can paste into theWeb.config
file for each Report Server instance in the scale-out deployment.The following example provides an illustration of the value you must obtain. Don't copy the example into your configuration files; the key values aren't valid.
<machineKey validationKey="123455555" decryptionKey="678999999" validation="SHA1" decryption="AES"/>
Open the
Web.config
file forReportserver
, and in the<system.web>
section paste the<machineKey>
element that you generated. By default, theWeb.config
file is located in\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\Reportserver\Web.config
.Save the file.
Repeat the previous step for each report server in the scale-out deployment.
Verify that all
Web.Config
files for all report servers in the scale-out deployment contain identical<machineKey>
elements in the<system.web>
section.
Applies to: SQL Server Reporting Services (2017 and later) Power BI Report Server
Autogenerate a validation key and decryption key by using the functionality provided by the .NET Framework. In the end, you must have a single
<machineKey>
entry that you can paste into theRSReportServer.config
file for each report server instance in the scale-out deployment.The following example provides an illustration of the value you must obtain. Don't copy the example into your configuration files; the key values aren't valid. Report server requires the correct casing.
<MachineKey ValidationKey="123455555" DecryptionKey="678999999" Validation="SHA1" Decryption="AES"/>
Open the
RSReportServer.config
file forReportserver
, and in the<Configuration>
section paste the<machineKey>
element that you generated. By default, theRSReportServer.config
file is located in\Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer\RSReportServer.config
for Reporting Services. For Power BI Report Server, the file is located in\Program Files\Microsoft Power BI Report Server\PBIRS\ReportServer\RSReportServer.config
.Save the file.
Repeat the previous step for each report server in the scale-out deployment.
Verify that all
RSReportServer.config
files for all report servers in the scale-out deployment contain identical<MachineKey>
elements in the<Configuration>
section.
How to configure Hostname
and UrlRoot
To configure a report server scale-out deployment on an NLB cluster, you must define a single virtual server name that provides a single point of access to the server cluster. Then register this virtual server name with the Domain Name Server (DNS) in your environment.
After you define the virtual server name, you can configure the Hostname
and UrlRoot
properties in the RSReportServer.config
file to include the virtual server name in the report server URL.
Configure the Hostname
property when you're using wildcard URL reservations in your reporting environment. When you specify the Hostname
property to be the virtual server name of the NLB server, network traffic for the reporting environment is directed to the NLB server. The NLB then distributes requests among the report server nodes.
Additionally, configure the UrlRoot
property so that report links work in reports that are exported to static reports, such as in an Excel or PDF format, or in reports that subscriptions generate, such as e-mail subscriptions.
If you integrate Reporting Services with Windows SharePoint Services 3.0 or Office SharePoint Server 2007, or you host your reports in a custom Web application, you might need to configure only the UrlRoot
property. In this case, configure the UrlRoot
property to be the URL of the SharePoint site or Web application. This configuration directs network traffic for the reporting environment to the application that handles the reports rather than to the report server or NLB cluster.
Don't modify ReportServerUrl
. If you modify this URL, you introduce an extra roundtrip through the virtual server each time an internal request is handled. For more information, see URLs in configuration files (Report Server Configuration Manager). For more information about editing the configuration file, see Modify a Reporting Services configuration file (RSreportserver.config).
Open
RSReportServer.config
in a text editor.Find the
<Service>
section, and add the following information to the configuration file, replacing theHostname
value with the virtual server name for your NLB server:<Hostname>virtual_server</Hostname>
Find
UrlRoot
. The element is unspecified in the configuration file, but the default value used is a URL in this format:https://
orhttps://<computername>/<reportserver>
, where<reportserver>
is the virtual directory name of the Report Server Web service.Type a value for
UrlRoot
that includes the virtual name of the cluster in this format:https://
orhttps://<virtual_server>/<reportserver>
.Save the file.
Repeat these steps in each
RSReportServer.config
file for each report server in the scale-out deployment.
Verify report server access
Verify that you can access the scale-out deployment through the virtual server name (for example, https://MyVirtualServerName/reportserver
and https://MyVirtualServerName/reports
).
You can check which node actually processes reports by looking at the report server log files or by checking the RS execution log (the execution log table contains a column called InstanceName that shows which instance processed a particular request). For more information, see Reporting Services log files and sources .
If you can't connect to the report server, check the NLB. Ensure that requests are sent to the report server and view the report server HTTP log to ensure that the server is receiving the requests.
Troubleshooting failed requests
If requests don't reach the report server instances, check the RSReportServer.config file to verify that the virtual server name is specified as the host name for the report server URLs:
Open the
RSReportServer.config
file in a text editor.Find
<Hostname>
,<ReportServerUrl>
, and<UrlRoot>
, and check the host name for each setting. If the value isn't the host name you expect, replace it with the correct host name.
If you start the Reporting Services Configuration tool after making these changes, the tool might change the <ReportServerUrl>
settings to the default value. Always keep a backup copy of the configuration files in case you need to replace them with the version that contains the settings you want to use.