Azure实例数量及可用性保证

 

偶然碰到这样一个情形,部署在Azure上的一个应用的webRole的instance找不到了。

虽然这种情形很少见,但需要了解一下这个现象,及对设计、开发和部署是否有其他要求,以确保app的可用性。

在目前的Windows Azure Platform的Portal里,创建一个新的部署的时候,系统会给出一个提示框,如下面的截图:

 5734.20120822-small.tif

主要提示是:

Warning: This deployment has at least one role with only one instance. We recommend that you deploy at least two
instances per role to ensure high availability in case one of the instances becomes unavailable. Doing so also enables coverage of the Windows Azure
Compute SLA (http://go.microsoft.com/fwlink/?LinkID=159704&clcid=0x409), which guarantees 99.95% uptime. For more information please visit here
(http://go.microsoft.com/fwlink/?LinkID=202707).  Find more solutions in the Windows Azure support forum (http://go.microsoft.com/fwlink/?LinkID=206235).

 

就是说为了保证instance的高可用性,部署时建议至少部署2个实例,这样才能达到Windows
Azure Compute SLA里承诺的99.95%的uptime。

 

关于这个问题的深入讨论,可以参考Buck Woody的文章:

http://blogs.msdn.com/b/buckwoody/archive/2012/03/20/why-do-i-need-two-roles-in-windows-azure.aspx

 

初步总结一下,一些要点包括:

1、部署时至少部署2个实例

2、多个实例的部署对于升级期间的可访问性亦有帮助

3、设计开发时需要考虑到多实例的场景,在对一些原来的代码迁移到Azure环境的时候,需要评估原先的程序是否实现了无状态stateless,可以考虑将一些必须保留的state保存在Windows Azure Storage或者SQL Azure

4、定期监控instance部署的健康度