使用网络地址转换实现多服务器负载均衡_PHP
负载均衡
摘要:本文探讨了分布式网络服务器使用的负载均衡技术及负载分配的策略,并基于网络地址转换在FreeBSD上实现了负载均衡网关,应用于我们的Internet网络服务器上,将负载分给多个服务器分担,以解决Internet服务器面临的大量并发访问造成的CPU或I/O的高负载问题。为了达到最佳的负载均衡效果,负载控制器需要根据各个服务器的当前CPU和I/O状态来分配负载,这就需要动态监视服务器的负载,并应用优化的负载分配策略,达到平均分配负载的目的。关键字: 负载均衡,网络地址转换,FreeBSD
1. 引言
Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大量并发访问服务的能力,服务器的处理和I/O能力成为了提供服务的瓶颈。由于单台服务器的性能总是有限的,必须采用多服务器和负载均衡技术才能满足大量并发访问的需要。
最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的[1]。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。
反向代理服务器可以将请求转发给内部Web服务器,如果代理服务器能够将请求均匀转发给多台内部服务器,就能达到负载均衡的目的[2]。反向代理方式下能应用优化的负载均衡策略,每次访问最空闲的内部服务器来提供服务。但是随着并发连接数量的增加,代理服务器本身的负载也变得非常大,最后反向代理服务器本身会成为服务的瓶颈。
支持负载均衡的地址转换网关中可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的[3]。很多硬件厂商将这种技术集成在他们的交换机中,作为他们第四层交换的一种功能来实现,一般采用随机选择、根据服务器的连接数量或者响应时间进行选择的负载均衡策略来分配负载。然而硬件实现的负载控制器灵活性不强,不能支持更优化的负载均衡策略和更复杂的应用协议。
除了这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力等,但它依赖于特定协议,因此使用范围有限。根据现有的这些负载均衡技术,我们选择了使用软件方式实现网络地址转换的负载均衡的方式,以弥补硬件负载均衡器的不灵活,并应用优化的均衡策略来实现后端服务器负载分担的最优状态。
2. 负载均衡策略
为了将负载均匀的分配给内部的多个服务器上,就需要应用一定的负载均衡策略。传统的负载均衡策略并没有考虑到服务请求的不同类型、后台服务器的不同能力以及随机选择造成的负载分配不均匀等问题。为了使得负载分配十分均匀,就要应用能够正确反映各个服务器CPU及I/O状态的负载均衡策略[4]。
客户发起的服务请求类型是多种多样的,按照对处理器、网络和I/O的资源要求,可以简单的将它们分为两个不同类别,以便应用不同的处理策略:
静态文档请求:例如普通的文本、图象等静态多媒体数据,它们对处理器负载影响不大,造成的磁盘I/O负载与文档的大小成正比,主要对网络I/O造成压力。
动态文档请求:更为常见的请求常常需要服务器预先进行处理,例如搜寻数据库、压缩解压缩多媒体文件等,这些请求需要相当大的处理器和磁盘I/O资源。
对于静态文档,每个服务进程占用大致相同的系统资源,因此就可以使用进程数来表示系统负载。而动态文档服务需要进行额外的处理,其占用的系统资源就超过处理静态请求,因此需要使用一个权重来表示。这样一个最简单的服务器负载表示公式就为:
其中L为服务器的负载,Ns为静态文档服务进程数,Nd为动态文档服务进程数,而a为每个动态文档服务相对于静态文档服务的权重,可以在10到100之间进行选择。
在这个公式中没有考虑服务器硬件的限制,当达到硬件限制的时候,由于资源紧张,服务器的负载就会明显增加。例如由于服务器内存大小的限制,一些进程就要被交换到硬盘上,使得系统负载迅速增加。考虑了系统硬件限制,则服务器的负载可以表示为:
新增加的参数 Ll表示这个服务器普通负荷的限度,它要根据每个服务器本身的硬件能力来设置。而b表示超出正常负载时用来限制分配给服务器任务的权重,应该设置为大于Ll的数值,以表示硬件限制作用。通常在一个服务器集群中,硬件设置越差的服务器这个权重越要设置的大,以避免在所有的服务器都超负载运行时,硬件最差的服务器反而负载最高。因此b是和本服务器硬件限制Ll成反比的,则b可以设置为:
Llmax为服务器集群中最高硬件配置的服务器的Ll值。当确定了每个服务器的负载之后,中心控制负载分配的服务器就能将负载正确的分发给最空闲的服务器,从而不会象其他的负载分配策略那样会导致负载分配不均匀的情况。
3. 实现方法及实验结果
我们的服务器系统由使用快速以太网连接起来的多台FreeBSD系统组成。每台后端服务器上运行一个守护进程来动态获得自己的负载状态,而使用FreeBSD实现的中心控制网关就通过这些守护进程刷新各个服务器的负载,以进行正确的负载分配。
3.1支持负载均衡的网关
在FreeBSD系统下,提供了divert接口以支持网络地址转换能力。IP数据包通过系统内核的ipfw过滤功能被发送到divert接口中,以便外部守护进程natd能接收原始数据包,处理之后再发回系统内核进行正常的IP分发[5]。
因此根据FreeBSD的地址转换结构,可以创建自己的网络地址转换守护进程,以支持负载均衡功能,这样就能将FreeBSD系统作为一个支持负载均衡的网关。由于它是软件实现的方式,很容易支持非标准的协议及应用优化的负载均衡策略,具备很大的灵活性。
3.2实验及分析
为测试这种实现的可用性,我们针对最常见的HTTP协议进行我们的测试实验。为了区分不同的请求种类,设计了三个不同类型的测试,以测试不同方面的性能。
CGI程序产生的动态文档:用于测试在服务器的处理能力的负载均衡状态。
小型静态文档:使用尺寸较小的静态文档,用于测试频繁连接下负载均衡的状态;
大型静态文档:使用较大的文档,测试磁盘及网络I/O的负载均衡状态;
测试结果以单台服务器每秒钟完成请求的性能为基准,显示使用多台服务器进行负载均衡时每秒种完成的请求数与基准请求次数的比率。
图1:负载均衡性能
从上图中的第一条曲线a是处理动态文档请求的,此时随着服务器数量的增加,其性能是成倍增加的;而第二条曲线b为处理小尺寸静态文档请求的,在使用三台服务器时性能改善就不明显了;而处理大尺寸静态文档请求的第三条曲线c则几乎没有发生性能变化。为了找到负载均衡系统达不到理想状态的原因,我们考察了服务器资源的利用率:
表1.服务器资源的利用率
处理类型
负载均衡网关
服务器1
服务器2
服务器3
a
53%
97%
95%
98%
b
76%
43%
39%
41%
c
94%
32%
31%
35%
从这个表中可以看出,当处理动态文档a时三台服务器都处于全速运行状态,负载被均匀分配,这是一种理想的状态。当处理静态文档类型b和c时,负载虽然被均匀分配给三台服务器,但每台服务器都没有处于全速运行状态。尤其在处理大尺寸文档时,负载均衡设备中的natd进程则占据了大部分处理资源。由于所有的网络流量都要经过它进行转换,因此在网络流量和并发连接数量相当大时,natd进程的负载就增加上去了。实验中使用不同数量的后端服务器时,流经负载均衡网关的实际网络带宽为:
表2:提供大尺寸文档时服务器集群的带宽
服务器数量
1台
2台
3台
网络速度(Kb/s)
10042.14
11015.10
11442.67
可以看出带宽限制在10MB/s左右,显然这是这个测试使用的负载均衡进程的带宽限制,事实上该程序使用了链表来维护网络地址转换的状态,这就大大限制了它的网络性能,通过提高硬件性能和改善算法,完全可以进一步提高其性能。
4.讨论
从上面的实验中可以看出,基于网络地址转换的负载均衡器可以有效的解决服务器端的CPU和磁盘I/O负载,然而负载均衡器本身的性能受网络I/O的限制,在一定硬件条件下具有一定的带宽限制,但可以通过改善算法和提高运行负载均衡程序的硬件性能,来提高这个带宽限制。同时也可以看出,不同的服务类型对不同的服务器资源进行占用,我们使用的负载衡量策略是使用同一个负载进行评估,这对于大多数条件是适合的,然而最好的办法是针对不同的资源,如CPU、磁盘I/O或网络I/O等,分别监视服务器负载,由中心控制器选择最合适的服务器分发客户请求。我们以后的工作将从这两个方面入手,完善这个负载均衡控制器。
参考文献:
[1] E.Kata,M.Butler, and R. McGrath. A scalable HTTP server: the ncsa prototype. Computer Networks and ISDN systems. 1994. Vol 27, P155-164
[2] Ralf S.Engelschall. Load Balancing Your Web Site. Web Techniques Magazine (http://www.WebTechniques.com), May 1998. vol.3, iss.5
[3] CICSO. LocalDirector Documents. http://www.cisco.com, 1997
[4] H.Zhu. T.Yang, Q.Zheng, D.Watson, O.H.Ibarra, andT.Smith, Adaptive load sharing for clustered digital library servers. Technical Report, CS, UCSB, 1998.
[5] FreeBSD core team. natd and divert manual pages. http://www.freebsd.org. 1995
Implement a load balancing gateway by NAT
Wang, Bo
NongYe Road 70, ZhengZhou, 450002, P.R.China
wb@email.online.ha.cn
Abstract: This paper investigates load balancing techniques and strategies, and implements a load balancing gateway based NAT for our Internet servers. The Internet servers involve the high load of CPU and I/O by simultaneous access requests, the symmetrical clustered servers can distribute the server load to solve the problem. To balance the load in the best way, the gateway distributes the load according to the status of server's CPU and I/O. The gateway must monitor every server's load and apply the best scheme to delivery every request, so it can provide the high performance for Internet services.
Keywords: load balancing, NAT, FreeBSD

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

1、检查wifi密码:确保自己输入的wifi密码是正确的,注意区分大小写。2、确认wifi是否正常工作:检查wifi路由器是否正常运行,可将其他设备连接至同一路由器,以确定问题是否出在设备上。3、重启设备和路由器:有时候,设备或路由器出现故障或网络问题,重启设备和路由器可能会解决问题。4、检查设备设置:确保设备无线功能处于开启状态,并且未将wifi功能禁用。

全角英文字母转换为半角形式的实用技巧在现代生活中,我们经常会接触到英文字母,在使用电脑、手机等设备时也经常需要输入英文字母。然而,有时候我们会遇到全角英文字母的情况,而我们需要使用的是半角形式。那么,如何将全角英文字母转换为半角形式呢?下面就为大家介绍一些实用的技巧。首先,全角英文字母和数字是指在输入法中占据一个全角位置的字符,而半角英文字母和数字则是占据一

华为手机如何实现双微信登录?随着社交媒体的兴起,微信已经成为人们日常生活中不可或缺的沟通工具之一。然而,许多人可能会遇到一个问题:在同一部手机上同时登录多个微信账号。对于华为手机用户来说,实现双微信登录并不困难,本文将介绍华为手机如何实现双微信登录的方法。首先,华为手机自带的EMUI系统提供了一个很便利的功能——应用双开。通过应用双开功能,用户可以在手机上同

在如今云存储已经成为我们日常生活和工作中不可或缺的一部分。百度网盘作为国内领先的云存储服务之一,凭借其强大的存储功能、高效的传输速度以及便捷的操作体验,赢得了广大用户的青睐。而且无论你是想要备份重要文件、分享资料,还是在线观看视频、听取音乐,百度网盘都能满足你的需求。但是很多用户们可能对百度网盘app的具体使用方法还不了解,那么这篇教程就将为大家详细介绍百度网盘app如何使用,还有疑惑的用户们就快来跟着本文详细了解一下吧!百度云网盘怎么用:一、安装首先,下载并安装百度云软件时,请选择自定义安装选

网易邮箱,作为中国网民广泛使用的一种电子邮箱,一直以来以其稳定、高效的服务赢得了用户的信赖。而网易邮箱大师,则是专为手机用户打造的邮箱软件,它极大地简化了邮件的收发流程,让我们的邮件处理变得更加便捷。那么网易邮箱大师该如何使用,具体又有哪些功能呢,下文中本站小编将为大家带来详细的内容介绍,希望能帮助到大家!首先,您可以在手机应用商店搜索并下载网易邮箱大师应用。在应用宝或百度手机助手中搜索“网易邮箱大师”,然后按照提示进行安装即可。下载安装完成后,我们打开网易邮箱账号并进行登录,登录界面如下图所示

MetaMask(中文也叫小狐狸钱包)是一款免费的、广受好评的加密钱包软件。目前,BTCC已支持绑定MetaMask钱包,绑定后可使用MetaMask钱包进行快速登入,储值、买币等,且首次绑定还可获得20USDT体验金。在BTCCMetaMask钱包教学中,我们将详细介绍如何注册和使用MetaMask,以及如何在BTCC绑定并使用小狐狸钱包。MetaMask钱包是什么?MetaMask小狐狸钱包拥有超过3,000万用户,是当今最受欢迎的加密货币钱包之一。它可免费使用,可作为扩充功能安装在网络

如何在华为手机上实现微信分身功能随着社交软件的普及和人们对隐私安全的日益重视,微信分身功能逐渐成为人们关注的焦点。微信分身功能可以帮助用户在同一台手机上同时登录多个微信账号,方便管理和使用。在华为手机上实现微信分身功能并不困难,只需要按照以下步骤操作即可。第一步:确保手机系统版本和微信版本符合要求首先,确保你的华为手机系统版本已更新到最新版本,以及微信App

小米汽车软件提供远程车控功能,让用户可以通过手机或电脑远程控制车辆,例如开关车辆的门窗、启动引擎、控制车辆的空调和音响等,下文就是这个软件的使用及内容,一起了解下吧。小米汽车app功能及使用方法大全1、小米汽车app在3月25日上线苹果AppStore,现在安卓手机的应用商店中也可以下载了;购车:了解小米汽车核心亮点和技术参数,可预约试驾、配置订购您的小米汽车,支持在线处理提车待办事项。3、社区:了解小米汽车品牌资讯,交流用车体验,分享精彩车生活;4、车控:手机就是遥控器,远程控制,实时安防,轻
