网络负载平衡 Network Load Balancing 的工作原理

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

最近正在研究如何把CSDN的论坛WEB服务器实现负载平衡(NLB)。下面就是我整理资料笔记:

 

NLB 的工作原理

 

NLB算法的特点:

 
  • 在NLB群集中,每台服务器都会有一个属于自己的静态IP地址,同时NLB群集中的所有服务器还有一个共同的IP地址—NLB群集地址;
  •    
  • 当客户向NLB群集(NLB的虚拟IP地址)发起请求时,其实客户的请求数据包是发送到所有的NLB节点(即:NLB算法需要NLB群集中的所有主机都能看到发往群集的每一个数据包。),然后运行在NLB节点上的NLB服务根据同样的NLB算法来确定是否应该由自己进行处理,如果不是则丢弃客户的请求数据包,如果是则进行处理。 
  •    
  • 网络负载平衡使得单个子网上的所有群集主机可以同时检测群集 IP 地址的传入网络通信。在每个群集主机上,网络负载平衡驱动程序充当群集适配器驱动程序和 TCP/IP 堆栈间的过滤器,以便在主机间分配通信。

要确保上面算法的特点,单播(Unicast ),多播(Multicast)实现NLB就会有以下的特点:

 

NLB中的单播(Unicast)

 

      在单播模式下,NLB重新对每个NLB节点中启用NLB的网络适配器分配MAC地址(此MAC地址称为群集MAC地址),并且所有的NLB节点均使用相同的MAC地址(均使用群集MAC地址),同时NLB修改所有发送的数据包中的源MAC地址,确保使交换机不能将此群集MAC地址绑定在某个端口上。

 

      工作在单播模式下的NLB可以在所有网络环境下正常运行,但是由于它的工作特性,具有以下两个限制:

 
  • 由于NLB所使用的群集MAC地址没有绑定在某个具体的交换机端口上,所以所有的NLB通讯均通过在交换机的所有端口上广播进行,而不管此端口是否连接了NLB节点,这造成了额外的网络流量负担;
  •    
  • 由于所有的NLB节点具有相同的MAC地址,NLB节点之间不能通过自己原有的专用IP地址进行通讯。
  •    

     单播模式的优点也很明显:它可以无缝地与大多数路由器和交换机协同工作。

 

     如下图所示:

 

Image1189

 

单播的其他注意项:

 
  • 在Windows server 2003 SP1中,微软修改了NLB单播模式的驱动,从而支持阵列成员通过自己原有的专用IP地址进行通讯,详细信息请参见KB898867,Unicast NLB nodes cannot communicate over an NLB-enabled network adaptor in Windows Server 2003。
  •    
  • 若我们在NLB创建时选择单播的模式,在“群集IP配置”中的“网络地址”是以“02 - BF”开头,后面紧跟IP地址的十六进制表示,该网络地址与实际主机的MAC地址相同,后续加入的主机也将修改为此MAC地址。

参考:

 

单播模式下的单个网络适配器     
http://technet.microsoft.com/zh-cn/library/cc757150.aspx      
单播模式下的多个网络适配器    
http://technet.microsoft.com/zh-cn/library/cc786134.aspx

 

 

NLB中的多播(Multicast)

 

      在多播模式下,NLB不会修改NLB节点启用NLB的网络适配器的MAC地址,而是为它再分配一个二层多播MAC地址专用于NLB的通讯(此MAC地址称为群集MAC地址),这样NLB节点之间可以通过自己原有的专用IP地址进行通讯。

 

      但是在多播模式中,NLB节点发送的针对群集IP地址MAC地址ARP(Address Resolution Protocol,地址解析协议)请求的ARP回复会将群集IP地址映射到多播MAC地址,而许多路由器或者交换机(包括CISCO的产品)会拒绝这一行为。当出现这种情况时,你必须在路由器和交换机上手动添加静态映射,将群集IP地址映射到群集的多播MAC地址。

        这种模式的优点是可以通过在交换机的“内容可寻址存储器”(CAM) 表中创建静态项,从而使得入站流量仅到达群集中的主机。  

      还有一个缺点就是很多路由器不会自动将单播 IP 地址(群集的虚拟 IP 地址)与多播 MAC 地址关联起来。如果进行静态配置的话,一些路由器可以存在这种关联。若我们在NLB创建时选择多播的模式,在“群集IP配置”中的“网络地址”是以“03 -BF”开头,后面紧跟IP地址的十六进制表示。

 

      如下图所示:

 

 

 

 

 

Image1193

 

 

 

 

 

