在这里http://blog.csdn.net/haoxiaozigang1/article/details/12198679跟大家分享了NLB配置的过程,下面写一些对NLB不同情况的下测试的结果:
首先,准备一些工具:
1. Fiddler2,用来查看请求的分配情况,当然这个工具还有其他强大的功能,今天,我们只用很小的功能;
2.Web Performance Test1.0,用来发送并发请求,给服务器施加压力,可以到这里http://www.cnblogs.com/smark/archive/2013/05/16/3081606.html下载。
其次呢,我们了解一下NLB里面端口规则的设置:
a.右键群集-->群集属性
b. 打开端口规则属性对话框
下面是对各个属性的解释,:
群集IP地址:指定规则所针对的群集IP
端口范围:默认为所有,可以指定群集监听的端口范围(如从80到80,表示只针对web服务实现负载均衡)
协议:指定群集所服务的协议类型
筛选模式:
a:多个主机:
I 无相似性(None): 客户端的服务请求会平均分配到群集内的每一部服务器。假设NLB群集内有2部服务器。当接到客户端的请求时,NLB会将第1个请求交由第1部服务器来处理,第2个请求交由第2部服务器来处理,第3个请求交由第1部服务器来处理,…依此类推。因为所有客户端联机会平均分配到每一部服务器,因此可以达到最佳的负载平衡。如果需要执行交易处理,为了能够共享session状态,则必须将session状态集中储存在state或database server中,这种方式适用于大部分的应用程序。
II 单一相似性(Single):客户机的服务请求会固定分配到群集内的某一部服务器。当接到客户机的请求时,NLB会根据客户机 的IP来决定交由哪一部服务器来处理,也就是一部服务器只会处理来自某些IP的请求。因为一个IP的服务请求只会固定由一个服务器来处理,因此没有session状态共享的问题,但可能会导致负载不平衡。这种方式适用于联机需支持 SSL 集多重联机的通讯协议 ( 例如FTP与PPTP等)
III 网络(类C):根据IP的Class C屏蔽来决定交由哪一部服务器来处理,也就是一部服务器只会处理来自某些网段C的请求。这种方式可确保使用多重 Proxy 的客户端能导向到相同的服务器。
b.单一主机:若选择此选项,该端口范围内的所有请求都将由一台主机来进行处理,此选项将配合后面的主机优先级来进行主机判定。
c. 禁用此端口范围:一般这个选项会在端口例外中进行设置,也就是说,当我们指定了一个比较大的范围端口时,其中有一个或几个端口我们不需要 客户端用户访问到,这时我们将利用这个规则来进行设定,防止用户访问此端口请求。
其中比较关键的参数是筛选模式,可能看了后有些费解,尤其是第三类网络(类C),我是真心不知道是啥意思,有懂的朋友跟我分享一下。
今天,我们只关注前两个,None和Single,这两个好理解,None是服务器会把请求平均分配到每个节点节点上,拿上一节的例子说的话,就是NLB2和NLB3都会收到;
Single呢,服务器会把请求发到一个节点上,要么这个节点down掉或超负荷,会转移到其他节点,不然会集中在一个节点上处理。
好,现在准备工作做完了,那就开始我们的负载测试旅程:
场景一:
多个主机,单一相似性,负载量相等,即各50%。
预测结果:同一个节点处理所有请求。
1. 设置每个节点的负载量为相等。
a.右键NLB2节点-->主机属性-->端口规则-->负载量选equal.
2.打开Fiddler2,清空左侧的Session记录,为了方便查看结果,最好关闭所有的浏览器,因为Fiddler2会捕捉到所有的http请求。
3.配置Web Performance Test1.0,关于这个工具的使用,大家可以在下载网站了解, 我的配置如下,
4.点击“测试”;
5.查看Fiddler2,如下:
6.分析调用结果,从上图我们看到,请求都是一样,我们怎么知道是NLB2还是NLB3处理的呢?
从上一节,我们可以看到他们的返回值不一样,所以我们利用这点去过滤他们,这时需要使用到Fiddler的查找功能,点击“Find”按钮在工具栏上,搜索NLB2,会看到都是NLB2返回,这是NLB自动将所有请求导向到同一个服务器去处理,和预测结果一致:
场景二:
多个主机,无相似性,负载量相等。
预测结果:节点平均处理请求。
1. 设置群集的相似性为无。
a.右键群集-->群集属性,然后切换到端口规则项
b.点“Edit...”-->相似性(Affinity)选无(None),OK.
c.设置每个节点的负载量为50%.
d.清空Fiddler2的Session列表,点击Web Performance Test1.0 的测试按钮,完成后,在Fiddler2里面查找NLB2,结果如下:
我们看到请求的分配比较均匀,和预测结果吻合。
场景三:
多个主机,无相似性,NLB3节点负载量30%,NLB2节点70%。
预测结果:70%请求由NLB2处理。
1. 修改NLB2为70%;
2.修改NLB3的负载量为30%,操作同上。
3.清空Fiddler2的Session列表,执行压力测试,完后,在Fiddler2里面找NLB3,结果如下:
我们看到大部分请求被NLB2处理,和预测结果一致。
场景四:
单个主机
预测结果:所有请求由优先级高的NLB3节点处理。
1.设置群集的端口规则的过滤模式为单主机。
2.执行测试,完后,再Fiddler2里面查找NLB3,结果如下:
我们看到所有请求被NLB3处理,和预测的结果一致。