转http://www.aixchina.net/Article/31746

网络负载平衡群集(Network Load balancing)

在Internet快速发展的今天,为了满足企业的高速发展。为了解决服务器的负载、高可用、以及服务器的可伸缩性。通常我们的做法是在“网络层、数据链路层”不断的添加硬件设备。但是这种做法对于一些中小企业来说是在“资金”方面是吃不消的。有没有一种方法解决这些问题呢?答案是肯定的,常见的有linux中的LVS和windows中的NLB以及其它的第三方软件来实现。
今天,主要给大家介绍一下Windows下的NLB (Network Load balancing),网络负载平衡是Microsoft 在所有 Windows 2000 Server 和 Windows Server 2003 操作系统上提供的一种负载平衡技术。NLB 使用一种分布算法将负载均衡分布到多台主机上,从而提高基于 IP 的关键型服务(例如Web、虚拟专用网络、流媒体、终端服务、代理等等)的可伸缩性和可用性,同时可检测主机故障并自动将流量重新分配给其他操作主机,从而提供高可用性。
其实,网络负载平衡就是两个或两个以上的Windows 2003服务器组成群集的方式,其中每台服务器的地位是平等的。 都可以为客户端提供服务并且不用其它服务器的辅助。例如:如下图群集的服务器将虚拟出来的主机Server3 和IP地址分配给Server1和Server2。然后将虚拟出来的IP地址和主机名发布到互联网上,服务器之间将均衡来处理客户端请求。如果某一台服务器出现宕机,则将请求分配给另外一台服务器。同时我们需要注意,如果将数据存放到NLB每个服务器成员上,服务器之间的数据要求统一,但是他们之间的数据是无法通过NLB自动同步,所以需要通过手动的完成数据的同步。如果要避免这种情况我们可以使用第三方存储(磁盘柜)或者将Web服务器的数据交给数据库。
 Windows群集之NLB-LMLPHP

网络负载均衡的工作原理就是使用两台或更多台一起工作的主机(服务器)组成群集,Internet客户端使用一个IP地址或一组地址访问群集。网络负载均衡使用全面分布式的算法来从统计意义上将客户端的请求映射到基于IP地址、端口和其它信息的群集主机上,在检查收到的数据包时,所有主机均同步执行这种映射以迅速决定哪个主机应处理该数据包。对于Web服务而言,程序的一个拷贝运行在群集内的所有主机上,然后通过均衡技术,将外部发送来的请求均匀地分配到对称结构中的某一台服务器上,而接受到请求的服务器都能独立回应客户机的请求,网络负载均衡则将工作负载在这些主机间进行分配,其中只有一台主机处理工作负载,网络负载均衡允许网络通讯量流到一个主机上,并在该主机发生故障时将通讯量移至其它主机。
群集在配置了网络负载平衡以后,对群集IP地址的客户请求被群集内的所有主机收到。网络负载平衡在这些数据报到达TCP/IP协议软件之前,就对这些数据报进行过滤以指定TCP和UDP协议,并以端口方式控制它们的活动。除了流向指定端口的TCP和UDP通讯量之外,网络负载平衡不控制任何其它的IP通讯量。
网络负载平衡通过在分配给群集(NLB)的一个或多个虚拟IP地址(群集IP地址)间分配传入的网络通信。然后,群集中的主机同时对不同的客户端请求甚至来自同一个客户端的多个请求做出响应。Web浏览器可以从网络负载平衡群集中的不同之际获得所有单张网页中的多幅图像。这就提高了处理速度,并缩短了对客户端做出响应的时间。
在群集中,每个NLB成员都会想群集中的其他主机发出心跳信号。如果某台主机停止发送心跳信号则认为此主机出现故障,群集中的其他主机就会经历一个称为收敛的过程。通过收敛,整个群集重新协商成员关系,并删除掉出现故障的成员,网络负载平衡则将传入的网络通信重定向到工作的群集主机。连到脱机主机的现有连接将丢失,在多数情况下客户端软件可以自动重试失败的连接,而且客户端在重新接收响应时,只有数秒钟的延迟。
配置实例:
1、建立如图环境,在实际环境下建议不要使用DC在作负载均衡。
2、配置如图环境,每台服务器有两块网卡,一个用于负载均衡,一个用于管理
3、如果使用DNS服务器的话,可以建立一条和虚拟IP对应的dns记录
4、建立两个网站用于测试NLB群集。
 Windows群集之NLB-LMLPHP