IGMP Multicast(IGMP多播)

 

      NLB算法需要NLB群集中的所有主机都能看到发往群集的每一个数据包。NLB不允许交换机将群集的MAC地址关联到交换机的某个特定端口,从而实现了这个目的。但是,这种做法也会带来不想要的副作用,就是发往NLB群集的所有数据包会在交换机上的所有端口上造成数据“洪水”。这不仅非常麻烦,而且必将会造成网络资源的浪费。

 

      为了解决这个问题,一个被称作IGMP支持的新特性被引入到了Windows Server 2003之中。该特性有助于将数据“洪水”限制到交换机上与NLB计算机相连接的端口上。通过这种方式,非NLB的计算机不会看到发往NLB群集的数据,而与此同时,所有的NLB计算机都可以看到发往群集的数据,因此满足了NBL算法的要求。但是,应该指出的是:IGMP支持只有在NLB被配置多播(multicast)模式时才能启用。

 

      在选择多播模式时,后面还有个复选项“IGMP Multicast(IGMP多播)”,若复选此项,就像多播操作模式一样,NLB 保留原厂 MAC 地址不变,但是向网络适配器中增加了一个 IGMP 多播地址。此外,NLB 主机会发出这个组的 IGMP 加入消息。如果交换机探测到这些消息,它可以使用所需的多播地址来填充自己的 CAM 表,这样入站流量就不会扩散到 VLAN 上的所有端口。这是这种群集模式的主要优点。缺点是有一些交换机不支持 IGMP 探测。除此之外,路由器仍然支持单播 IP 地址到多播 MAC 地址的转换。在IGMP多播模式下,将采用“01 – 00 - 5E”开头的MAC地址。在多播的模式下,实体主机之间可以互相通信。

 

如下图所示:

 

cc758275_d1687ea3-0f58-46ce-ae65-208ee3aab8dc(en-us)

 

 

 

NLB对路由器的要求

 

当群集已配置为在多播模式下工作时,如果网络负载平衡客户端正在通过路由器访问一个群集,请确保路由器满足以下要求:

 
  • 接受地址解析协议 (ARP) 应答,此应答在 ARP 结构的有效负载部分有一个媒体访问控制 (MAC) 地址,但正如以太网报头所确定的,它看上去像来自具有另一个 MAC 地址的站点。
  •    
  • 接受单播 IP 地址的 ARP 应答,此应答在其 ARP 结构的有效负载部分有一个多播 MAC 地址。

单播模式对路由器没有要求。

 

 

 

 

 

参考:

 

多播模式下的单个网络适配器   
http://technet.microsoft.com/zh-cn/library/cc759683.aspx

 

多播模式下的多个网络适配器   
http://technet.microsoft.com/zh-cn/library/cc779600.aspx

 

 

 

附:单播(Unicast),多播(Multicast),广播(Broadcast) 的区别:

 

单播:

 

主机之间“一对一”的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次相同的工作。但由于其能够针对每个客户的及时响应,所以现在的网页浏览全部都是采用IP单播协议。网络中的路由器和交换机根据其目标地址选择传输路径,将IP单播数据传送到其指定的目的地。   
单播的优点:    
1. 服务器及时响应客户机的请求    
2. 服务器针对每个客户不通的请求发送不通的数据,容易实现个性化服务。    
单播的缺点:    
1. 服务器针对每个客户机发送数据流,服务器流量=客户机数量×客户机流量;在客户数量大、每个客户机流量大的流媒体应用中服务器不堪重负。    
2. 现有的网络带宽是金字塔结构,城际省际主干带宽仅仅相当于其所有用户带宽之和的5%。如果全部使用单播协议,将造成网络主干不堪重负。现在的P2P应用就已经使主干经常阻塞,只要有5%的客户在全速使用网络,其他人就不要玩了。而将主干扩展20倍几乎是不可能。

 

多播(组播):

 

主机之间“一对一组”的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择的复制并传输数据,即只将组内数据传输给那些加入组的主机。这样既能一次将数据传输给多个有需要(加入组)的主机,又能保证不影响其他不需要(未加入组)的主机的其他通讯。   
组播的优点:    
1. 需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。    
2. 由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个(268435456)组播,所以其提供的服务可以非常丰富。    
3. 此协议和单播协议一样允许在Internet宽带网上传输。    
组播的缺点:    
1.与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。    
2.现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。

 

广播:

 

