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

时间:2014-07-02 08:46:42

标签: azure

我有一个Worker角色的配置,以及一个带有几个实例的Web角色。有些情况似乎不健康,看起来他们不断重启。

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

忙碌(开始角色......运行时正在初始化。[2014-07-02T08:38:18Z])

喜欢..不断。

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

无法在云服务poulescom中交换部署。 Windows Azure当前正在此部署上执行需要独占访问的操作。

所以现在我陷入了某种僵局,在没有整个网站的情况下无法在线获取健康的新版本!

任何人都知道该怎么做?

enter image description here

Azure instances

1 个答案:

答案 0 :(得分:4)

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

 throw new InvalidOperationException();

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

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

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

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

  • 修复并重新部署分段,直到运行正常
  • 测试暂存部署
  • (非常小心)删除生产部署
  • 执行交换(是的,您可以在非空的分段和空的生产槽之间切换)

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