• 1 min read

Scalable Umbraco CMS solution for Azure Web Apps

Build and deploy Umbraco CMS solution for Azure Web Apps using Azure Resource Manager template.

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

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.

      image

  • 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.

References

Getting started with Umbraco CMS

Extend your Umbraco CMS using Umbraco Projects