一种服务器流量控制方法、系统以及重定向器的制作方法

文档序号:7966582阅读:253来源:国知局
专利名称:一种服务器流量控制方法、系统以及重定向器的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种对服务器流量进行控制的方法、 一种 重定向器及一种服务器流量控制系统。
背景技术
squid程序作为一个优秀的代理服务器软件,已经被广泛应用,特别是它 出色的高速緩沖存储器(Cache)功能,成为了大型网站加速技术中的^f交佼者。 同时,它还对外提供了一个可配置的重定向功能接口。重定向器是squid的外部程序,它重写来自客户请求数据中的URI。例如, 某个用户i貪求页面http:〃www.example.com/pagel.html ,重定向器可以将该 请求改变到别的地方,例如http:〃www.example.com/page2.html 。 squid自动 抓取新的URI,就像是客户端的原始请求一样。假如响应可被緩存,squid将 它存储在新的URI下。采用重定向功能可以实现,如访问控制,移除广告,本地镜像,甚至用 以绕开浏览器的bug等。使用重定向器进行访问控制的好处之一是可以将用户的请求重定向到某 个页面,这个页面可以详细解释为何请求被拒绝等;因此,重定向器比squid 程序内建的访问控制能提供更多的应用弹性。使用重定向器可以过滤web页面广告大部分情形下,可以将对GIF或 JPEG广告图片的请求,改变为请求位于本地服务器上的、小而空的图片。这 样,广告就消失了,且不会影响页面布局。在本质上,重定向器是一个软件程序,它从标准输入里读取URI和其他 信息,并将新的URI写往标准输出。
现有技术中,有几个流行的基于squid应用的重定向器如下
1、 Squirm重定向器可参考http:〃squirm.foote.com.au/;可配置不同客 户组应用不同的重定向列表。
2、 Jesred重定向器可参考http:〃www.linofee.org/~elkner/webtools/jesred/; 功能与Squirm相似,运行速度更快,支持配置重载。
3、 squidGuard重定向器可参考http:〃www.squidguard.org/;功負&与Squirm 相似,有高度可配置性,主要用于广告过滤。
4、 AdZapper重定向器可参考http:〃www.adzapper.sourceforge.net/; Perl 脚本编写,用于从HTML页面里移除广告。
在实际网络中,服务器访问高峰期,流量压力很大,导致服务器负荷升高, 降低服务质量;因此,有必要通过重定向进行流量迁移,将部分超出允许流量 范围的用户访问迁移到另外一个备用服务器上,从而降低原服务器的压力,保 持高峰期的访问质量不下降。而上述现有技术方案中基于squid应用的重定向 器,全部都只针对客户组IP配置进行访问控制,或者广告过滤,不能按照服 务器的当前流量大小进行重定向,无法达到负载均衡的目的。

发明内容
本发明提供一种服务器流量控制方法,解决现有技术中存在的不能根据服 务器的当前流量进行重定向实现负载均衡的问题。 本发明方法包括
使用重定向器周期捕捉服务器网卡的当前流量,并存储当前流量值; 启动squid程序模块接收用户发起的访问服务器请求,并向所述重定向器 转发用户数据;
当所述重定向器判断出当前流量值达到或超过设定的流量阈值时,将该用 户请求重定向到备用服务器处理。
根据本发明的上述方法,所述重定向器将服务器网卡的当前流量值存储到共享内存中;当接收到squid程序模块转发的用户数据后,从所述共享内存中
读取当前流量值与设定的流量阈值进行比较。
根据本发明的上述方法,当所述重定向器判断出当前流量值达到或超过设
定的流量阈值时,执行下列步骤
所述重定向器将用户数据中的全局资源标识符URI改写为所述备用服务 器的URI,返回用户数据给所述squid程序模块;
所述squid程序模块根据返回的用户数据中的URI,将用户请求发送到对 应的备用服务器处理;
当所述重定向器判断出当前流量值小于设定的流量阈值时,执行下列步

