CXO Software 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 Software on multiple servers.
Load balancing for the CXO Software Web Application
CXO Software 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 Software 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 Software 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:
Component | Type | Applicability | Comments |
---|---|---|---|
Web Reporting Suite | IIS Web application | Must be installed on every server | |
Storyboard Export Service | Windows Service | Must be installed on every server | |
Agent Service | Windows 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-Configurator | Windows application | Must be installed on every CXO-Cockpit server | |
CXO Source System Manager | Windows application | Should 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.
Component | Type | Applicability | Comments |
---|---|---|---|
Web Reporting Suite | IIS Web application | Must be installed on every web server | |
Storyboard Export Service | Windows Service | Must 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 Service | Windows 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-Configurator | Windows application | Must be installed on every CXO-Cockpit server | |
CXO Source System Manager | Windows application | Should 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.
- Create services in the Configurator for all of the installed components on every server
- Disable CXO-Cockpit Agent Service on all the machines except one
- Create and Configure Backplane database
Configure load balancing across all the CXO-Cockpit web servers and enable sticky sessions on the load balancer
Load Balancer configuration requirements
- "Sticky sessions" scenario must be cofigured: 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"
- The requests to the CXO-Cockpit server should include the following headers:
- "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.
- "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.