服务器之间如何实现负载均衡的知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器之间如何实现负载均衡的知识相关的知识,希望对你有一定的参考价值。

企业实现服务器负载均衡常见的四种方法
为了提高服务器的性能和工作负载能力,企业通常会使用DNS服务器、网络地址转换等技术来实现多服务器负载均衡,特别是目前企业对外的互联网Web网站,许多都是通过几台服务器来完成服务器访问的负载均衡。

目前企业使用的所谓“负载均衡服务器”,实际上它是应用系统的一种控制服务器,所有用户的请求都首先到此服务器,然后由此服务器根据各个实际处理服务器状态将请求具体分配到某个实际处理服务器中,对外公开的域名与IP地址都是这台服务器。负载均衡控制与管理软件安装在这台服务器上,这台服务器一般只做负载均衡任务分配,但不是实际对网络请求进行处理的服务器。

一、企业实现Web服务器负载均衡

为了将负载均匀的分配给内部的多个服务器上,就需要应用一定的负载均衡策略。通过服务器负载均衡设备实现各服务器群的流量动态负载均衡,并互为冗余备份。并要求新系统应有一定的扩展性,如数据访问量继续增大,可再添加新的服务器加入负载均衡系统。

对于WEB服务应用,同时有几台机器提供服务,每台机器的状态可以设为regular(正常工作)或backup(备份状态),或者同时设定为 regular状态。负载均衡设备根据管理员事先设定的负载算法和当前网络的实际的动态的负载情况决定下一个用户的请求将被重定向到的服务器。而这一切对于用户来说是完全透明的,用户完成了对WEB服务的请求,并不用关心具体是哪台服务器完成的。

二、使用网络地址转换实现多服务器负载均衡

支持负载均衡的地址转换网关中可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。很多硬件厂商将这种技术集成在他们的交换机中,作为他们第四层交换的一种功能来实现,一般采用随机选择、根据服务器的连接数量或者响应时间进行选择的负载均衡策略来分配负载。然而硬件实现的负载控制器灵活性不强,不能支持更优化的负载均衡策略和更复杂的应用协议。

基于网络地址转换的负载均衡器可以有效的解决服务器端的CPU和磁盘I/O负载,然而负载均衡器本身的性能受网络I/O的限制,在一定硬件条件下具有一定的带宽限制,但可以通过改善算法和提高运行负载均衡程序的硬件性能,来提高这个带宽限制。不同的服务类型对不同的服务器资源进行占用,我们使用的负载衡量策略是使用同一个负载进行评估,这对于大多数条件是适合的,然而最好的办法是针对不同的资源,如CPU、磁盘I/O或网络I/O等,分别监视服务器负载,由中心控制器选择最合适的服务器分发客户请求。

三、使用DNS服务器实现负载均衡

访问企业网服务器的用户急剧增加,一台服务器难以满足用户的访问需要,那么如何才能保证用户的正常访问呢?解决方法有很多,如使用Windows 2000或Windows Server 2003提供网络负载均衡服务,但该服务的设置非常复杂。而通过DNS服务器实现网络负载均衡则是一种比较简单的方法。

企业网通常由很多子网构成,为了降低网络中的数据流量,客户机最好能访问处于同一子网内的Web服务器。虽然实现了网络负载均衡功能,但并不能保证客户访问的是本子网的Web服务器。其实这个问题也很好解决,只要启用DNS服务器的“启用网络掩码排序”功能即可。在DNS管理器窗口中,右键点击DNS 服务器,在弹出的菜单中选择“属性”,然后在属性对话框中切换到“高级”选项卡,勾选“服务器选项”列表框中的“启用网络掩码排序”选项即可。这样客户机每次都能访问到本子网内的Web服务器了。完成以上设置后,就使DNS服务器实现了网络负载均衡功能,把客户的访问分担到每个Web服务器上,并且还减少了跨子网的网络通信流量,大大降低了企业网的通信负担。

四、企业实现SQL Server数据库服务器负载均衡

MS SQL Server数据库服务器可以说是应用范围最广的数据库产品,并且越来越多地在大型和比较关键的应用系统中提供服务。当企业应用越来越复杂、数据量越来越大的时候,SQL Server数据库要不停的进行处理、存储、查询的工作,这个时候企业就要考虑SQL Server数据库服务器的性能和速度及安全性了。然而,长期以来,SQL SERVER数据库服务器都只有“热备”的解决方案,而没有“负载均衡”和“集群”的解决方案。

随着数据库路由器软件ICX的出现,为基于MS SQL Server的数据库系统提供了一种更优秀的集群解决方案。它可以真正的实现SQL Server数据库服务器的动态负载均衡,提高性能和速度;它可以真正的保证SQL Server数据库服务器不间断的提供服务,在服务器发生故障的时候实时切换到其他服务器上继续提供服务,切换时间为“零”。数据库路由器是实时并发数据库事务处理同步×××和负载平衡器。

所有的数据库客户都通过ICX访问数据库。当访问、查询SQL Server数据库的时候ICX可以根据实际情况分配服务器来提供服务,大大提高服务速度和优化性能,完成负载均衡。ICX可以同时连接多台数据库,这若干台数据库的内容在任何时刻由ICX保证是完全一致的。也就是说,ICX采用了全新的并发事务处理的方式,向连接的N台数据库同步复制事务处理,使得系统在任何时刻具有多个一致的最新逻辑数据库数据集。当其中一台数据库服务器发生故障的时候,ICX可以实时的、第一时间切换到其他服务器上来继续提供服务。真正的实现零时间的服务器切换,大大提高安全性,真正意义的实现服务器不间断服务。

