一种基于Nginx的网络四层与七层间的负载均衡方法及系统与流程

文档序号:23068710发布日期:2020-11-25 18:49阅读:167来源:国知局
一种基于Nginx的网络四层与七层间的负载均衡方法及系统与流程

本发明公开一种基于nginx的网络四层与七层间的负载均衡方法及系统,涉及云计算技术领域。



背景技术:

当对服务器请求达到一定的数量的时候,由于各种资源被大量占用,服务器对请求的处理能力就会显著下降。为了应对这种情况,负载均衡技术应运而生。

nginx是一个http服务器,它具有丰富的语法,可以对被监听ip及端口进行设置,可以配置校验请求中的域名,还可以配置对请求中的路径的配置规则,进而配置请求转发的目的地等。

对于利用nginx实现负载均衡,主要有以下概念:

监听器:由ip、端口组合成的一条监听规则,每一个监听器对应一个负载均衡服务。

转发策略:仅针对七层http协议而言,为请求路径设定转发规则,不同规则有不同的转发方式。

后端服务器:请求转发的目的地,是真正对请求进行处理的机器,可以有一到多个。

为了实现四层和七层之间的高效转发,提高nginx的负载平衡,现发明一种基于nginx的网络四层与七层间的负载均衡方法及系统以实现该问题。



技术实现要素:

本发明针对现有技术的问题,提供一种基于nginx的网络四层与七层间的负载均衡方法及系统,所采用的技术方案为:一种基于nginx的网络四层与七层间的负载均衡方法,所述的方法具体步骤如下:

s1利用listen配置项指定当前监听的ip及端口,判断请求是否处理;

s2利用server_name配置项指定请求中的域名;

s3利用location配置项对符合指定server配置项处理的uri样式的请求继续转发;

s4利用upstream配置项指定转发的目的地。

所述s3利用location配置项对符合指定server配置项处理的uri样式的请求继续转发的具体步骤如下:

s301判断请求路径是否符合当前样式;

s302符合,则通过proxy_pass配置指定转发的目的地;

s312不符合,则向nginx会返回错误信息。

所述s3中的location配置项采用配置优先级、最长串匹配原则的uri匹配方式,

所述s3中的location配置项通过ession_sticky_hide_cookie项指定会话保持,指定upstream名称,将会话保持功能配置参数配置再upstream配置像中。

所述s4利用upstream配置项根据proxy_pass配置指定转发的目的地。

一种基于nginx的网络四层与七层间的负载均衡系统,所述的系统具体包括请求处理模块、域名设定模块、请求处理模块和请求转发模块:

请求处理模块:利用listen配置项指定当前监听的ip及端口,判断请求是否处理;

域名设定模块:利用server_name配置项指定请求中的域名;

请求处理模块:利用location配置项对符合指定server配置项处理的uri样式的请求继续转发;

请求转发模块:利用upstream配置项指定转发的目的地。

所述请求处理模块具体包括路径判断模块、处理模块a和处理模块b:

路径判断模块:判断请求路径是否符合当前样式;

处理模块a:符合,则通过proxy_pass配置指定转发的目的地;

处理模块b:不符合,则向nginx会返回错误信息。

所述请求处理模块中的location配置项采用配置优先级、最长串匹配原则的uri匹配方式,

所述请求处理模块中的location配置项通过ession_sticky_hide_cookie项指定会话保持,指定upstream名称,将会话保持功能配置参数配置再upstream配置像中。

所述请求转发模块利用upstream配置项根据proxy_pass配置指定转发的目的地。

本发明的有益效果为:通过利用nginx可以实现配置负载均衡,完成对网络四层及七层的数据转发。降低服务器的负载,另外可以提供对服务器或服务器组的健康检查等功能,提高服务处理能力,实现对资源高效均衡地利用。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明方法的流程图;图2是本发明系统的结构示意图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

nginx中对七层转发配置及四层转发的配置设置于不同的配置项中,四层对应于stream配置项,七层对应于http配置项,四层配置的语法是七层配置语法的子集,http配置项包括server配置项和upstream配置项;

