Set up a web-farm for Creatio application server
You can enhance the performance of large-scale Creatio projects (up to several thousand users) through horizontal scaling, i.e., increasing the number of servers with deployed Creatio applications and distributing the workload between them.
The load balancer may be either hardware or software. To work in fault-tolerant mode, use the HTTP/HTTPS traffic balancer that supports the WebSocket protocol. Creatio has been tested on HAProxy software load balancer. There are cases of successful implementation of other balancers, e.g., Citrix, Cisco, NginX, FortiGate, MS ARR.
This guide covers horizontal scaling of Creatio application using a free open-source load balancer (HAProxy), designed for distributing the load between several application servers.
General deployment procedure
To deploy Creatio with horizontal scaling of .NET Framework application servers:
1.Deploy all needed Creatio application instances in a web-farm.
Note
It is recommended to specify identical names in IIS and the Application pool setting for all instances of the application.
2.Specify the same SQL and Redis databases in the ConnectionStrings.config file for all instances.
<add name="redis" connectionString="host=DOMAIN.COM;db=0;port=6379;maxReadPoolSize=10;maxWritePoolSize=500"/>
<add name="db" connectionString="Data Source=DOMAIN.COM;Initial Catalog=DatabaseName;Integrated Security=SSPI; MultipleActiveResultSets=True;Pooling-true;Max Pool Size=100"/>
3.In the <appSettings> block of the application’s “Web.config” file, add the following key:
<add key="TenantId" value="1" />
The “value” number should be the same for all application instances of the web-farm.
Attention
Starting with Creatio version 7.14.1, the <add key="TenantId" value="...”/> key can only be added to the internal Web.config file (Terrasoft.WebApp\Web.config). Adding the key to an external Web.config file may lead to application failures.
4.For each application, specify the same machineKey values for all sites in the Web.config file.
5.Grant access permissions to created application directories for the IUSR user and the user who launches the Application pool in IIS.
6.Set up a load balancer (e.g., HAProxy) for distributing the workload between the deployed application servers.
7.If necessary, set up workload balancing for database and session servers.
Note
More information about the clustering setup is available in the MSSQL and Oracle user guides. The fault tolerance setup using Redis Sentinel is described in a separate article.
To deploy Creatio with horizontal scaling of .NET Core application servers:
1.Deploy the needed number of Creatio application instances.
2.Specify the same SQL and Redis databases in the ConnectionStrings.config file for all instances.
3.Navigate to the root application directory of any application instances (the root directory contains the Terrasoft.WebHost.dll file).
4.Run the following command:
dotnet Terrasoft.WebHost.dll configureWebFarmMode
As a result, configuration files of the current application instance will be updated.
5.Copy all configuration files of the current application instance to the root folders of the other application instances.
6.Set up a load balancer (e.g., HAProxy) for distributing the workload between the deployed application servers.
7.If necessary, set up workload balancing for database and session servers.
Note
More information about the clustering setup is available in the documentation provided by the vendor of the DBMS. The fault tolerance setup using Redis Sentinel is described in a separate article.
See also