Setting up web farms

Web farms distribute computing among multiple web servers that all provide the same content. Each server increases the number of requests that the web farm can serve, which allows you to scale the performance of the website. You can also use web farms to achieve high availability — if one of the servers in the web farm stops working, the other servers continue to run the site.

Native web farm support in Kentico provides the following features:

  • Synchronization of changes made to the site settings on one of the servers to all other servers.
  • Synchronization of files uploaded to the site between all servers. This is used only if you store uploaded files on the disk or on both disk and in the database.

The following image shows the structure of a web farm and how the synchronization works:

If you change some settings or upload a file using server 192.168.1.2, the other servers do not know about it in a standard scenario. However, if you are using web farm synchronization, the system automatically creates a new synchronization task in the database, and notifies the other servers to process their task. To learn more about how the synchronization works, see Web farm synchronization mechanisms.

To learn how to add web farm servers into the system and configure them, see Defining web farm servers.

Note: The web farm support doesn't replace load-balancing or web farm management tools.



SSL in a web farm environment

If you use an SSL offload device or accelerator as part of your web farm and your website is configured to require SSL for the administration interface or on specific pages, you may encounter problems with redirection loops.

For this type of scenario, you need to add some custom code to your website according to the instructions in SSL accelerator support.

Using port numbers to identify web farm servers

If your environment uses unique port numbers to identify web farm servers (for example with a load balancer that internally maps URLs to ports), the system generates certain types of URLs with the internal port number. Such URLs may not be processed correctly, leading to problems with the related features (for example GetResource requests for files).

To resolve these problems, add the following key into the appSettings section of the web.config file on all servers:

<add key="CMSURLPort" value="80" />

The key ensures that the system generates all URLs without the port number (the default HTTP port is used).