其中,server配置项包括listen配置项、server_name配置项、location配置项、upstream配置项;

实施例一:

一种基于nginx的网络四层与七层间的负载均衡方法,,所述的方法具体步骤如下:

s1利用listen配置项指定当前监听的ip及端口,判断请求是否处理;

s2利用server_name配置项指定请求中的域名;

s3利用location配置项对符合指定server配置项处理的uri样式的请求继续转发;

s4利用upstream配置项指定转发的目的地;

首先按照s1利用listen配置项指定当前server配置项所坚挺监听的ip及端口,这里以ip:port的形式来对其进行指定,一条server配置项就相当于一个监听器,当nginx进行请求处理时,它首先根据此项配置来决定一个请求是否可以被处理,只要请求中携带的ip和端口信息符合配置,nginx就有可能根据这项配置来转发请求;然后按照s2利用server_name配置项指定请求中的域名,如果域名匹配成功则由当前server配置项来处理请求,否则继续寻找下一配置项;当决定了由哪个server配置项处理后,需要按照s3利用location配置项对请求进行处理,location配置项中指明了一个它可以处理的uri的样式,如果请求路径符合当前样式,则进行转发;http配置中的另一大配置项就是upstream配置,最后按照s4利用upstream配置会指定一个名字来表示一个转发的目的地;

四层负载均衡配置在stream配置项里,里面也是用server指定ip即端口的配置,但是server里可以配置的内容有限,由于是四层,故无法配置域名等配置项;

通过利用nginx可以实现配置负载均衡,完成对网络四层及七层的数据转发。降低服务器的负载,另外可以提供对服务器或服务器组的健康检查等功能,提高服务处理能力,实现对资源高效均衡地利用;

进一步的,s3利用location配置项对符合指定server配置项处理的uri样式的请求继续转发的具体步骤如下:

s301判断请求路径是否符合当前样式;

s302符合,则通过proxy_pass配置指定转发的目的地;

s312不符合,则向nginx会返回错误信息;

在location配置项读取到请求路径的当前样式时,首先按照s301判断请求路径是否符合当前样式;符合,则按照s302通过proxy_pass配置指定转发的目的地;如果一个server配置项中的所有location配置项都不能处理当前请求,则按照s312向nginx会返回错误信息;

进一步的,所述s3中的location配置项采用配置优先级、最长串匹配原则的uri匹配方式;location配置项中可以配置多种uri的匹配方式,其中优先级匹配方式由高到低级依次是:由“=”表示的精确匹配,由“^~”表示的常规路径匹配,由“~”表示的正则匹配和由“/”代表的低优先级常规路径匹配。其中正则匹配中可以在“~”后加“*”表示匹配规则不区分大小写,在“~”前可以加“!”表示匹配规则取反则可以命中;另外对于低优先级的常规路径匹配,采取的是最长串匹配原则,正则匹配按照文件配置的顺序来匹配,即谁在前谁优先命中优先匹配;

另外由于{}在nginx中表示一段配置的开始,因此正则表达式如果包含了{}整个表达式应该由""包含起来;

进一步的,s3中的location配置项通过ession_sticky_hide_cookie项指定会话保持,指定upstream名称,将会话保持功能配置参数配置再upstream配置像中;

另外在location配置项中还可以通过ession_sticky_hide_cookie项指定会话保持,此项中会指定upstream名称,具体的会话保持功能配置参数会配置在upstream配置块中,会话保持功能保证了同一个客户端的请求会一直被转发到同一个后端服务器上;

再进一步的,用upstream配置项根据proxy_pass配置指定转发的目的地;upstream配置项中还可以指定会话保持和健康检查的配置。

实施例二:

一种基于nginx的网络四层与七层间的负载均衡系统,所述的系统具体包括请求处理模块、域名设定模块、请求处理模块和请求转发模块:

请求处理模块:s1利用listen配置项指定当前监听的ip及端口,判断请求是否处理;

域名设定模块:s2利用server_name配置项指定请求中的域名;

请求处理模块:s3利用location配置项对符合指定server配置项处理的uri样式的请求继续转发;

请求转发模块:s4利用upstream配置项指定转发的目的地;

