枚举Azure中的所有云服务实例

时间:2016-12-08 00:38:05

标签: azure cloud cluster-computing load-balancing

我的云服务默认部署了两个实例,并具有自动扩展功能,使Azure可以根据需要部署其他实例。我需要发信号通知当前正在运行的所有实例,以使其内部缓存无效。理想情况下,通过POST到面向公众的网址。但Azure负载均衡器会将请求随机路由到其中一个实例。

我可能可以利用服务总线主题/订阅来解决问题,但这看起来有点过分。有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

来自https://msdn.microsoft.com/library/azure/microsoft.windowsazure.serviceruntime.roleenvironment.changing.aspx

  

RoleEnvironment.Changing Event

     

在将更改服务配置应用于正在运行的角色实例之前发生。

     

更改事件和已更改事件一起用于识别和管理服务模型的配置更改。通过使用更改事件,实例可以响应配置更改[...]

说实话,我不记得你是怎么做的,但我相信我非常接近:

private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e) 
{
   if ((e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange))) 
   {
      // Deal with e.Cancel
      // Invalidate cache
   }
}

以下是有关配置更改触发的事件的更多信息:
https://azure.microsoft.com/en-us/blog/responding-to-role-topology-changes/

  

下图显示了包含单个角色的示例方案中触发的事件。最初部署了2个实例,然后将部署扩展到4个实例,然后再降低到3个实例,最后部署停止。

     

events