Update: The Cloud Samurai projects pre-dates Windows Azure Web Sites feature. The technology behind
both is similar - IIS/ARR. But since Windows Azure Web Sites is a fully supported service with high availability, SLA, and features like auto scaling, portal integration, TFS/Git integration, we encourage you to use it.
The Cloud Samurai Project, aka. (Project Bowlus), is a complete code sample demonstrating a hosted multi-tenant approach on Windows Azure utilizing the IIS Application Request Routing (ARR) extension.
The Windows Azure solution contains two roles; a front end which is a gateway responsible for routing traffic to the correct apphost, and the application host which is responsible for deploying and running the tenant applications.
A tenant application is deployed in to a seperate IIS application directory and runs in a seperate application pool on an instance of the apphost role. The front ends are updated to route traffic to the instance of the apphost containing the tenant deployment.
These front ends also monitor for a topology change and will coordinate moving tenant instances across apphosts in response to apphost failures or increases in resources. Simply put, if an apphost instance goes down, tenants running on that instance will then
be provisioned on a healthy instance and routes will be updated. If a new apphost instance is added, some tenants will be moved to the new instance in order to rebalance the load across the available resources. The application simply distributes tenants across
instances based on count and no other factors. This could certainly be extended to distribute tenants based on other factors such as size, utilization, etc...
This sample was developed by the Developer & Platform Evangelism
group at Microsoft, supported by
Full Scale 180 and other community volunteers.
- Visual Studio 2010 SP1
- Windows Azure SDK 1.5
- Windows Azure Subscription
- DNS configured with wildcard subdomain (alternatively you could test using hosts file and simply add a bunch of tenant hosts)
We tried to keep the various technologies used in this solution to a minimum in order to simplify the setup and configuration of this solution. You will be able to run and test most of the functionality in this solution in the Windows Azure Emulator but
not all of it.