Azure虚拟网络混合连接

时间:2017-11-14 16:39:16

标签: azure azure-virtual-network

我在网络中设置了Azure虚拟网络和虚拟机设置。我已经在VM上安装了Hybrid Connection Manager应用程序。

我还有一个Azure应用服务,并且我已经创建了它与VM之间的混合连接,并且他们都声称他们很高兴彼此连接。

同样在VM上我已经安装了一个正在监听http://localhost:1234

的应用

有人可以告诉我我的应用服务中使用的IP与VM上的http://localhost:1234通话吗?例如是[VM内部IP]:1234还是[VM公共IP]:1234,还是别的什么。目前没有什么在说话,所以我想确保IP地址不是问题。

2 个答案:

答案 0 :(得分:3)

只需使用VM的计算机名称即可。例如,从App Service中的代码中调用SQLSRV009:1234。门户中的混合连接定义应该反映相同的名称(与计算机名称相同,与您从代码中调用的名称相同)。

查看完整图片的精心编写的指南 - https://docs.microsoft.com/en-us/azure/biztalk-services/integration-hybrid-connection-create-manage

  

可以将混合连接端点设置为IP地址。 如果您使用的是IP地址,则可能会或可能不会访问内部部署资源,具体取决于您的客户。

     

混合连接取决于客户端进行DNS查找。在大多数情况下,客户端是您的应用程序代码。 如果客户端未执行DNS查找,(它不会尝试将IP地址解析为域名(xxxx)),则不会通过混合发送流量连接。

     

例如(伪代码),您将10.4.5.6定义为本地主机:   以下方案有效:
  Application code -> GetHostByName("10.4.5.6") -> Resolves to 127.0.0.3 -> Connect("127.0.0.3") -> Hybrid Connection -> on-prem host

     

以下情况不起作用:
  Application code -> Connect("10.4.5.6") -> ?? -> No route to host

同时让您的应用在0.0.0.0或私有IP上收听,因为我并非非常确定localhost可以与HC合作。

为什么不在网络应用中使用VNET集成?您需要做的就是在VNET中创建基于路由的(IKEv2)VPN网关,如下所示 - https://docs.microsoft.com/en-us/azure/app-service/web-sites-integrate-with-vnet

答案 1 :(得分:2)

你应该使用VM host name,感谢evilSnobu' link

  

如果您使用IP地址,则可能会或可能不会到达内部部署   资源,取决于您的客户。

如果使用VM public IP,流量数据包将通过Internet传输到VM而不是VPN隧道。 localhost只能在VM中使用。

此外,如果您的应用正在监听localhost(127.0.0.1),则该服务只能访问您的VM。正如evilSnobu所说,您需要在0.0.0.0private IP(like 10.0.0.4)上修改您的服务。您可以使用以下命令进行检查。

对于Linux

netstat -ant|grep 1234

适用于Windows

netstat -ant|findstr 1234