情况是这样的,我在一个云服务 A 上部署了一个应用程序,在另一个云服务 B 下部署了另一个虚拟机。例如,这两个云服务都在同一个亲和力组 (AG1) 下。
我在云服务 A 下部署了一个 Web 应用程序,该应用程序与在云服务 B 下的 VM 上部署的 Redis 实例进行通信。
在我的应用程序配置(部署在云服务 A 下)中,我将 Reids VM 的 IP 设置为云服务 B 的公共 IP,并且运行正常。对 Redis 的请求正在正确处理,并且数据在我的应用程序和 VM 之间存储和获取没有任何问题。
最近我开始遇到一些停机时间,虚拟机无法通过公共 IP 访问。我尝试 ping 公共 IP,但没有成功。好像 IP 无法访问。我尝试使用私有虚拟机 IP 进行 ping,成功了,因此我更改了配置以使用 redis 虚拟机的私有 IP。
我的配置有什么问题吗?或者是 Azure 基础设施不稳定。公共 IP 没有改变,只是无法访问了。几个小时后我尝试了一下,它就正常 ping 回来了。
我的所有配置都很简单干净,只是同一数据中心和关联组中的云服务。如果有帮助的话,VM 有 Ubuntu Linux,使用默认的 Azure 映像安装。端点上没有 ACL 或任何东西
此情况没有日志,IP 根本没有响应,也没有 Windows 或 Linux 错误日志。
答案1
Azure 中的云服务 IP 不是静态的,当您关闭云服务时它们就会发生变化。
不要在应用程序配置文件中硬编码 IP,而是使用永远不会改变的云服务 DNS 地址,并且无论云服务使用什么 IP,DNS 名称都会始终转换为该 IP。
您可以使用的另一种解决方法是使用 PowerShell 将云服务设置为使用静态 IP 地址,请在此处阅读有关此内容的更多信息:http://azure.microsoft.com/blog/2014/05/14/reserved-ip-addresses/