如何在 Azure 中不同位置的两个虚拟机上运行客户端-服务器程序?

如何在 Azure 中不同位置的两个虚拟机上运行客户端-服务器程序?

我在 Azure 中创建了两台虚拟机。其中一台位于澳大利亚南部,另一台位于印度中部。我在一台机器上运行客户端程序,在另一台机器上运行服务器程序。它们无法相互连接。经过一番谷歌搜索后,我在两台虚拟机中创建了网络安全组,并添加了以下入站和出站规则。

来源-任意

目的地 - 任意

服务 - 定制 (任意/32000-32200)

操作 - 允许

我正在程序中连接到 32000-32200 之间的端口,但机器仍然无法相互连接。我使用的是 Ubuntu Server 16.04 和经典部署模型。我恳请您帮助我。我附上了我的网络安全组的屏幕截图和 netstat 命令的输出。

网络安全组

网络状态

答案1

不同区域的两个 VNet 之间的通信就像 Azure 本地通信一样。正如 Sam 所说,两个 VNet 之间没有直接连接。根据您的描述,您使用公共 IP 进行 VM 通信。我建议您按以下方式检查:

1.请使用将端口 32000-32200 从一个 Azure VM 连接到另一个 VM,以便进行telnet测试。

2.检查结果netstat -ant|grep 32000(Linux),请确保您的端口正在监听tcp0.0.0.0

3.在 Azure NSG 上打开端口,按照你说的,已经添加好了。注意 Azure NSG 可以关联到虚拟机的网卡或者 Vnet 的子网。

4.检查虚拟机的防火墙。如果您的虚拟机是 Windows 操作系统,则需要在 Windows 防火墙上打开端口(入站规则)。

更新:

对于经典虚拟机,您应该在 Endpoint 上打开端口,更多信息请参阅此处关联

答案2

您希望如何在它们之间建立连接?由于您的机器位于不同的区域,因此它们位于不同的虚拟网络中,因此它们之间没有开箱即用的直接连接。您可以通过以下两种方式之一进行设置:

  1. 如果您的应用程序旨在通过互联网在客户端和服务器之间进行通信,那么您需要做的就是使用公共 IP 设置您的服务器,然后在网络安全组和您的机器防火墙中打开所需的端口。所有通信都将通过公共互联网进行,因此您可能需要使用 SSL 等。

  2. 如果您希望通过专用网络进行通信,则需要使用 VNet 到 VNet VPN 将它们连接起来。由于您的 Vnet 位于不同的区域,因此您无法使用 VNet 对等连接。设置 VPN 后,您将能够通过机器的专用 IP 进行通信。您仍然需要在 NSG 和防火墙中打开端口。请参阅本文有关如何创建 VPN。

答案3

首先检查应用程序端口连接。如果无法进行 telnet,则在 Linux 的防火墙中打开该端口。之后,您可以检查应用程序配置,检查是否使用了正确的地址和端口。

相关内容