首先通过请求处理模块利用listen配置项指定当前server配置项所坚挺监听的ip及端口,这里以ip:port的形式来对其进行指定,一条server配置项就相当于一个监听器,当nginx进行请求处理时,它首先根据此项配置来决定一个请求是否可以被处理,只要请求中携带的ip和端口信息符合配置,nginx就有可能根据这项配置来转发请求;然后通过域名设定模块利用server_name配置项指定请求中的域名,如果域名匹配成功则由当前server配置项来处理请求,否则继续寻找下一配置项;当决定了由哪个server配置项处理后,需要通过请求处理模块利用location配置项对请求进行处理,location配置项中指明了一个它可以处理的uri的样式,如果请求路径符合当前样式,则进行转发;http配置中的另一大配置项就是upstream配置,最后通过请求转发模块利用upstream配置会指定一个名字来表示一个转发的目的地;

四层负载均衡配置在stream配置项里,里面也是用server指定ip即端口的配置,但是server里可以配置的内容有限,由于是四层,故无法配置域名等配置项;

通过利用nginx可以实现配置负载均衡,完成对网络四层及七层的数据转发。降低服务器的负载,另外可以提供对服务器或服务器组的健康检查等功能,提高服务处理能力,实现对资源高效均衡地利用;

进一步的,所述请求处理模块具体包括路径判断模块、处理模块a和处理模块b:

路径判断模块:判断请求路径是否符合当前样式;

处理模块a:符合,则通过proxy_pass配置指定转发的目的地;

处理模块b:不符合,则向nginx会返回错误信息;

在location配置项读取到请求路径的当前样式时,首先通过路径判断模块判断请求路径是否符合当前样式;符合,则利用处理模块a通过proxy_pass配置指定转发的目的地;如果一个server配置项中的所有location配置项都不能处理当前请求,则利用处理模块b向nginx会返回错误信息;

进一步的,所述请求处理模块中的location配置项采用配置优先级、最长串匹配原则的uri匹配方式;location配置项中可以配置多种uri的匹配方式,其中优先级匹配方式由高到低级依次是:由“=”表示的精确匹配,由“^~”表示的常规路径匹配,由“~”表示的正则匹配和由“/”代表的低优先级常规路径匹配。其中正则匹配中可以在“~”后加“*”表示匹配规则不区分大小写,在“~”前可以加“!”表示匹配规则取反则可以命中;另外对于低优先级的常规路径匹配,采取的是最长串匹配原则,正则匹配按照文件配置的顺序来匹配,即谁在前谁优先命中优先匹配;

另外由于{}在nginx中表示一段配置的开始,因此正则表达式如果包含了{}整个表达式应该由""包含起来;

进一步的,所述请求处理模块中的location配置项通过ession_sticky_hide_cookie项指定会话保持,指定upstream名称,将会话保持功能配置参数配置再upstream配置像中;

另外在location配置项中还可以通过ession_sticky_hide_cookie项指定会话保持,此项中会指定upstream名称,具体的会话保持功能配置参数会配置在upstream配置块中,会话保持功能保证了同一个客户端的请求会一直被转发到同一个后端服务器上;

再进一步的,所述请求转发模块利用upstream配置项根据proxy_pass配置指定转发的目的地中还可以指定会话保持和健康检查的配置;

当nginx接受到一个七层请求时,它会先对请求中的ip端口进行匹配,当ip端口有对应的配置项时,它会再去匹配域名,当前配置项可以匹配对应的域名时,就会根据当前配置项进行路径及转发解析,当前配置项与请求不匹配时,nginx会接着读取下一项配置匹配,如果读取到最后一条配置还是无法完成匹配,就会按照可以根据ip和端口匹配到的第一条来分析。进入到某一条具体的配置项之后nginx会读出当前配置的所有的路径转发配置,按照优先级对请求进行匹配,同一优先级先命中先匹配。匹配到了就会根据当前配置中的具体转发规则进行相应的转发;匹配不到就会返回一条错误信息。另外在转发服务器组的配置项中,可以选择转发算法,开启对后端服务器组的健康检查,开启会话保持等功能。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1