9

通常,对 Azure 工作人员的访问是通过服务定义中定义的终结点完成的。这些端点必须是 TCP 或 HTTP(S),通过负载均衡器传递,然后连接到 Azure 机器的实际 IP/端口。

我的应用程序将从使用 UDP 中受益匪浅,因为我是从蜂窝设备连接的,在这些设备中,字节数是计费的,而 SYN/ACK/FIN 的开销使我发送的 8 字节数据包相形见绌。我什至考虑将我的数据直接放入 ICMP 消息头中。但是,负载均衡器不支持这些。

我知道您可以在 Azure 虚拟机上启用 ping,然后 ping 它们——http: //weblogs.thinktecture.com/cweyer/2010/12/enabling-ping-aka-icmp-on-windows-azure-roles.html .

是否有什么阻止我使用基于 TCP 的服务(通过负载均衡器公开),该服务只会分发 Azure VM 地址的 IP 地址和端口,然后让应用程序直接与该工作人员通信?(我必须自己处理负载平衡。)如果工作程序被关闭或移动,我的应用程序将足够聪明地重新连接到 TCP 端点并请求一个新的位置来发送数据。

这个概念是否有效,或者有什么东西可以防止这种直接访问?

4

2 回答 2

3

您必须运行自己的路由器,该路由器公开一个输入(外部)端点,然后路由到您服务的内部端点,无论是在同一角色上还是在不同角色上(这实际上是远程桌面的工作方式)。您不能通过选择直接连接到特定实例。

Benjamin Guinebertière 有一个由 2 部分组成的博客系列,描述了 IIS 应用程序请求路由以提供粘性会话(第 1部分,第 2 部分)。这可能是一个很好的起点。

Ryan Dunn 还在 Cloud Cover Show 上谈到了 http 会话路由,以及后续博客文章

我意识到这两个示例并不完全是您正在做的事情,因为它们正在路由 http,但它们具有相似的前提。

于 2011-04-18T13:29:16.713 回答
1

有一个叫做 InstanceInputEndpoint 的东西,您可以使用它来定义公共 IP 上的端口,这些端口将被定向到特定 VM 实例上的本地端口。因此,您将拥有可以直接访问特定 VM 的特定端口 + IP 组合。

  <InstanceInputEndpoint name="HttpInstanceEndpoint" protocol="tcp" localPort="80">
    <AllocatePublicPortFrom>
      <FixedPortRange max="8089" min="8081" />
    </AllocatePublicPortFrom>
  </InstanceInputEndpoint>

更多信息:http: //msdn.microsoft.com/en-us/library/windowsazure/gg557552.aspx

于 2013-11-20T16:44:18.773 回答