(1)Windows系统默认安装的服务,首先在Server1上以管理员身份登录,从“管理工具”中运行“网络负载平衡管理器”,单击“网络负载平衡群集”右键“新建群集”
 Windows群集之NLB-LMLPHP

(2)在“群集参数”对话框,输入我们规划好的虚拟群集IP地址(注意虚拟IP地址与主机IP地址应在同一个网段)、输入子网掩码,输入域名。群集操作模式选“多播”,这里单播和组播的含义如下:
单播
  在单播模式下,NLB重新对每个NLB节点中启用NLB的网络适配器分配MAC地址(此MAC地址称为群集MAC地址),并且所有的NLB节点均使用相同的MAC地址(均使用群集MAC地址),同时NLB修改所有发送的数据包中的源MAC地址,从而使交换机不能将此群集MAC地址绑定在某个端口上。
  工作在单播模式下的NLB可以在所有网络环境下正常运行,但是由于它的工作特性,具有以下两个限制:
n 由于NLB所使用的群集MAC地址没有绑定在某个具体的交换机端口上,所以所有的NLB通讯均通过在交换机的所有端口上广播进行,而不管此端口是否连接了NLB节点,这造成了额外的网络流量负担;
n 由于所有的NLB节点具有相同的MAC地址,NLB节点之间不能通过自己原有的专用IP地址进行通讯。  
多播

  在多播模式下,NLB不会修改NLB节点启用NLB的网络适配器的MAC地址,而是为它再分配一个二层多播MAC地址专用于NLB的通讯(此MAC地址称为群集MAC地址),这样NLB节点之间可以通过自己原有的专用IP地址进行通讯。但是在多播模式中,NLB节点发送的针对群集IP地址MAC地址ARP请求的ARP回复会将群集IP地址映射到多播MAC地址,而许多路由器或者交换机(包括CISCO的产品)会拒绝这一行为。当出现这种情况时,你必须在路由器和交换机上手动添加静态映射,将群集IP地址映射到群集的多播MAC地址。

 Windows群集之NLB-LMLPHP

(3)单击“下一步”如果要虚拟多个群集IP的话可以在这里添加。
 Windows群集之NLB-LMLPHP

(4)在“端口规则”保持默认设置,单击“下一步”即可。
 Windows群集之NLB-LMLPHP

(5)在“连接”界面,我们可以输入当前主机的计算机名或任意的有效IP地址即可。注意选择和虚拟IP对应的的接口IP地址。(也就是对外提供服务的网卡)
 Windows群集之NLB-LMLPHP

(6)点击“完成”完成配置。系统会开始配置网络负载平衡,大约需要几分钟。
 Windows群集之NLB-LMLPHP

(7)这是Server1完成配置后的图片。
 Windows群集之NLB-LMLPHP

(8)在Server2上,我们可以先连接到现存的群集,单击“群集”选择“连接到现存的”
 Windows群集之NLB-LMLPHP

(9)这里在主机上输入Server1的计算机名或IP地址,点击连接。有的时候会出现连接不上的故障,根据提示,查看系统日志去解决问题即可。
 Windows群集之NLB-LMLPHP

(10)连接成功后,我们会在管理界面看到只有Server1服务器,这时只需单击我们的群集名称“[url]www.abc.com[/url]”右键选择“添加主机到群集”
 Windows群集之NLB-LMLPHP

(11)在连接界面,还是输入Server2的IP地址或计算机名,这里也要注意我们需要选择对外提供服务的网卡IP地址。
 Windows群集之NLB-LMLPHP

(12)点击“完成”后,大约需要几分钟我们发现系统已配置成功,如下图。
 Windows群集之NLB-LMLPHP

(13)验证一下配置,在两台服务器上我们会发现网卡上都添加了响应的群集参数。
 Windows群集之NLB-LMLPHP

(14)配置Web这里不做详细介绍,为了看出效果我在Server上添加了如下图内容,我们可以将Server2的IP网卡禁用,会发现我们访问的内容是Server1上的。
 Windows群集之NLB-LMLPHP

(15)启用Server2的网卡,禁用Server1的,我们可以看到Server2上的网站信息。
 Windows群集之NLB-LMLPHP

(16)如果关闭了网络负载平衡管理器后再次进入的话,我们可以选择“连接到现存的”。
05-27 18:38