一.准备阶段:
操作系统:windows server 2003 中文企业版 32位
两个节点
节点A,计算机名:wina
IP地址: 外网---172.16.2.17用来做集群的网卡)
内网---10.10.10.10(用来内部通信的网卡)
节点B,计算机名:winb
IP地址: 外网---172.16.2.21(用来做集群的网卡)
内网---10.10.10.20(用来内部通信的网卡)
集群IP地址:172.16.2.100
二,配置阶段:
在节点A上:
1,开始---运行---nlbmgr出现下面画面:

wps_clip_p_w_picpath-28855
2.右键新建群集

wps_clip_p_w_picpath-5337

3.这里输入:集群IP,也就是虚拟IP地址172.16.2.100,注意这里选择多播
wps_clip_p_w_picpath-8322

4.这里如果你有多个集群IP(虚拟IP)可以在这里输入了,下一步

wps_clip_p_w_picpath-11144

5.端口规则,这里也是要重点讲的地方,这里作用非常大,这里我们保持默认,下一步

wps_clip_p_w_picpath-32229

6.选择节点,也就是这个负载均衡的真实服务器,这里我们先添加节点A
wps_clip_p_w_picpath-29748

注意了,这里输入内网IP,而不要输入外网IP,否则会有一个节点出现连接失败,为什么呢,这里输入内网作为集群和各个节点之间的同学,因为一旦配置了集群,各个成员的MAC地址变成了一样,所以会出现连接失败的提示,但是选择接口的时候一定要选择外网的接口,表示在这个网卡接口上配置均衡,下一步
7.这里不用你手动输入,当然你也可以手动输入这里的优先级,单IP地址不要动他,这里是个刚才的一个汇总

点击完成

wps_clip_p_w_picpath-12806

8.配置完成你可以看到窗口多了一个主机
wps_clip_p_w_picpath-7041

看到配置完成了就表示集群已经配置完成,并且添加了第一个节点,优先级为1
9.下面我们还要添加第二个节点B
wps_clip_p_w_picpath-9899

10.和刚才一样输入,记得IP不要输外网的,用内网的

wps_clip_p_w_picpath-23819

11.更改优先级,点击完成
wps_clip_p_w_picpath-26182

12.自此就完成了集群的所有配置
wps_clip_p_w_picpath-27058

 

概念讲解:

单播,多播,IGMP多播
我们一一来解释一下:
单播
我们知道交换机是基于端口转发数据帧的,端口和插在各个端口的服务器的网卡地址(MAC地址)是一一对应并且形成个MAC地址表,这个MAC地址表是通过“学习”的来的,这个学习就是通过广播得到的
而我们用集群采用单播的时候,windows集群会把这个集群中所有的节点的网卡地址改成一样的(并不是真的改了,而是对发出去的数据包的源MAC地址改成和虚拟IP的MAC一致),这就导致交换机无法通过学习形成MAC地址表,所以,交换机和集群IP以及集群中各个节点通信都要通过广播进行(MAC地址表的学习过程第一个就是广播),这样一来凡是这个MAC地址通信的集群虚拟IP就去回应接受,然后根据优先级或端口规则来分配给各个请求给各个真实服务器,从而达到负载均衡的目的
显然,这里有个遵循了通用协议(所有的交换机,路由器都遵循),所以,单播适用性非常强,可以在任何网络中都使用
但这很明显有个缺点就是会在交换机带来负担,同时,外网的网卡将无法进行通信,这就是为什么我在上面要选择内网来添加节点的原因了,多播不会有此问题
多播
在多播模式下,NLB不会修改NLB节点启用NLB的网络适配器的MAC地址,而是为它再分配一个二层多播MAC地址专用于NLB的通讯(此MAC地址称为群集MAC地址),这样NLB节点之间可以通过自己原有的专用IP地址进行通讯。但是在多播模式中,集群的各个节点所发送的针对群集IP地址MAC地址ARP请求的ARP回复会将群集IP地址映射到多播MAC地址,什么意思呢,想想,我们现在这两个节点和集群的一个IP,就一共有三个IP地址了,一个虚拟的,两个真实节点的IP,那真实节点在和虚拟IP通信的时候,会把这个虚拟IP当做一台真是的服务器,在内存里面会保持一个ARP表,这个表就会有IP地址和多播MAC地址,这在计算机时没有问题的,单有很多路由器和交换机却不允许这样,所以多播的通用性比较差
IGMP多播
IGMP 多播,它可以通过使用IGMP协议支持来使交换机只将NLB通讯发送到连接NLB节点的端口,而不是所有交换机端口。但是此特性必须要求交换机支持IGMP侦听,并且要求群集工作在多播模式了下

 

