我是Azure的新手(罢工1)并且非常厌恶网络(罢工2)。
尽管如此,我已经在同一个虚拟网络中启动并运行了两个虚拟机;一个将充当Web服务器,另一个充当SQL数据库服务器。
虽然我可以看到他们的内部IP地址都在同一个网络中,但我无法验证这些机器是否可以相互通信,并且对于解决此问题的适当位置感到困惑。
微软自己的文档说
您在Windows Azure中创建的所有虚拟机都可以 使用专用网络通道与其他通道自动通信 同一云服务或虚拟网络中的虚拟机。 但是,您需要将端点添加到计算机以获取其他资源 在Internet或其他虚拟网络上与之通信。您 可以将特定端口和协议关联到端点。资源 可以使用TCP或UDP协议连接到端点。 TCP 协议包括HTTP和HTTPS通信。
那么为什么这些机器至少不能通过内部IP相互ping通?是Windows防火墙妨碍了吗?我开始怀疑我是否为简单的Web服务器/数据库服务器设置选择了错误的方法。请原谅我的无知。任何帮助将不胜感激。
答案 0 :(得分:13)
如果两台计算机都在同一个虚拟网络中,那么只需关闭Windows防火墙,他们就可以互相ping通。另一种方法是在Windows防火墙中使用高级设置允许所有传入的ICMP流量。
但是有一个技巧。两台机器都会通过IP地址看到对方,但在如此定义的虚拟网络中将会有无名称解析。这意味着您将无法通过名称ping,而只能通过直接IP地址ping。因此,如果希望您的网站(在VM1上)连接到SQL Server(在VM2上),您必须通过完整的IP地址而不是机器名称来解决它。
在虚拟网络中进行名称解析的唯一方法是使用专用DNS服务器,您可以在本地维护和配置。
This article详细介绍了Windows Azure中的名称解析方案。你的具体情况如下:
位于的虚拟机和角色实例之间的名称解析 相同的虚拟网络,但不同的云服务
如果您将虚拟机设置为相同的云服务,则可能实现名称解析。因此,您甚至不需要专用的虚拟网络。
答案 1 :(得分:0)
如果您的虚拟机位于Azure中的虚拟网络中,那么您必须确保两件事。
我试图从另一个VM连接到安装了SQL Server DB的一个VM。我必须在安装SQL的VM中启用1433端口。为此,您需要在Azure管理门户上向VM添加MSSQL端点。之后,我禁用了Windows防火墙。然后我就可以从另一个连接到VM了。