1
Vote

Add support for multiple instances

description

Investigate potential of adding support for multiple role instances

comments

abediggs wrote Nov 10, 2012 at 8:49 PM

One way to do this would be with Blob leases and an eventing mechanism through the service bus to all instances of the ftp role.

Steve Marx shows how you can manage instance privileges with blob leases: http://blog.smarx.com/posts/leasing-windows-azure-blobs-using-the-storage-client-library

Eventing between role instances is demonstrated here:
http://code.msdn.microsoft.com/windowsazure/Simple-Publish-Subscribe-d406eb03

The scheme would be as follows:
1) Instance receives ftp request from azure load balancer, and attempts to acquire lease on appropriate root directory blob.
2a) If acquired lease, carry on, renewing lease until the client closes the connection or it times out.
2b) Else, broadcast the request via the service bus to all other currently-running instances. The one that has the lease will be able to manage the request.

In this way, you can maintain your one-instance-one-datastore access pattern, while adding n instances. Because blob leases expire (and that expiration is managed by the platform), even when an instance crashes with leases intact they would become available to clients again soon (by default within 60 seconds).

Thoughts?

wrote Feb 14, 2013 at 7:06 PM