Umbraco CMS is a popular .NET solution to bring quickly to market dynamic web applications using ASP.NET framework. Umbraco CMS earlier versions didn’t really support auto-scaling with Azure Web Apps but the latest 7.3 version release has improvements to support better load balancing when running the application on multiple instances and support auto-scaling with Azure Web Apps. Check out this session from Codegarden for more details.
Azure quick start template gallery has ready to use ARM template that will deploy a scalable Umbraco CMS application. Here’s what this template contains:
- Session state: This template creates an Azure Redis cache resource and pre-configures Umbraco CMS web app to use this newly created redis cache for session state caching.
- Media folder: Umbraco CMS stores all the media content on the file server by default and on Azure Web Apps the files are stored on a shared drive used by all instances running your web app. As I/O calls increase in your web app, the performance of the app degrades as well. Since media content is static, you can serve them faster by storing them on separate server which in turn will boost the website loading times. Azure blob storage is perfect solution for your static content. The implementation of a provider for Umbraco using blob storage is available here. This package creates an Azure storage resource and pre-configures Umbraco CMS to use that storage for all your app’s media content.
- Load balancing across multiple instances: Umbraco CMS (version <7.3) uses Examine (Lucence engine wrapper) for indexing the site content. This can cause many issues with load balancing when running your app on multiple instances and locks on Lucene indexes. With Umbraco 7.3 used by the package below, this issue has been resolved. Setting up a load balanced environment is reasonably easy to achieve and can be done with only a few configuration file changes, as mentioned here, for configuration using Cloud based auto-scale appliances. In order to use flexible load balancing of Umbraco , you MUST
- Setup 2 x Azure Web Apps – one for the master (administrative) environment and another for your front-end environment
- Setup 1 x SQL server that is shared with these 2 web apps.
How to install Scalable Umbraco CMS
- Go to Scalable Umbraco CMS template on Azure quick start template gallery.
- Click the Deploy to Azure button.
- Login to Azure preview portal using your Azure credentials.
- Enter all the information into the portal (see list of parameters below the image).
Parameter Name |
Description |
siteName |
Name of Azure Web App |
hostingPlanName |
Name of Azure Web App service plan |
siteLocation |
The location to use for creating the web app and hosting plan |
sku |
Choose either Standard or Premium Azure Web Apps pricing tiers; it defaults to Standard |
workerSize |
Worker Size( 0=Small, 1=Medium, 2=Large ) |
serverName |
SQL Azure DB Server name |
serverLocation |
The location of the database server; for best performance, this location should be the same as the location of the web app. |
administratorLogin |
SQL Azure DB administrator user login |
administratorLoginPassword |
Database admin user password |
databaseName |
Database Name |
edition |
SQL DB Sku: Standard,Premium |
storageName |
Storage Account Name |
storageAccountType |
Storage Account Type: Standard-LRS, Standard-GRS,Standard-RAGRS,Standard-ZRS |
redisCacheName |
Redis Cache Name |
redisCacheSKU |
Redis Cache Sku – Basic, Standard |
redisLocation |
The location to use for redis cache resource; this must be same as your web app location |
redisCacheCapacity |
Redis Cache Capacity, supported values from 0 to 6 representing cache tier name C0 to C6 |
nonAdminDatabaseUsername |
Non-admin Database User; must be unique |
nonAdminDatabasePassword |
Non-admin Database User password |
- Enter a resource group name and select your subscription. NOTE: All resources (Azure Web App + Azure Storage + Azure Redis cache + SQL Azure DB) MUST be in the SAME REGION for optimal performance.
- Click Create to initiate deployment. Umbraco CMS solution ready to run and scale on Azure Web Apps. Note, the template will take some time to deploy.