我们来详细解释一下端口规则
顾名思义,端口规则,就是集群上对端口的规则呗!!!
集群IP地址:这里也就是虚拟IP172.16.2.100,如果你有多个集群IP,这里可以选择,这里就是你要,这个事端口规则应用的对象!
端口范围:就是哪些端口,这里默认是0-65535,就是所有的端口了
协议:就是指,这些端口下哪些协议,有TCP,UDP,两者同时
筛选模式:这里有三种:1,多主机模式;2,单一主机模式;3,禁用模式:
这个模式就非常关键了
多主机模式:是指根据这里的端口规则来负载均衡下面会详细讲
单一主机模式:不管三七二十一,请求按照前面设置的优先级来处理,什么意思呢,就是不管你用户有多少请求,全部发往优先级低先处理,除非这个优先级低的节点挂球了,那么才会把请求转发到次优先级的节点处理,这有点像双机热备了,而不是负载均衡了
禁用端口模式:什么意思呢,是指凡是这些端口的这些协议都禁止通过集群,相当于防火墙功能
下面我来重点看一下多主机模式
多主机模式:他对于相似性分了三种情况:1,无;2,单一;3,类C
什么是相似性呢,例如,我们在访问一个网站的时候,可能会同时打开很多这个网站的不同网页,就会发出不同的请求,单这些请求都是你一个人发的,所以是同一个IP上发出的,这些请求就叫做相似性请求
举一反三,同一个局域网,例如公司NAT上网,网吧代理上网,几百号人用的都是同一个IP地址,他们的请求也是相似性请求,所以,微软在这里给多主机模式更加细化来处理,这样能更加有效的分布你的请求,是均衡达到极致
无:是指来自同一个客户端的同一个IP地址的多条请求随机分配给各个节点,他是随机分配请求的,注意,这里如果是UDP的请求请不要选择无,所以当为协议设置选择“UDP”或“二者”时应避免使用“无
单一:是指NLB要把同一个客户的所有请求发给这个集群组中的固定节点处理,这是相似性默认的,这个事根据IP地址来判断的,而不是用户端来判断,举个例诶子,网吧里很多客户,但他们的IP地址都是一样的,所以这里会把这些客户端都当成是一个客户端,他们的请求都会发往同一个节点。同时,同一台电脑的不同请求也发往这个集群的同一个节点处理
C类:是指把所有TCP/IP中的C类地址全部转发给同一个集群组处理(不是单个节点哟,是集群组,集群组里面可能包含了多个接地那呢)

 

二.测试

1.分别在2台server上安装iis,创建网站,内容可以不一样(生产环境中必须一样)

此处使用域名www.nlb51idc.com做测试,iis内需要把域名绑定到voip上,也就是172.16.2.100

Web1:172.16.2.17

wps_clip_p_w_picpath-21893

Web2:172.16.2.21

wps_clip_p_w_picpath-30073

测试相似性

此参数仅适用于多主机筛选模式。

“无”选项指定来自同一客户端 IP 地址的多条连接可由不同的群集主机(无客户端相似性)处理。为了使网络负载平衡可以正确处理 IP 片段,当为协议设置选择“UDP”或“二者”时应避免使用“无”。

单一

“单一”选项指定了网络负载平衡应该将来自同一客户端 IP 地址的多个请求导向同一群集主机。这是相似性的默认设置。