所述重定向器直接将接收的用户数据或空行返回给所述squid程序模块; 所述squid程序才莫块根据返回的用户数据中的URI或读取到空行后,将用 户请求发送到原服务器处理。
所述备用服务器的URI为备用服务器对应的域名。
所述重定向器釆用标准输出返回用户数据给所述squid程序模块,并且在 改写后的URI前插入"301:,,、 "302:"、 "303:,,或 "307:,,;
所述squid程序模块向发起请求的用户客户端返回超文本传送协议HTTP 重定向消息。
本发明提供一种重定向器,包括流量捕捉模块和重定向处理模块; 所述流量捕捉才莫块周期捕捉服务器网卡的当前流量,并存储当前流量值; 所述重定向处理;f莫块接收squid程序模块转发的用户请求访问服务器的用 户数据后,比较当前流量值和设定的流量阈值大小,当判断出当前流量值达到 或超过设定的流量阈值时,将该用户请求重定向到备用服务器处理。
本发明提供的重定向器还包括流量读取模块,读取存储的当前流量值,输 出给显示或打印设备。
所述重定向处理模块包括
用户数据接收子模块,接收squid程序模块转发的用户请求访问服务器的
用户数据,启动判断子才莫块;
判断子模块,读取存储的当前流量值,比较当前流量值和设定的流量阈值 大小,当判断出当前流量值达到或超过设定的流量阈值时,启动第一用户数据 输出子模块;当判断出当前流量值小于设定的流量阈值时,启动第二用户数据 输出子模块;
第 一用户数据输出子^^莫块,将用户数据中的全局资源标识符URI改写为备 用服务器的URI,返回用户数据给所述squid程序模块;
第二用户数据输出子模块,将接收的用户数据或空行返回给所述squid程
序模块。
本发明另提供一种服务器流量控制系统,包括原服务器、备用服务器和 重定向器;
所述原服务器和备用服务器中包括squid程序才莫块;所述原服务器中还包 括重定向器;
所述重定向器周期捕捉原服务器网卡的当前流量,并存储当前流量值;
原服务器中的squid程序模块接收用户发起的请求访问服务器请求后,向 所述重定向器转发用户数据;
当所述重定向器判断出当前流量值达到或超过"i殳定的流量阈值时,将该用 户请求重定向到所述备用服务器,由原服务器中的squid程序模块将用户请求 发送到对应的备用服务器处理。
本发明提供的服务器流量控制系统中重定向器为多个,组成重定向器池; 每个重定向器并行工作;所述备用服务器为多个。
本发明有益效果如下
本发明使用重定向器周期捕捉服务器网卡的当前流量,并存储当前流量 值;启动squid程序模块接收用户发起的访问服务器请求,并向所述重定向器 转发用户数据;当所述重定向器判断出当前流量值达到或超过设定的流量阈值
时,将该用卢请求重定向到备用服务器处理。这样,本发明在现有squid应用 的基础上,利用squid提供的可配置的重定向功能接口,设计出具有流量控制、 重定向功能的重定向器,达到服务器流量负载均衡的目的,緩解服务器高峰期 的流量压力,同时利用squid本身带Cache緩存以及高效响应的优势,能确保 用户访问质量不下降,实现流量平稳迁移。


