使用内部客户端对Windows 2012 VM进行负载平衡

时间:2012-12-21 11:38:49

标签: azure load-balancing azure-virtual-machine

我在一个云服务中设置了两个VM(win 2012)设置。每个VM都运行一个简单的TCP服务,该服务接受连接并在客户希望的时候保持连接。

问题是我无法从同一个客户端连接两次端点(当然是不同的TcpClient对象)。

未运行负载平衡时可以这样做。

服务器尝试连接到自身时也会出现问题(由于某些延迟编码)。第一次,没关系。第二次连接它与“服务器没有响应”消息有关。

我的问题很简单:是否可以多次从同一主机连接?

2 个答案:

答案 0 :(得分:0)

如果需要,可以在每个虚拟机上设置特定端口(基本上是将流量转发到特定虚拟机的端点)。 Michael Washam在他的帖子here中说明了这一点。您将创建端点,但不是负载平衡端点。然后,您的客户端应用程序需要选择要连接的服务器(基于端口号)。也许随机选择?

相反,如果您正在寻找客户端连接到单个端口的“粘性服务器”解决方案,请将其负载平衡到其中一个VM,然后保留在该VM上:您需要使用像haproxy,nginx等在自己的VM中运行的东西,根据你设置的规则将流量转发到各个vm。

答案 1 :(得分:0)

您的问题是有效的,并且是为了其他任何人的利益:

由于Azure软件负载均衡器使用循环算法,因此无法连接到同一服务器。因此无法保证每个请求将连接到哪个服务器。

http://www.windowsazure.com/en-us/manage/windows/common-tasks/how-to-load-balance-virtual-machines/

“Windows Azure提供对公共定义的云服务端口的网络流量的循环负载平衡”

这就是为什么另一个答案中的单个端口方法是强制与特定服务器通信的唯一方法。