首页 文章

Azure角色不 Health (继续回收),但阻止我进行VIP交换

提问于
浏览
1

我有一个Worker角色的配置,以及一个带有几个实例的Web角色 . 有些实例似乎不 Health ,看起来它们不断重启 .

azure管理门户提供以下状态:

Busy (Starting role... Runtime is initializing. [2014-07-02T08:38:18Z])

喜欢..不断 .

所以我猜他们出于某种原因是不 Health 的 . 我已经将新部署上传到登台服务器,但是我无法进行VIP交换,因为这会给我以下错误:

Failed to swap the deployments in cloud service poulescom. Windows Azure is currently performing an operation on this deployment that requires exclusive access.

所以现在我陷入了某种僵局,并且无法在不占用整个网站的情况下在线获取 Health 的新版本!

谁知道该怎么办?

enter image description here

Azure instances

1 回答

  • 4

    这是当前Azure平台实现中的一个主要错误,任何人都可以通过以下方式随时复制 . 将此行添加为角色入口点 OnStart() 的第一行:

    throw new InvalidOperationException();
    

    构建包并将其部署到 生产环境 槽中 . 然后删除此行,构建另一个包并将其部署到临时插槽中 . 暂存槽中的那个将运行得很好, 生产环境 槽中的那个将被回收 . 这是预期的部分 . 意想不到的部分是,当您尝试交换时,您将面临需要独占访问错误消息 .

    现在按照以下方式考虑它 . 如果 生产环境 槽中的部署不是因为故意种植错误而是因为直到最近才发生的一些意外错误而进行回收,该怎么办?就像它工作了几天然后一些可重复的未处理异常开始被抛出其中一个实例,现在你的部署部分降级了 .

    你想做什么?我想你会修复这个bug,构建一个新的包,将它部署到staging slot然后尝试交换 . 这样做会导致始终需要独占访问错误消息 . 您希望无缝交换部署以防止停机,但为此设计的功能在您最需要的时候不起作用 .

    您无法在当前实现中解决此问题 . 您要么等到两个部署都停止回收(当然不能保证),要么您可以执行以下操作:

    • 修复并重新部署暂存,直到它运行正常

    • 测试登台部署

    • (非常小心)删除 生产环境 部署

    • 执行交换(是的,您可以在非空分段和空 生产环境 槽之间切换)

    上面的序列将导致你大约一分钟的停机时间(并且很多神经细胞丢失),但它总比没有好 .

相关问题