Azure - 在阶段动态发现服务Web角色URL

her*_*son 6 azure azure-configuration

我正在考虑将现有的应用程序移动到Azure.它将在一个Web角色中具有MVC应用程序,在另一个Web角色中具有一些WCF服务.在线直播时,该网站将会存在http://www.myapp.com并且服务将http://api.myapp.com与MVC应用配置为指向服务http://api.myapp.com.

问题是将应用程序推送到Azure上的"阶段"配置时.我的理解是,每次推送到舞台都会使服务生活在一个新的网址(一些随机的东西http://4aa5ae2071324585ba5a902f4242a98c.cloudapp.net/).在这种情况下,我的MVC应用程序发现服务网址的最佳方式是什么?

一种选择是设置dns条目,http://stage.api.myapp.com并在每次推送到舞台时更新我的​​DNS CNAME记录以指向新的Azure临时URL,但是......哎呀.

另一个选择是推送到阶段,获取服务的新URL,RDC到MVC角色的每个实例并手动更新配置.还好.

有一个简单的方法吗?我知道我可以用PowerShell之类的东西自动执行上面的一些步骤,但我真的希望Azure框架中有一些东西可以让它变得简单.看起来这将是一个标准的场景.

dun*_*nry 6

动态发现登台URL的唯一方法是让实例检查自己的deploymentID.我假设MVC网站和WCF服务在同一部署中.如果检查RoleEnvironment.DeploymentID,您会发现这与staging中使用的"随机"URL完全一​​致(即http:// [deploymentID] .cloudapp.net).

只要您在客户端上动态创建ChannelFactory,它就应该能够获取自己的DeploymentID并找到暂存URL.

当然,这仅在部署到分段时有用.你为什么不简单地使用生产槽?该名称是稳定的,您可以依赖它或您为其设置的CNAME(更有可能).您可以随时拥有多个托管服务(dev,QA,prod等),只需使用它们上的生产槽即可.

  • 这不是好习惯!对于角色之间的通信,您需要使用仅用于此目的的端点.对不起,我已经投票了,但我真的觉得不按照你的建议去做这件事很重要. (2认同)
  • 我觉得你错过了这个问题.这是如何动态发现临时插槽.只有两种方法(我概述并使用mgmt API) - 这是我所回答的.我不同意使用interrole comm是一个好主意,如果可能的话,但有时人们真的需要使用Load Balancer地址,他没有澄清. (2认同)