图1为本发明服务器流量控制方法实现流程图; 图2为本发明重定向器结构示意图; 图3为本发明服务器流量控制系统结构示意图之一; 图4为本发明服务器流量控制系统结构示意图之二。
具体实施例方式
本发明提供一种服务器流量控制方法,包括
使用重定向器周期捕捉服务器网卡的当前流量,并存储当前流量值; 启动squid程序模块接收用户发起的访问服务器请求,并向所述重定向器 转发用户数据;
当重定向器判断出当前流量值达到或超过设定的流量阈值时,将该用户请 求重定向到备用服务器处理。
下面结合附图,对本发明的上述方法加以详细描述。
根据squid提供的重定向器配置和实现的对外接口 ,可以设计具有流量控 制功能的独立的重定向器。该重定向器实现如下三项功能
1、 流量捕捉(fluxd);
2、 重定向处理(rdtd);
3、 流量读取(showflux)。
fluxd是一个后台(Daemon)进程,根据用户配置,定时捕捉服务器网卡
当前流量,存储捕捉的当前流量值;例如把流量值放入共享内存,提供给rdtd 使用。
rdtd是一个循环执行不退出的程序,由squid调用,通过squid的接口,不 断地与squid进行数据交互,并判断流量是否超过设定的流量阈值,从而决定 是否对用户请求的URI (或URL)进行重定向处理。
showflux是一个外部工具程序,运维人员和用户可以使用该工具查看共享 内存中记录的当前网卡流量值,通过显示终端或打印设备进行输出。
本发明提供的重定向器与squid程序模块的处理流程,如图l所示,具体 包括
1) 在fluxd的配置文件fluxd.conf中配置需要采集的网卡以及采集流量的 时间间隔;fluxd进程根据fluxd.conf中的配置信息定时(在用户设定的周期到 达时刻)捕捉需要采集的网卡流量,并将获取到的当前流量值写入共享内存中 保存;
2) showflux程序读取共享内存中存储的当前流量值,可以通过打印设备 打印出当前流量;
3) rdtd的配置文件rdtd.xml使用扩展标识语言XML标准数据格式,在 rdtd.xml中主要配置启动重定向处理时的流量阈值,以及备用服务器标识(如 备用J良务器URI或URL)和端口信息;
4) 在原服务器中启动squid程序模块,由squid调用rdtd程序循环执行 (squid作为主进程,rdtd作为线程运行);
当squid程序模块接收到用户发起的访问服务器请求后,采用标准输入方 式(stdin)将用户数据通过squid的接口发送到rdtd程序模块,rdtd程序模块 读取共享内存中存储的当前流量值和rdtd的配置文件rdtd.xml,判断当前流量 值是否超过了设定的流量阈值,并根据判断结果进行如下处理
a)当判断出当前流量值达到或超过设定的流量阈值时,将用户数据中的 全局资源标识符URI改写为备用服务器的URI,采用标准输出方式(stdout) 返回用卢数据给squid程序模块(squid主进程);squid主进程根据返回的用户 数据中的URI,将用户请求发送到对应的备用服务器处理;b)当判断出当前流量值小于设定的流量阈值时,直接将接收的用户数据 或空行返回给squid程序模块(squid主进程);squid主进程根据返回的用户数 据中的URI或读取到空行后,将用户请求发送到原服务器处理。当重定向器改变用户数据的URI时,客户端通常不知道squid决定抓取 新的资源,为了让squid返回HTTP重定向消息, 一种简单的实现方法是在 改变后的URI前面插入HTTP协议的重定向指令代码"301:", "302:", "303:" 或"307:,,。例如,在重定向器的标准输出里写如下行 301 :http:〃www.example.com/page2.html ; Squid返回类似如下的响应到客户端 HTTP/1.0 301 Moved Permanently Server: squid/2.5.STABLE4 Date: Mon, 29 Sep 2003 04:06:23 GMT Content-Length: 0Location: http:〃www.example.com/page2.html X-Cache: MISS from zoidberg Proxy-Connection: close下面是一个重定向器的具体例子,该重定向器需要将对请求 www.squid-cache.org或其镜l象站点之一的URI,输出新的URI,将重定向后的 主机名设为wwwl.au.squid-cache.org (假设stdout不可緩存),具体程序语句 如下#!/usr/bin/perl -wl$|=1; # don't buffer the outputwhile ( ) {($uri,$client,$ident,$method)=();
($uri,$client,$ident,$method) = split;next unless ($uri ^ m,Ahttp:〃.*Vsquid-cache\.org(\S*),);$uri = "http:〃wwwl.au.squid-cache.org$l";} continue {print "$uri";在本发明上述方法中所使用的重定向器IOO具体结构如图2所示,包括 流量捕捉;漠块101和重定向处理模块102;流量捕捉模块101周期捕捉服务器网卡的当前流量,并存储当前流量值;重定向处理模块102接收squid程序模块转发的用户请求访问服务器的用 户数据后,比较当前流量值和设定的流量阈值大小,当判断出当前流量值达到 或超过设定的流量阈值时,将该用户请求重定向到备用服务器处理;还包括流量读取模块103,读取存储的当前流量值,输出给显示或打印设备。其中,重定向处理模块102具体包括用户数据接收子模块1021,接收squid程序模块转发的用户请求访问服务 器的用户数据,启动判断子模块1022;判断子模块1022,读取存储的当前流量值,比较当前流量值和设定的流量 阈值大小,当判断出当前流量值达到或超过设定的流量阈值时,启动第一用户 数据输出子模块1023;当判断出当前流量值小于设定的流量阈值时,启动第二 用户数据输出子模块1024;第一用户数据输出子模块1023,将用户数据中的全局资源标识符URI改 写为备用服务器的URI,返回用户数据给squid程序模块;第二用户数据输出子模块1024,将接收的用户数据或空行返回给squid程 序模块。根据本发明提供的上述方法,本发明另提供一种服务器流量控制系统,其 结构示意图如图3所示,包括原服务器20、备用服务器21和重定向器100;在原服务器和备用服务器中包括squid程序模块200;在原服务器中还包 括重定向器100;所述重定向器100周期捕捉原服务器网卡的当前流量,并存储当前流量值;原服务器中的squid程序模块200接收用户发起的访问服务器请求后,向 重定向器100转发用户数据;当重定向器100判断出当前流量值达到或超过设定的流量阈值时,将该用 户请求重定向到备用服务器21,由原服务器中的squid程序模块200将用户请 求发送到对应的备用服务器21处理。在本发明提供的上述服务器流量控制系统中,重定向器100可以是多个, 备用服务器21也可以是多个;如图4所示,多个重定向器100组成重定向器 池201,每个重定向器并行工作。当squid程序模块接收到一个新请求时,按 顺序检查重定向器池中的各重定向器,将当前请求提交给检查到的第一个空闲 重定向器处理。用户可以使用squid.conf指令中的redirecLchildren指令来改变 重定向器池中的重定向器数量。当系统中配置了多个备用服务器21时,重定向器100可以随机选择一个 备用服务器21作为重定向后的目标服务器;也可以根据各备用服务器21的负 载状况选择一个当前负载较轻的备用服务器作为重定向后的目标服务器。综上所述,本发明在现有squid应用的基础上,利用squid程序提供的可 配置的重定向功能接口,采用本发明提供的具有流量控制、重定向功能的重定 向器,达到服务器流量负载均衡的目的,緩解了服务器高峰期的流量压力,同 时利用squid本身带Cache緩存以及高效响应的优势,能确保用户访问质量不 下降,实现流量平稳迁移。明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种服务器流量控制方法,其特征在于,包括使用重定向器周期捕捉服务器网卡的当前流量,并存储当前流量值;启动squid程序模块接收用户发起的访问服务器请求,并向所述重定向器转发用户数据;当所述重定向器判断出当前流量值达到或超过设定的流量阈值时,将该用户请求重定向到备用服务器处理。
2、 如权利要求1所述的方法,其特征在于,所述重定向器将服务器网卡 的当前流量值存储到共享内存中;当接收到squid程序模块转发的用户数据后, 从所述共享内存中读取当前流量值与设定的流量阈值进行比较。
3、 如权利要求1所述的方法,其特征在于,当所述重定向器判断出当前 流量值达到或超过设定的流量阈值时,执行下列步骤所述重定向器将用户数据中的全局资源标识符URI改写为所述备用服务 器的URI,返回用户数据给所述squid程序模块;所述squid程序模块根据返回的用户数据中的URI,将用户请求发送到对 应的备用服务器处理;当所述重定向器判断出当前流量值小于设定的流量阈值时,执行下列步骤所述重定向器直接将接收的用户数据或空行返回给所述squid程序模块; 所述squid程序模块根据返回的用户数据中的URI或读取到空行后,将用 户请求发送到原服务器处理。
4、 如权利要求3所述的方法,其特征在于,所述备用服务器的URI为备 用服务器对应的域名。
5、 如权利要求3所述的方法,其特征在于,所述重定向器采用标准输出 返回用户数据给所述squid程序模块,并且在改写后的URI前插入"301:"、 "302:"、 "303:"或 "307:";所述squid程序模块向发起请求的用户客户端返回超文本传送协议HTTP 重定向消息。
6、 一种重定向器,其特征在于,包括流量捕捉模块和重定向处理模块; 所述流量捕捉模块周期捕捉服务器网卡的当前流量,并存储当前流量值; 所述重定向处理模块接收squid程序模块转发的用户请求访问服务器的用户数据后,比较当前流量值和设定的流量阈值大小,当判断出当前流量值达到 或超过设定的流量阈值时,将该用户请求重定向到备用服务器处理。
7、 如权利要求6所述的重定向器,其特征在于,还包括流量读取模块, 读取存储的当前流量值,输出给显示或打印设备。
8、 如权利要求6所述的重定向器,其特征在于,所述重定向处理模块包括用户数据接收子模块,接收squid程序模块转发的用户请求访问服务器的 用户数据,启动判断子模块;判断子模块,读取存储的当前流量值,比较当前流量值和设定的流量阈值 大小,当判断出当前流量值达到或超过设定的流量阈值时,启动第一用户数据 输出子模块;当判断出当前流量值小于设定的流量阈值时,启动第二用户数据 输出子模块;第一用户数据输出子模块,将用户数据中的全局资源标识符URI改写为备 用服务器的URI,返回用户数据给所述squid程序模块;第二用户数据输出子模块,将接收的用户数据或空行返回给所述squid程 序模块。
9、 一种服务器流量控制系统,其特征在于,包括原服务器、备用服务 器和重定向器;所述原服务器和备用服务器中包括squid程序模块;所述原服务器中还包 括重定向器;所述重定向器周期捕捉原服务器网卡的当前流量,并存储当前流量值;原服务器中的squid程序模块接收用户发起的请求访问服务器请求后,向 所述重定向器转发用户数据;当所述重定向器判断出当前流量值达到或超过设定的流量阈值时,将该用 户请求重定向到所述备用服务器,由原服务器中的squid程序模块将用户请求 发送到对应的备用服务器处理。
10、如权利要求9所述的服务器流量控制系统,其特征在于,所述重定向 器为多个,组成重定向器池;每个重定向器并行工作;所述备用服务器为多个。
全文摘要
本发明公开了一种服务器流量控制方法,包括使用重定向器周期捕捉服务器网卡的当前流量,并存储当前流量值;启动squid程序模块接收用户发起的访问服务器请求,并向所述重定向器转发用户数据;当所述重定向器判断出当前流量值达到或超过设定的流量阈值时,将该用户请求重定向到备用服务器处理。本发明还公开了相应的重定向器和服务器流量控制系统。采用本发明能实现当服务器的流量达到设定阈值时将用户访问平稳迁移到备用服务器处理。
文档编号H04L12/24GK101127632SQ20061011216
公开日2008年2月20日 申请日期2006年8月15日 优先权日2006年8月15日
发明者刘健全 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1