当我们把一个应用部署到Windows Azure,投入生产以后,我们往往需要更新这个应用。例如:修改Bug, 增加新功能等等。这时,为了确保生产环境的服务可用性,我们不希望一次更新带来很长宕机时间。本文针对Java应用,利用Eclipse与Windows Azure平台交互,实现一种最小宕机时间(几乎为0)的系统更新方法。
阅读本文,读者需要事先了解:
1. Windows Azure SDK in Eclipse
2. Windows Azure Cloud Service基本概念
3. 最好有一个已经部署到Azure Cloud Service的应用
要具备以上三方面的知识,读者可以根据这个例子一步步做下来: http://blog.csdn.net/shaunfang/article/details/8585708 。
本文介绍的方法共分为三步:
1. 把最新版本的应用程序部署到“过渡环境” (Staging Environment)
2. 在“过渡环境”对应用程序进行上线前测试
3. 将“过渡环境”切换到“生产环境”。把最新版本的应用程序部署到“过渡环境”
把最新版本的应用程序部署到“过渡环境”
首先,在Eclipse中把最新版本的应用程序部署到相应的云服务。注意,这里一定要选择"Staging"环境。
部署成功后,我们登录到Windows Azure管理界面,会看到这个应用的访问地址,是一串随机产生的字符串,同时也有不同于生产环境的VIP。我们可以通过这个URL,对应用程序进行测试。
对比生产环境,我们可以看到他们的SITE URL和PUBLIC VIRTUAL IP (VIP) ADDRESS都不一样:
注意, 如果在Eclipse部署时得到HTTP 409错误。类似下面的错误信息:
Failed : HTTP error code : ResourceNotFound:The resource service name hostedservices is not supported.
您需要做的是,删除Azure存储帐号中的"eclipsedeploy"目录。在Windows Azure Eclipse Plugin 2.2.1版本中,这个问题得到了解决。
在“过渡环境”对应用程序进行上线前测试
将“过渡环境”切换到“生产环境“
这里需要注意的是:
1. "Staging"环境和"Production"环境的规模必须一致。例如,如果Production环境中有3个web role, 3个worker role,那么Staging环境也需要是相同的配置。
2. 由于建立了"Staing"环境,虚机的个数相当于加倍。为了节省开销,请注意及时删除Staging环境。