我在网络中设置了Azure虚拟网络和虚拟机设置。我已经在VM上安装了Hybrid Connection Manager应用程序。
我还有一个Azure应用服务,并且我已经创建了它与VM之间的混合连接,并且他们都声称他们很高兴彼此连接。
同样在VM上我已经安装了一个正在监听http://localhost:1234
的应用有人可以告诉我我的应用服务中使用的IP与VM上的http://localhost:1234通话吗?例如是[VM内部IP]:1234还是[VM公共IP]:1234,还是别的什么。目前没有什么在说话,所以我想确保IP地址不是问题。
答案 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.0
或private IP(like 10.0.0.4)
上修改您的服务。您可以使用以下命令进行检查。
对于Linux
netstat -ant|grep 1234
适用于Windows
netstat -ant|findstr 1234