原理:

负载平衡把每个IP数据包按某种规则分发到服务器节点,不同的负载平衡实现方式有不同的分发规则。对客户端来说负载平衡系统是透明的。采用网络负载平衡技术的服务对单个客户端请求的响应并比单个主机快,但对大量客户端的密集请求在速度与质量有很大优势。并且当某个主机发生故障或脱机时,不会影响服务的提供,从而带来了高可用性。

负载平衡的不同实现方法

4.1 利用网络设备的动态网络地址转换(NAT)功能实现负载平衡

实现负载平衡的要求:

具备动态NAT功能的路由器,多台运行同一服务的服务器,所有服务器要求在同一局域网内。

负载平衡的设计与配置过程:

内部的多台服务器,有自己的私有IP,提供相同的服务, 但对外映射通过网络地址转换(NAT)成为一个统一的公网IP地址,对外部来讲多台服务器是捆绑在一起的一个虚拟服务器,外部访问这个虚拟服务器时,轮流指向各台服务器,从而达到负载均衡。

例如:以下网络中

路由器动态NAT配置过程如下:(以思科路由器为例)

Router(config)#int f0/1

Router(config-if)#ip address 192.168.1.1 255.255.255.0

Router(config-if)#ip nat inside

Router(config-if)#int s0/0

Router(config-if)#ip address 133.0.0.1 255.255.255.252

Router(config-if)ip nat outside

Router(config-if)#exit

Router(config)#ip nat pool p2 192.168.1.2 192.168.1.4 netmask 255.255.

255.0 type rotary

Router(config)#access-list 2 permit 133.0.0.33

Router(config)#ip nat inside destination list 2 pool p2

Router(config)#ip route 0.0.0.0 0.0.0.0 s0/0

优、缺点:配置简单,成本低,服务器在本地便于维护,负载平衡算法由路由器提供,不需占用服务器系统资源。但是一般只能支持轮流服务的算法,不能根据服务器性能进行合理的负载分配。

4.2 DNS的负载平衡实现

负载平衡的要求:

要求DNS服务器的支持,一般支持bind8.2以上的类unix系统,安装一个循环复用DNS软件。

负载平衡的设计与配置过程:在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。配置过程在不同的DNS系统中有不同的配置方法,本文不再多述。

优、缺点:服务器可以分布在不同的地域,有利于故障转移。负载平衡算法运行在DNS服务器上,不占用服务器资源。

但是域名服务器无法知道服务结点是否有效,如果服务结点失效,域名系统依然会将域名解析到该节点上,造成用户访问失效。另外,它不能区分服务器性能的差异,也不能反映服务器的当前运行状态。因此,在动态平衡特性上,动态DNS轮询的效果并不理想。

4.3 利用操作系统的群集功能实现负载平衡

负载平衡的要求:

要求使用支持群集功能的操作系统如:windows 2000server以上的服务器版本,Unix或Linux。本文以windows2003 server为例介绍群集功能的配置。

负载平衡的设计与配置过程:群集的实现需要群集内部的通讯以及管理和内容复制的数据传输。这部分通讯占用了网络的可用带宽。为了克服单网卡的局限性,一般使用双网卡,一个用于负载客户端的通讯,另一个用于传输内部通讯,管理和内容的数据。

群集操作模式的选择是设计的重要一步。单播模式是指各节点的网络适配器被重新指定了一个虚拟MAC(由02-bf和群集IP地址组成确保此MAC的唯一性)。多播模式下,网络适配器在保留原有的MAC地址不变的同时,还分配了一个各节点共享的多播MAC地址。一般选用多播模式。

端口规则是windows2003的新特性。NLB提供3种筛选模式,可以针对端口规则采取禁止、多主机负载平衡和单主机的特殊处理。其中,多主机筛选模式提供了真正意义上的负载平衡,并且可以根据节点的实际处理能力进行负载量的分配。

Windows2003引入了网络负载平衡管理器(控制面板->管理工具),使负载平衡的安装和配置更加简单。管理器可以容易的实现群集的建立、删除,节点的添加、删除、修改以及故障的检测。

运行网络负载平衡管理器,选择 群集 -> 新建 ,弹出“群集参数”对话框,然后根据向导按需要配置。

首先配置好参数后点击下一步,系统会提示添加附加群集IP,如果不需要可直接按“下一步”进行端口配置。以web群集配置为例:如果会话状态不保存在该群集上,则相似性选择无,否则选择单一或者类C。

之后,指定一台主机连接,并选择一个可用的网络接口,进行主机参数的设置:点击“完成”,管理器会自动连接到主机上进行相关配置来创建一个新的群集。

优、缺点:选择多主机筛选模式时提供了真正意义上的负载平衡,并且可以根据节点的实际处理能力进行负载量的分配。比较适用于大型网站负载平衡的实现。但使用Unix, Windows 2003 server系统实现时,网络架构成本较高。

以上是关于服务器之间如何实现负载均衡的知识的主要内容,如果未能解决你的问题,请参考以下文章

如何配置Web服务器实现负载均衡

高性能负载均衡架构如何 实现,这些知识点大多数人不知道!

Ribbon如何自定义实现负载均衡策略

负载均衡:Ribbon 如何保证微服务的高可用

如何实现linux负载均衡集群文件同步?

Wowza技术:使用NVIDIA CUDA硬件加速编解码时,如何在多个GPU之间实现负载均衡?