【问题标题】:Simple internal communication between Azure VMs on the same Virtual Network同一虚拟网络上的 Azure VM 之间的简单内部通信
【发布时间】:2014-05-23 14:36:32
【问题描述】:

我在同一个云服务的同一个虚拟网络中创建了 2 个虚拟机。它们没有公共端点。我希望虚拟机能够相互识别,就好像它们在本地网络上一样。例如,我希望能够使用 \\ 语法通过机器名称引用它们,例如在 VM1 上,我希望能够访问 \\VM2_host_name\shared_folder。谁能提供配置我的虚拟机以启用此方案的步骤。

注意:我尝试通过它们的内部 IP 地址引用它们,并且还在 Windows 防火墙中启用了 ICMP 流量。我什至完全关闭了两台机器的防火墙只是为了测试。没运气。即使没有防火墙,我也无法通过另一台机器的主机名或 IP 地址 ping 这些机器。我还查看了类似的问题,例如 (Azure VMs Virtual Network inter-communication),但无济于事。

更多信息:

我正在尝试从 VM_A(内部 IP 10.0.0.5)与 VM_B(内部 IP 10.0.0.4)通信。两个虚拟机都属于同一个云服务“MyCloudServiceName”。对于这个测试,我还关闭了他们的防火墙,只是减少了起作用的变量。

C:\Users\Matt>NSLookup VM_B
Server:  UnKnown
Address:  168.XX.XXX.XX

Non-authoritative answer:
Name:    VM_B.MyCloudServiceName.hX.internal.cloudapp.net
Address:  10.0.0.4


C:\Users\Matt>ping VM_B

Pinging VM_B.MyCloudServiceName.hX.internal.cloudapp.net [10.0.0.4] with 32 bytes of data:
Reply from 10.0.0.5: Destination host unreachable.
Reply from 10.0.0.5: Destination host unreachable.
Reply from 10.0.0.5: Destination host unreachable.
Reply from 10.0.0.5: Destination host unreachable.

Ping statistics for 10.0.0.4:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)

所以我可以说 DNS 解析正在工作。但即使在同一个云服务中,这些机器仍然彼此隔离。

请注意,我的实际情况是我有一个 ASP.NET Web API 自托管在运行在一台机器上的服务上,我希望能够在内部从同一云服务中的另一台访问该服务。

【问题讨论】:

    标签: azure


    【解决方案1】:

    我们遇到了类似的问题,这是由于网络适配器的校验和卸载造成的。 感谢 Microsoft Azure 支持帮助我们诊断问题。

    简单的解决方法是在每台机器上运行它,然后快速重启:

    Disable-NetAdapterChecksumOffload * -TcpIPv4

    这里有一篇文章更详细地描述了这个问题: http://systemscentre.blogspot.com.au/2013/05/problems-clustering-virtual-machines-on.html

    【讨论】:

      【解决方案2】:

      PING 可能无法正常工作,因为它在网络环境中经常被禁用。所以我建议使用 NSLookup 来验证它是否能够解析另一台服务器的位置。

      如果两个 VM 已经在同一个云服务中,则不需要虚拟网络,因为 Azure 在该云服务边界内提供基本的 DNS 解析。通过在每台服务器上执行 NSLookup -all,您应该能够识别他们当前使用的名称。

      一旦您确认它们可以相互解决,如果您没有使用不受支持的协议(例如 UDP 多播),那么让它们相互解决应该不会有任何其他问题。

      【讨论】:

      • 我刚刚尝试了 NSLookup,似乎 DNS 解析工作正常。他们可以互相解决。现在看来问题与实际通信无关。我在上面编辑了我的问题,并在此评论中添加了一些关于更多细节的注释。
      • 1) ping 服务是否在 VM_B 上运行? 2) 您尝试连接到 VM_B 上的哪个端口以及您尝试连接的方式?
      • 是的,我通过 RDP'ing 到 VM_B 验证了 ping 作为服务正在 VM_B 上运行,启动 cmd 然后 ping localhost,它工作正常。对于 ping 测试,我只是 ping 主机名,所以没有指定端口。我正在使用命令行。
      • 让我们尝试另一种方法。确保 IIS 在具有默认网站的两台机器上运行。使用浏览器和您发现的 DNS 名称,尝试从其他服务器加载每个服务器上的网站。来自 VM_A 的又名,打开浏览器并转到 VM_B
      • 试过了,但没有用。这是从浏览器中看到的错误消息:“连接已超时 VM_B 的服务器响应时间过长。该站点可能暂时不可用或太忙。请稍后再试。如果您无法加载任何页面,检查您计算机的网络连接。如果您的计算机或网络受到防火墙或代理的保护,请确保允许 Firefox 访问 Web。”请注意,我还通过访问 VM_B 上的 VM_B 仔细检查了服务器是否正在运行,并且能够观察到网页已加载。
      猜你喜欢
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      相关资源
      最近更新 更多