主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积的主机。   
广播的优点:    
1. 网络设备简单,维护简单,布网成本低廉    
2. 由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。    
广播的缺点:    
1.无法针对每个客户的要求和时间及时提供个性化服务。    
2. 网络允许服务器提供数据的带宽有限,客户端的最大带宽=服务总带宽。例如有线电视的客户端的线路支持100个频道(如果采用数字压缩技术,理论上可以提供500个频道),即使服务商有更大的财力配置更多的发送设备、改成光纤主干,也无法超过此极限。也就是说无法向众多客户提供更多样化、更加个性化的服务。    
3. 广播禁止在Internet宽带网上传输。

 

参考资料: 

 

Load Balancing and ASP.NET   
http://www.hanselman.com/blog/LoadBalancingAndASPNET.aspx

 

Web Farming with the Network Load Balancing Service in Windows Server 2003   
http://www.west-wind.com/presentations/loadbalancing/NetworkLoadBalancingWindows2003.asp

 

网络负载平衡算法 Works 内部怎样   
http://support.microsoft.com/kb/556068/zh-cn?spid=3198&sid=770

 

WEB farm - Load Balancing in Asp.net   
http://www.c-sharpcorner.com/UploadFile/gopenath/Page107182007032219AM/Page1.aspx

 

How to test web load balance   
http://www.cnblogs.com/oscarxie/archive/2008/05/20/1203157.html

 

将asp.net迁移到Load Balance和NAS上的步骤   
http://blog.joycode.com/hopeq/archive/2006/03/29/73762.aspx

 

微软知识库中的关于负载均衡的HowTo文章汇总   
http://support.microsoft.com/ph/3198/zh-cn?sid=770&aid=1&GSA_AC_More1

 

TechNet 关于 网络负载平衡群集  的内容   
http://technet.microsoft.com/zh-cn/library/cc759510.aspx     中文    
http://technet.microsoft.com/en-us/library/cc759510.aspx     英文

 

下面文章中间谈到了负载均衡的工作原理   
http://technet.microsoft.com/zh-cn/library/aa998796%28EXCHG.65%29.aspx

 

NLB配置中单播与多播区别   
http://hi.baidu.com/hneli/blog/item/656725d3e5471433970a16bd.html

 

NLB群集   
http://blog.sina.com.cn/s/blog_4b611a45010009hh.html

 

Using NLB with ISA Server Part 2: Layer 2 Fun with Unicast and Multicast Modes   
http://www.isaserver.org/articles/basicnlbpart2.html

 

 

 

IP多播概述   
http://www.microsoft.com/china/technet/community/columns/cableguy/cg0202.mspx

 

TCP/IP学习笔记之九 --- 广播和多播   
http://blog.csdn.net/kmajian/archive/2008/11/27/3389667.aspx

 

 

网络负载平衡关键特性   
http://technet.microsoft.com/en-us/library/cc758275.aspx

 

Network Load Balancing   
http://www.msxfaq.de/verschiedenes/nlb.htm

 

Network Load Balancing Technical Overview   
http://technet.microsoft.com/zh-cn/library/bb742455(en-us).aspx

网络技术基础知识一之ARP协议概说  
http://cisco.chinaitlab.com/TCP/38035.html           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述
展开阅读全文

Load Balancing

05-22

Problem DescriptionnIn the Wide Web World, Which web server was popular in web site? Apache, nginx, lighttpd? Baidu.com use Apache, and many web sites like 163.com use nginx. Why? Its configuration is very simple, and it has very powerful load balancing features.nnHow does load balancing work? Load balancing is a technique to spread work between two or more computers in order to get optimal resource utilization, maximize throughput, and minimize response time. Wiskey very curious about this technology and he wants to build a simple load balancing model.nnHe define the web site has M servers, and N jobs need be done. Each job has a processing time T; we seek to assign each job to one of the servers so that the loads placed on all servers are as "balanced" as possible. The "balanced" mean the Minimize it (max TMi - min TMj). TMi is the server i total time cost.nnBut, as Wiskey Know, this scheduling problem of finding an assignment of minimum gap is NP-hard. nnCan you write a better load balancing than Wiskey? Challenge it~!n nnInputnThe first integer C represents the number of cases, And C cases followed.nnEach test case contains a single integer N (1<=N<=100000) and M (1<=M<=100). The next N line contains integers, meaning the time of job T1, T2Tn. (1<=Ti<=1000000)n nnOutputnFor each test case, first output the N, and follows N numbers mean the job i assign to which server. The servers number count from 0.n nnSample Inputn2n6 3n2 3 4 6 2 2n6 3n6 4 3 2 2 2n nnSample Outputn6n0 1 2 0 1 2n6n0 1 1 2 2 2 问答

没有更多推荐了,返回首页