【问题标题】:Strange behaviour with Azure web role IP addresses in IISIIS 中 Azure Web 角色 IP 地址的奇怪行为
【发布时间】:2011-08-04 23:06:20
【问题描述】:

测试用例:

  • 使用标准 asp.net 网站模板创建了新的云项目。
  • 已部署。

默认配置在端口 80 上定义了一个端点,没有任何主机头。

我原以为这会转化为一个绑定

*:80:

然而,它实际上创建了一个绑定:

10.211.196.111:80:

10.211.196.111 是 Web 角色实例的 IP 地址。

如果我们查看机器上的可用 IP 地址,我们有 2 个:

  1. 10.211.196.111
  2. 2001:0:4137:9e76:c8c:387d:f52c:3b90

有趣的是,如果我们将 IIS 绑定更改为侦听所有 IP 地址*:80,则网站实际上停止工作。相反,我们得到一个503 - Service unavailable 错误。

为什么这对我很重要?好吧,我们最近一直在为 Web 角色使用 Azure 加速器,并且发现如果您不指定主机名,它就不起作用。原因如上所述,它会将空主机名解释为*.80,这当然会导致 503 错误。

所以第一个问题是 - 有人可以解释这种行为(为什么监听所有 IP 地址不起作用)以及第二个 IP 地址的用途是什么?

由于看起来我需要修补 azure 加速器以使其使用实例的特定 IP 地址,因此推荐的查找方法是什么?您认为寻找以Microsoft Virtual Machine Bus Network Adapter 或特定子网开头的适配器是否安全?

谢谢,

【问题讨论】:

标签: iis azure


【解决方案1】:

我相信另一个 IP 地址用于 VM 中的第二个网络适配器,用于 VM 和结构控制器之间的内部通信。您可能无权绑定到该其他地址(因此通配符“所有未分配的 IP 地址”映射不起作用)。

但是,我不太相信这一点。如果(我相信您所说的)Windows Azure Accelerator for Web Roles 将所有内容绑定到 *:80:hostname,这似乎证明您可以进行这样的绑定。

无论如何,要获取 IP 地址,您只需使用 RoleEnvironment.CurrentRoleInstance.Endpoints["name"].IPEndpoint。我认为对于 name,您需要 HttpIn 作为加速器。您可以尝试在该代码中使用该 IP 地址而不是“*”,看看是否有帮助,但请注意管理 UI 本身具有通配符映射,因此您可能会遇到某种冲突(并且无法其他管理更改),除非您还更改管理 UI 以侦听特定主机名。

【讨论】:

  • 谢谢 - 我打算在周末做这个。我已经将管理 UI 移到了不同​​的端口,因此冲突应该不是问题。我尚未对其进行测试,但我认为管理 UI 不需要通配符绑定。最重要的是,无论管理 UI 使用哪个端口,您都要为端口 80 添加端点 - 否则 Web 部署将无法工作(我发现很难):)
猜你喜欢
  • 2013-06-19
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多