通过启用“类 C”选项而不是“单一”选项,可以可选地修改网络负载平衡客户端相似性,以便将来自“TCP/IP C 类”地址范围(而不是单个 IP 地址)的所有客户端请求导向单个群集主机。该功能确保了使用多个代理服务器访问群集的客户端可将其 TCP 连接导向同一群集主机。在客户端站点使用多个代理服务器会导致来自一个客户端的请求看起来像源自不同的计算机。假设所有客户端的代理服务器都是在同一“类 C”地址范围内,则启用“类 C”选项将确保正确地处理客户端会话。如果不需要此性能,请使用“单一”选项,以便在使用客户端相似性时最大限度提高缩放性能。

类C

类 C相似性指定网络负载平衡将来自同一个 TCP/IP C 类地址范围的多个请求定向到同一台群集主机。

启用“类 C”相似性而不是“单一”相似性确保了使用多个代理服务器访问群集的客户端可以将其 TCP 连接导向同一群集主机。在客户端站点使用多个代理服务器会导致来自一个客户端的请求看起来像源自不同的计算机。假设所有客户端的代理服务器都是在同一“C 类”地址范围内,则“类 C”相似性将确保正确地处理客户端会话。如果不需要此性能,请使用“单一”相似性,以便最大限度提高放缩性能。

启用“单一”或“类 C”相似性确保了只有一个群集主机处理属于同一客户端会话的所有连接。如果在群集主机上运行的服务器应用程序维护着连接之间的会话状态(例如“server cookies”),则这是非常重要的。

同时,需要着重指出的是,这并不保留同后台数据库的会话状态。在后台数据库中,正在发生涉及许多不同计算机的许多不同事务处理。一旦连接终止,会话状态也将终止。

禁用相似性会改进负载平衡,因为这就允许由不同群集主机并发处理来自同一客户端的多个连接。要使放缩性能最大,请在不需要现相似性时禁用客户端相似性(使用单击“无”选项)。但是,为了使网络负载平衡可以正确处理 IP 片段,当为协议设置选择“UDP”或“二者”时应避免使用“无”。

要点

使用网络负载平衡对 ××× 通信(如 PPTP/GRE 和 IPSEC/L2TP)进行负载平衡时,必须将控制处理 ××× 通信的端口(TCP 端口 1723 用于 PPTP,UDP 端口 500 用于 IPSEC)的端口规则配置为使用“单一”或“类 C”相似性。 

 

首先设置为“无”

wps_clip_p_w_picpath-23105

刷新前

wps_clip_p_w_picpath-20785

刷新后

wps_clip_p_w_picpath-25340

对于集群组:172.16.2.100,凡是80端口的TCP协议(http协议)请求,不管你是否来自同一个客户端的同一个请求,都会随机的分配到这个集群中的各个节点(2.17和2.21),完全随机!!!

设置为“单一”

wps_clip_p_w_picpath-22137

测试:

多次刷新依然是次界面,

wps_clip_p_w_picpath-7000

wps_clip_p_w_picpath-24808

更换源ip测试

wps_clip_p_w_picpath-15653

wps_clip_p_w_picpath-9559

单一说明:

IPA IPB IPC IPD

SERVER A SERVER B

IPA --SERVERA

IPB --SERVERB

IPC --SERVERA

IPD –SERVERB

对于集群组:172.16.2.100,凡是80端口的TCP协议(http协议)请求,不同的客户端IP地址会随机的分配到这个集群中的各个节点(2.17和2.12),单同一个IP地址的不同请求却发往这个集群主机中的他第一次分配的节点上

举个例子说,一共有1000个客户端访问2.100,那么1000个客户端根据IP会随机分配到不同的节点上,但是同一个IP的客户的所有请求都会发往他第一次分配的节点上!!!,看到不同了吗

设置为“类C”

wps_clip_p_w_picpath-10999

使用不同段ip测试

wps_clip_p_w_picpath-163

对于集群组:192.168.100.3,凡是80端口的TCP协议(http协议)请求,同一个C类地址的全部发往同一个节点

总结:

如果你要实现负载均衡,我推荐用多主机+单一模式

双机热备,不管什么模式都能实现!!!