【问题标题】:Can Windows Azure roles detect which datacenter the roles are in?Windows Azure 角色可以检测角色所在的数据中心吗?
【发布时间】:2012-05-19 11:27:13
【问题描述】:
我们的 Windows Azure 角色需要以编程方式了解角色所在的数据中心。
我知道一个 REST API (http://msdn.microsoft.com/en-us/library/ee460806.aspx) 返回位置属性。
如果我部署到美国西部,REST API 会返回美国西部作为位置属性。
但是,如果我部署到 Anywhere US,则该属性是 Anywhere US。
我想知道我们的角色在哪个数据中心,即使 location 属性是 Anywhere US。
我问的原因是我们的角色需要从 Windows Azure 存储中下载一些数据。
从同一个数据中心下载数据是免费的,但从不同数据中心下载数据是免费的。
【问题讨论】:
标签:
azure
azure-role-environment
【解决方案1】:
这是一个很好的问题,我已经与不同的合作伙伴讨论过几次。根据我在您创建服务并提供您希望此服务的位置(“美国中南部”或“美国任何地方”)时的理解,此信息存储在您的 Azure 订阅中特定于您的服务的 RDFE 服务器上。因此,当您选择“美国中南部”或“美国中北部”等固定位置时,实际部署到该位置的服务和确切位置将被存储,但是当您选择“美国任何地方”时,选择“南部中心”或“North Central”在内部完成,但所选位置从未更新到与您的服务相关的 RDFE 服务器。
这就是为什么每当您尝试通过 SM API 或 Powershell 或任何其他方式在订阅中获取与您的服务相关的位置信息时(即使在 Azure 门户上它也被列为“美国任何地方”,因为信息来自同一存储) ,您将获得在服务创建期间首先选择的内容。
只要您可以从 Windows Azure 团队发布的给定 IP 地址范围验证您的服务位置 IP 地址,@Sandrino 的想法就可以工作。
【解决方案2】:
两天前微软发布了XML file containing a list of IP ranges per region。根据此文件和您的角色的 IP 地址,您可以找到该角色已部署在哪个数据中心。
<?xml version="1.0" encoding="UTF-8"?>
<regions>
...
<region name="USA">
<subregion name="South Central US">
<network>65.55.80.0/20</network>
<network>65.54.48.0/21</network>
...
</subregion>
<subregion name="North Central US">
<network>207.46.192.0/20</network>
<network>65.52.0.0/19</network>
...
</subregion>
</region>
</regions>
注意:此 XML 文件似乎未涵盖新的数据中心(美国西部和东部),这可能使其在您的情况下无用。
【解决方案3】:
我在 Anywhere US 部署了一些服务,为了找出它部署在哪个数据中心,我必须记录与 Microsoft 的支持电话。他们很有帮助,给了我信息,但即使是他们也不得不离开去查一下。因此,我永远不会使用“Anywhere ...”位置。了解您的服务在哪个数据中心运行对于了解在哪里部署诸如 SQL Azure 和服务总线之类的东西非常重要,这些东西不支持关联组并且没有 Anywhere 选项。