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.

In addition to scaling for performance reasons, Xperience uses web farms by default for all sites. Web farm functionality ensures synchronization between the live site application (MVC or ASP.NET Core) and the Xperience administration application.

Native web farm support in Xperience provides the following features:

  • Synchronization of cached content and object data across all web farm servers.
  • 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 illustrates the structure of a web farm environment and demonstrates how the synchronization works:

Web farm schema

If you change some settings or content, or upload a file using server 192.168.1.2, the other servers do not know about this change in a standard scenario. However, if you are using web farm synchronization, the system automatically logs the changes into the database as web farm tasks.

The system uses the CMS_WebFarmServerTask database table to find tasks created for the current server. On the application side, a routine runs in a separate long running thread which continuously polls the database to find the tasks.

Before you can start using web farm synchronization, you need to make sure that all servers that make up a web farm are configured in the system. See Configuring web farm servers.

Note: The web farm support does not replace load-balancing or web farm management tools.