Scalability and Load balancing

CXO-Cockpit can be scaled out to multiple servers to increase the system responsiveness and/or to implement failover scenarios. This article explains how to install the CXO-Cockpit on multiple servers.

Load balancing for the CXO-Cockpit Web Application


CXO-Cockpit web application can be installed on several servers. There should be a load balancer provided by the destination infrastructure that passes the HTTP(s) requests from the clients through to one of the available CXO-Cockpit servers. The only requirement to the load balancer is that it must implement "sticky sessions" scenario: all subsequent requests from a certain client must end up to the same CXO-Cockpit server as the first request from that client. The most typical implementation of this scenario is "Cookie-based Persistence". In this scenario the load balancer appends a cookie to the first client's request that cookie is used later on to identify the server all the subsequent requests should be forwarded to.

Deployment Strategies

CXO-Cockpit is delivered as an IIS web application, 2 Windows services and 2 Windows applications. There are 2 possible deployment strategy: Multi-purpose servers cluster and Dedicated web servers cluster + Jobs server installations. The primarily difference between them is whether the Windows services are going to be installed on every CXO-Cockpit Web server or on a separate server.

Option 1. Multi-purpose servers cluster

In this scenario every CXO-Cockpit server has all the components including Windows Services installed. In this setup all the servers are equal but the disadvantage of this scenario is the performance loss and extra load on the database server caused by additional running services. The following table demonstrates which components must be installed on every server:

ComponentTypeApplicabilityComments
Web Reporting SuiteIIS Web applicationMust be installed on every server
Storyboard Export ServiceWindows ServiceMust be installed on every server
Agent ServiceWindows Service

Must be installed on every server, but the service must only be enabled on one sever

The Agent service can be installed on every CXO-Cockpit server but the service must only be enabled on one sever. On all other servers the service must be disabled. If the server that hosts the running instance of the Agent crashes, a service on another server should be enabled and started. There should not be 2 or more instances of the Agent Service running at the same time.

The agent service is used for the background scenarios and not directly involved in the dashboard report generation. The system remains functional if the Agent Service is not working for a short period of time.

CXO-ConfiguratorWindows applicationMust be installed on every CXO-Cockpit server
CXO Source System ManagerWindows applicationShould be installed on the server

A client Windows-based tool. This tool is used to configure the connections to the external systems. In the future this windows tool will be replaced by a web-based version. It's still recommended to have this tool installed on every CXO-Cockpit server.

Option 2. Dedicated web servers cluster + Jobs server

In this scenario there are N CXO-Cockpit servers and 1 or more Jobs servers (previously called Application servers). The Job server is a server dedicated to the Windows Services. Typically 1 Application Server can handle all the load but extra Application Server might be required for the failover scenario.

ComponentTypeApplicabilityComments
Web Reporting SuiteIIS Web applicationMust be installed on every web server
Storyboard Export ServiceWindows ServiceMust be installed only on Jobs application server

The Storyboard Export Service is used for exporting of reports to PDF, Excel and Powerpoint files. The service is not directly involved in the dashboard report generation. The system remains functional if the service is not working but the export jobs will not be processed.

Agent ServiceWindows Service

Must be installed only on the Jobs server

The Agent service can be installed on every CXO-Cockpit server but the service must only be enabled on one sever. On all other servers the service must be disabled. If the server that hosts the running instance of the Agent crashes, a service on another server should be enabled and started. There should not be 2 or more instances of the Agent Service running at the same time.

The agent service is used for the background scenarios and not directly involved in the dashboard report generation. The system remains functional if the Agent Service is not working for a short period of time.

CXO-ConfiguratorWindows applicationMust be installed on every CXO-Cockpit server
CXO Source System ManagerWindows applicationShould be installed on the server

A client Windows-based tool. This tool is used to configure the connections to the external systems. In the future this windows tool will be replaced by a web-based version. It's still recommended to have this tool installed on every CXO-Cockpit server.

Installation guide

There are 2 main deployment strategies for the multi-server setup. CXO-Cockpit components should be installed according to the applicability for selected deployment strategy. After the installation of the CXO-Cockpit components, the following configuration steps must be performed.

  1. Create services in the Configurator for all of the installed components on every server
  2. Disable CXO-Cockpit Agent Service on all the machines except one
  3. Create and Configure Backplane database
  4.  Configure a network path for the export files location

    There should be specified a network path that is accessible from all the CXO-Cockpit servers. All the service accounts that CXO-Cockpit components are running under mush be authorized to change files at the specified location

  5. Configure load balancing across all the CXO-Cockpit web servers and enable sticky sessions on the load balancer

  6.  Specify load balancer url as CXO-Cockpit Dashboard Url

    There should be specified a load-balanced url

Load Balancer configuration requirements

  1. "Sticky sessions" scenario must be configured: all subsequent requests from a certain client must end up to the same CXO-Cockpit server as the first request from that client. The most typical implementation of this scenario is "Cookie-based Persistence"
  2. The requests to the CXO-Cockpit server should include the following headers:
    1. "X-Forwarded-Host" should contain the original host name used in the end-user request. This host name can only equal to the host name used in the CXO-Cockpit Dashboard URL (as configured in the Configurator), otherwise it will be ignored.
    2. "X-Forwarded-Proto" should contain the original protocol used in the end-user request. Note, that this header is not required if the same protocol (HTTPS) is used on load balancer and on the individual CXO-Cockpit servers.