简单了解Nginx七层负载均衡的几种调度算法_nginx

来源:脚本之家  责任编辑:小易  

第一,技术原理上的区别。所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。以常见的TCP为例,负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。第二,应用场景的需求。七层应用负载的好处,是使得整个网络更"智能化",参考我们之前的另外一篇专门针对HTTP应用的优化的介绍,就可以基本上了解这种方式的优势所在。例如访问一个网站的用户流量,可以通过七层的方式,将对图片类的请求转发到特定的图片服务器并可以使用缓存技术;将对文字类的请求可以转发到特定的文字服务器并可以使用压缩技术。当然这只是七层应用的一个小案例,从技术原理上,这种方式可以对客户端的请求和服务器的响应进行任意意义上的修改,极大的提升了应用系统在网络层的灵活性。很多在后台,(例如Nginx或者Apache)上部署的功能可以前移到负载均衡设备上,例如客户请求中的Header重写,服务器响应中的关键字过滤或者内容插入等功能。另外一个常常被提到功能就是安全性。网络中最常见的SYN Flood攻击,即黑客控制众多源客户端,使用虚假IP地址对同一目标发送SYN攻击,通常这种攻击会大量发送SYN报文,耗尽服务器上的相关资源,以达到Denial of Service(DoS)的目的。从技术原理上也可以看出,四层模式下这些SYN攻击都会被转发到后端的服务器上;而七层模式下这些SYN攻击自然在负载均衡设备上就截止,不会影响后台服务器的正常运营。另外负载均衡设备可以在七层层面设定多种策略,过滤特定报文,例如SQL Injection等应用层面的特定攻击手段,从应用层面进一步提高系统整体安全。现在的7层负载均衡,主要还是着重于应用广泛的HTTP协议,所以其应用范围主要是众多的网站或者内部信息平台等基于B/S开发的系统。4层负载均衡则对应其他TCP应用,例如基于C/S开发的ERP等系统。第三,七层应用需要考虑的问题。1:是否真的必要,七层应用的确可以提高流量智能化,同时必不可免的带来设备配置复杂,负载均衡压力增高以及故障排查上的复杂性等问题。在设计系统时需要考虑四层七层同时应用的混杂情况。2:是否真的可以提高安全性。例如SYN Flood攻击,七层模式的确将这些流量从服务器屏蔽,但负载均衡设备本身要有强大的抗DDoS能力,否则即使服务器正常而作为中枢调度的负载均衡设备故障也会导致整个应用的崩溃。3:是否有足够的灵活度。七层应用的优势是可以让整个应用的流量智能化,但是负载均衡设备需要提供完善的七层功能,满足客户根据不同情况的基于应用的调度。最简单的一个考核就是能否取代后台Nginx或者Apache等服务器上的调度功能。能够提供一个七层应用开发接口的负载均衡设备,可以让客户根据需求任意设定功能,才真正有可能提供强大的灵活性和智能性www.zgxue.com防采集请勿采集本网。

这篇文章主要介绍了简单了解Nginx七层负载均衡的几种调度算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。以常见的TCP为例,负载均衡设备如果要根据

Nginx是一款轻量级的高性能web服务器,同时也是一款非常优秀的负载均衡器和反向代理服务器。由于支持强大的正则匹配规则、动静分离、URLrewrite功能及安装配置简单且对网络稳定性依赖非常小等优点,所以常用来做为七层负载均衡使用。在硬件不差的情况下,通常可以稳定支持几万的并发连接,在硬件性能足够好,且对系统内核参数及Nginx配置进行优化甚至可以达到10万以上的并发。

四层负载均衡和七层负载均衡区别,1:技术原理上的区别,2:应用场景的需求,3:七层应用需要考虑的问题。以下是详解: 第一,技术原理上的区别。所谓四层负载均衡,也就是主要通过报文中的目标

以下是Nginx作为七层负载均衡常用的几种调度算法和适用的业务场景

所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。以常见的TCP为例,负载均衡设备如果要根据

1、轮询(默认调度算法)

【四层负载均衡和七层负载均衡的区别】 1、第一,技术原理上的区别: 所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部

特点:每个请求按时间顺序逐一分配到不同的后端服务器处理。

所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。以常见的TCP为例,负载均衡设备如果要根据

适用业务场景:后端服务器硬件性能配置完全一致,业务无特殊要求时使用。

upstream backendserver { server 192.168.0.14:80 max_fails=2 fail_timeout=10s; server 192.168.0.15:80 max_fails=2 fail_timeout=10s; }

2、加权轮询

特点:指定轮询几率,weight值(权重)和访问比例成正比,用户请求按权重比例分配。

适用业务场景:用于后端服务器硬件性处理能力不平均的情形。

upstream backendserver { server 192.168.0.14:80 weight=5 max_fails=2 fail_timeout=10s; server 192.168.0.15:80 weight=10 max_fails=2 fail_timeout=10s;}

3、ip_hash

特点:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session会话保持问题。

适用业务场景:适用于需要账号登录的系统,会话连接保持的业务。

upstream backendserver { ip_hash; server 192.168.0.14:80 max_fails=2 fail_timeout=10s; server 192.168.0.15:80 max_fails=2 fail_timeout=10s; }

