如果需要对一个云服务下的不同虚拟机实现负载均衡,可以将Public Port的消息通过负载均衡转发到每个VM,从而实现请求的自动负载均衡。

具体拓扑如下:

azure 四层负载均衡器配置 微软云负载均衡_结点

我们可以对之前创建的这两台虚拟机,设置80端口的负载均衡。

azure 四层负载均衡器配置 微软云负载均衡_azure 四层负载均衡器配置_02

注意:Azure的负载均衡目前只支持四层,不能保留Session。

负载均衡的算法是Azure设置好的,不能修改。算法主要依赖于五元组(source IP, source port, destination IP, destination port, protocol type)。

 

Azure虚拟机在默认情况下,只开启了RDP的端口和PowerShell的端口,其他的端口都是关闭的。

 

我们为了测试,安装并开启2台虚拟机的web服务,并添加80端口的终结点。

azure 四层负载均衡器配置 微软云负载均衡_负载均衡_03

安装web服务,第二台截图略

azure 四层负载均衡器配置 微软云负载均衡_IP_04

测试第一台WEB服务,正常!

azure 四层负载均衡器配置 微软云负载均衡_azure 四层负载均衡器配置_05

第二台web服务器。

(注意:为了区分效果,2台web网页内容设置为不一样,实际情况下应该相同)

 

首先在第一台虚拟机上添加终结点,并创建负载均衡群集

azure 四层负载均衡器配置 微软云负载均衡_结点_06

点击“添加”

azure 四层负载均衡器配置 微软云负载均衡_azure 四层负载均衡器配置_07

添加独立终结点

azure 四层负载均衡器配置 微软云负载均衡_负载均衡_08

指定终结点名称“HTTP”,协议TCP,公用端口80,私有端口80,勾选“创建负载平衡群集”

azure 四层负载均衡器配置 微软云负载均衡_负载均衡_09

设置负载平衡群集名称NLB-HTTP,探测协议TCP,探测端口及间隔,保持默认

azure 四层负载均衡器配置 微软云负载均衡_IP_10

第一台虚拟机终结点创建完成,

 

切换到第二台虚拟机

azure 四层负载均衡器配置 微软云负载均衡_结点_11

终结点页面

azure 四层负载均衡器配置 微软云负载均衡_结点_12

添加

azure 四层负载均衡器配置 微软云负载均衡_IP_13

选择将终结点添加到负载平衡群集“NLB-HTTP”

azure 四层负载均衡器配置 微软云负载均衡_负载均衡_14

设置终结点名称HTTP,其余默认

azure 四层负载均衡器配置 微软云负载均衡_负载均衡_15

第2台虚拟机终结点添加完成。

 

下面开始测试

找一台本地计算机,我们使用2个浏览器chrome和IE,模拟2个用户访问,效果如下:

IE

azure 四层负载均衡器配置 微软云负载均衡_负载均衡_16

chrome

azure 四层负载均衡器配置 微软云负载均衡_结点_17

测试完成。

Azure Load Balancer(负载均衡器)的规则,是由五要素组成source IP, source port, destination IP, destination port, protocol type

参考资料:http://azure.microsoft.com/blog/2014/04/08/microsoft-azure-load-balancing-services/

azure 四层负载均衡器配置 微软云负载均衡_IP_18

最新的Azure Load Balancer可以将规则进行修改,改为2要素,(Source IP,Destination IP)或3要素(Source IP, Destination IP, Protocol)。这样由同一个客户端发起的请求,会指向同一个Azure目标服务器。通过这种方式,就可以保留Session。如下图所示:

azure 四层负载均衡器配置 微软云负载均衡_IP_19