Web Farm 2.0: Enhanced Auto Scaling Support
With Kentico 9, we bring you new Web Farm and Auto Scaling support built from the ground up. Cloud is slowly taking over as the preferred hosting environment, and cloud providers are enabling access to auto scaling technology for all subscribers. We, therefore, decided to rebuild our Web Farm support to accommodate better the needs of users for easy automatic setup and health tracking capabilities.
Kentico has been supporting environments consisting of multiple computing instances (Web Farms) for a long time now. Unlike most CMS solutions on the market, Kentico always enabled customers to increase the robustness of their environment by adding additional servers.
With the growing popularity of Cloud, customers are easily able to configure their environment to scale a number of instances running Kentico automatically, based on simple rules. Rules can be based on the number of page views, concurrent users, or CPU or memory utilization of the current environment, and the environment can be scaled up or down accordingly. With such a dynamic environment, it is essential to be able to identify newly added or recently removed instances and adopt whatever synchronization mechanism they use to keep multiple instances in sync (content and media files). With Kentico 9, we are introducing new setup modes and monitoring capabilities.
The new Web Farm support optimized for cloud deployments is now much easier to set up. As you do not rely on third-party modules or synchronization tools, you just need to pick a setup mode (Manual or Automatic) and you are good to go. We recommend the Automatic mode for most Web Farm environments. This mode dynamically adds and removes Web Farm servers from the system. The Manual mode makes sense in scenarios where the number of instances is going to stay the same, and you are connecting to instances via a proxy gate of some sort (e.g. special port of the FW).
To provide users with an overview of the health of instances in the environment, we added new health tracking capabilities. Looking at the list of registered instances you can see the health status displayed for each entry – Healthy, Transitioning, and Not responding. The status is updated regularly based on whether the particular instance shows signs of activity or not. Instances flagged as Not responding are reported to the admin via an email notification.
Only healthy instances are kept in sync with the rest of the environment. That way, the system does not spend unnecessary resources trying to keep dead instances in sync and adds great performance and stability boosts for the entire system. The new monitoring system ensures that the system is not overloaded while trying to synchronize groups of inactive instances removed on the fly by the cloud provider (either as a result of auto scaling rules applied or during maintenance).
The system is smart enough to recognize if an instance previously rendered as not responding returns to a healthy status (for example, after a failover procedure restores the instance). If the instance becomes unresponsive for over 24 hours, the automatic mode removes information about this instance from the system completely. In manual mode, the system stops generating most of the synchronization tasks for the impacted server until that server comes back up or is removed manually by the user. A good example of when an instance may become unresponsive and then healthy again is during regular maintenance (SW or HW).
Obvious benefits of the new Web Farm synchronization support, besides fully automated setup, are increased performance and robustness of the system (especially in rule-based, auto scaling enabled cloud environments). An optimized synchronization process helps to minimize the amount of data transferred between instances, aiding system performance. And with monitoring, health statuses, and basic self-healing capabilities it is our most advanced synchronization support yet.
If you want to learn more, please join us on Kentico 9 -Web Farm Support webinar.
Enjoy! And leave a comment if you have any questions.