4、最少连接数 least_conn

特点:按nginx反向代理与后端服务器之间的连接数,连接数最少的优先分配。

适用业务场景:适用于客户端与后端服务器需要保持长连接的业务。

upstream backendserver { least_conn;server 192.168.0.14:80 max_fails=2 fail_timeout=10s; server 192.168.0.15:80 max_fails=2 fail_timeout=10s; }

5、fair(需编译安装第三方模块 ngx_http_upstream_fair_module)

特点:按后端服务器的响应时间来分配请求,响应时间短的优先分配。

适用业务场景:对访问响应速度有一定要求的业务。

upstream backendserver {fair; server 192.168.0.14:80 max_fails=2 fail_timeout=10s; server 192.168.0.15:80 max_fails=2 fail_timeout=10s; }

6、url_hash(需编译安装第三方模块 ngx_http_upstream_hash_module)

特点:按访问url的hash结果来分配请求,使同一个url访问到同一个后端服务器。

适用业务场景:适用于后端服务器为缓存服务器时比较有效。

upstream backendserver { server 192.168.0.14:80 max_fails=2 fail_timeout=10s;server 192.168.0.15:80 max_fails=2 fail_timeout=10s; hash $request_uri; }

简单理解四层和七层负载均衡:① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器。② 所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决定怎么样转发流量。比如四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。③ 负载均衡器通常称为四层交换机或七层交换机。四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。1、负载均衡分为L4 switch(四层交换),即在OSI第4层工作,就是TCP层啦。此种Load Balance不理解应用协议(如HTTP/FTP/MySQL等等)。例子:LVS,F5。2、另一种叫做L7 switch(七层交换),OSI的最高层,应用层。此时,该Load Balancer能理解应用协议。例子:haproxy,MySQL Proxy。注意:上面的很多Load Balancer既可以做四层交换,也可以做七层交换内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 深入浅析nginx四种调度算法和进阶
  • nginx 负载均衡算法及故障转移解析
  • 为nginx启用brotli压缩算法的方法示例
  • nginx启用brotli算法压缩的示例
  • 如何使用nginx充当mysql的负载均衡器
  • springboot+nginx+https+linux实现负载均衡加域名访问简单测试
  • 使用docker compose 实现nginx负载均衡的方法步骤
  • 详解nginx服务器之负载均衡策略(6种)
  • 修改nginx屏蔽网址的规则的方法
  • 详解nginx限流配置
  • nginx简介_动力节点java学院整理
  • 详解基于centos 7配置nginx自启动
  • nginx+keepalived实现双机热备
  • nginx利用referer指令实现防盗链配置
  • nginx 基本入门教程
  • nginx ssl免密码重启教程详解
  • nginx、apache、lighttpd禁止目录执行php配置示例
  • 解决nginx报错信息 client intended to send too large body: 13
  • 负载均衡四层和七层的区别
  • 四层负载均衡和七层负载均衡的区别
  • nginx负载均衡怎么访问数据库
  • 四层负载均衡和七层负载均衡的区别
  • 四层负载均衡和七层负载均衡的区别
  • 四层负载均衡和七层负载均衡的区别
  • 四层和七层负载均衡的区别
  • 四层负载均衡和七层负载均衡的区别
  • 四层和七层负载均衡的区别
  • 四层负载均衡和七层负载均衡的区别
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全星外虚拟主机华众虚拟主机linuxwin服务器ftp服务器dns服务器tomcat nginxzabbix云和虚拟化服务器其它首页服务器nginx深入浅析nginx四种调度算法和进阶nginx 负载均衡算法及故障转移解析为nginx启用brotli压缩算法的方法示例nginx启用brotli算法压缩的示例如何使用nginx充当mysql的负载均衡器springboot+nginx+https+linux实现负载均衡加域名访问简单测试使用docker compose 实现nginx负载均衡的方法步骤详解nginx服务器之负载均衡策略(6种)修改nginx屏蔽网址的规则的方法详解nginx限流配置nginx简介_动力节点java学院整理详解基于centos 7配置nginx自启动nginx+keepalived实现双机热备nginx利用referer指令实现防盗链配置nginx 基本入门教程nginx ssl免密码重启教程详解nginx、apache、lighttpd禁止目录执行php配置示例解决nginx报错信息 client intended to send too large body: 13nginx提示:500 internal servernginx 多站点配置方法集合权限问题导致nginx 403 forbiddenginx fastcgi错误primary scripnginx服务器的反向代理proxy_pasnginx 403 forbidden的解决办法nginx伪静态配置和常用rewrite伪nginx下301重定向域名的方法小结详解nginx服务器中配置超时时间的windows下nginx+php5的安装与配置nginx返回json或者文本格式的方法keepalived+nginx高可用实现方法示例nginx中虚拟主机与指定访问路径的设置方法详解nginx高并发场景下的优化详解基于centos7搭建nginx网站服务器(包nginx批量添加二级子域名完美方案nginx配置文件nginx.conf的常用配置方法nginx的正则表达式详解详解nginx反向代理实现会话(session)保
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved