Horizon Reports can run in Clustered mode if running in a Web Farm. Additional configuration is necessary when running in Clustered mode.

All servers in a cluster must have synchronized clocks. Made sure to use some form of time-sync service on each server in the cluster.

SQL Server

Two SQL Server databases are needed for Clustered mode.

Cache

A SQL Server database to use for caching is required for proper operation in a clustered environment. If you haven’t already created a caching database, use the dotnet sql-cache create command. For example:

dotnet sql-cache create "Data Source=dbserver;Initial Catalog=SQDistCache;uid=sa;pwd=sapassword" dbo SQWebCache

Once the caching database has been created, configure CacheConnectionString in options.json.

Scheduler

A SQL Server database is required for the scheduler. If you haven’t already done so, create a SQL Server server database for the scheduler, then configure SchedulerConnectionString in options.json.

ARR and IIS

Horizon Reports requires sticky sessions when running in a clustered environment. If you’re using ARR (Application Request Routing) with IIS, you can enable sticky sessions by doing the following:

  • On the ARR server, open IIS Manager
  • Under Server Farms, select the server farm entry for Horizon Reports
  • Double click the “Server Affinity” icon
  • Turn on the “Client affinity” option. Though it isn’t necessary, it’s recommended that you provide a unique “Cookie name” value.