首页 > 系统相关 >nginx load balance

nginx load balance

时间:2022-10-30 22:34:53浏览次数:48  
标签:load 负载 四层 七层 server nginx 均衡 服务器 balance

load balance

https://zhuanlan.zhihu.com/p/64777456

 

四层负载均衡(tcp)

在三层负载均衡的基础上,用 ip+port 接收请求,再转发到对应的机器。

七层负载均衡(http)

根据虚拟的 url 或 IP,主机名接收请求,再转向相应的处理服务器。

在实际应用中,比较常见的就是四层负载及七层负载。这里也重点说下这两种负载。

 

四层

四层负载均衡(基于IP+端口的负载均衡)

所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

layer4

  1. 在三层负载均衡的基础上,通过发布三层的 IP 地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行 NAT 处理,转发至后台服务器,并记录下这个 TCP 或者 UDP 的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。(注:NAT:Network Address Translation)
  2. 以常见的 TCP 为例,负载均衡设备在接收到第一个来自客户端的 SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标 IP 地址进行修改(改为后端服务器 IP),直接转发给该服务器。TCP 的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。
  3. 对应的负载均衡器称为四层交换机(L4 switch),主要分析 IP 层及 TCP/UDP 层,实现四层负载均衡。此种负载均衡器不理解应用协议(如 HTTP/FTP/MySQL 等等)。要处理的流量进行 NAT 处理,转发至后台服务器,并记录下这个 TCP 或者 UDP 的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。
  4. 实现四层负载均衡的软件有:
  • F5:硬件负载均衡器,功能很好,但是成本很高
  • lvs:重量级的四层负载软件
  • nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵活
  • haproxy:模拟四层转发,较灵活

七层

七层的负载均衡(基于虚拟的 URL 或主机 IP 的负载均衡)

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

layer7

  1. 在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个 Web 服务器的负载均衡,除了根据 VIP 加 80 端口辨别是否需要处理的流量,还可根据七层的 URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的 Web 服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。
  2. 以常见的 TCP 为例,负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建立 TCP 连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。
  3. 对应的负载均衡器称为七层交换机(L7 switch),除了支持四层负载均衡以外,还有分析应用层的信息,如 HTTP 协议 URI 或 Cookie 信息,实现七层负载均衡。此种负载均衡器能理解应用协议。
  4. 实现七层负载均衡的软件有:
  • haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移
  • nginx:只在 http 协议和 mail 协议上功能比较好,性能与 haproxy 差不多
  • apache:功能较差
  • Mysql proxy:功能尚可

 

区别

举个例子形象的说明:四层负载均衡就像银行的自助排号机,每一个达到银行的客户根据排号机的顺序,选择对应的窗口接受服务;而七层负载均衡像银行大堂经理,先确认客户需要办理的业务,再安排排号。这样办理理财、存取款等业务的客户,会根据银行内部资源得到统一协调处理,加快客户业务办理流程。

 

Nginx配置

https://www.cnblogs.com/nshgo/p/11727386.html

四层

stream {       server {           listen 30028;           proxy_pass appserver;       }       upstream appserver{           server 10.0.0.12:8080 weight=2;           server 10.0.0.13:8080 weight=2;       } }

 

七层

upstream appserver {       server 10.0.0.12:8080 weight=2;       server 10.0.0.13:8080 weight=2; } server {     listen       80;     server_name  localhost;     location / {        proxy_pass http://appserver;     }  

 

标签:load,负载,四层,七层,server,nginx,均衡,服务器,balance
From: https://www.cnblogs.com/lightsong/p/16842517.html

相关文章

  • CDH重启换了Namenode节点后,提示Encountered exception loading fsimage
    报错代码如下:Encounteredexceptionloadingfsimagejava.io.IOException:NameNodeisnotformatted.atorg.apache.hadoop.hdfs.server.namenode.FSImage.recoverTra......
  • 使用HTML+CSS实现网页loading加载效果,支持定时或加载完成后隐藏
    网页使用loading可以给用户带来更好的体验,避免网页渲染中长时间出现网页整体空白从而影响访客的体验,loading在部分大型APP也有在应用。下面使用HTML+CSS+JS实现完整的Loadin......
  • 使用HTML+CSS实现网页loading加载效果,支持定时或加载完成后隐藏
    网页使用loading可以给用户带来更好的体验,避免网页渲染中长时间出现网页整体空白从而影响访客的体验,loading在部分大型APP也有在应用。下面使用HTML+CSS+JS实现完整的Loa......
  • Vue学习笔记之loading
    1、在提交按钮上加入         :loading="loading"(注意前面有冒号)2、在return下加入          loading: false,先声明一下3、在刚进......
  • 驱动开发:内核监视LoadImage映像回调
    在笔者上一篇文章`《驱动开发:内核注册并监控对象回调》`介绍了如何运用`ObRegisterCallbacks`注册`进程与线程`回调,并通过该回调实现了`拦截`指定进行运......
  • Nginx源码编译并运行
    获取源码包并解压登录http://nginx.org/en/download.htmlwgethttp://nginx.org/download/nginx-1.20.2.tar.gztar-zxvfnginx-1.20.2.tar.gz安装Nginxcdnginx-1.2......
  • nginx 客户端返回499的错误码
    我们服务器客户端一直有返回错误码499的日志,以前觉得比例不高,就没有仔细查过,最近有领导问这个问题,为什么耗时只有0.0几秒,为啥还499了?最近几天就把这个问题跟踪定位了一下,......
  • nginx容器与php容器连接
    文档说明:只记录关键地方;试验环境:linuxdebian11目标:nginx容器与php容器连接构建PHP容器curl-fsSL'https://curl.haxx.se/ca/cacert.pem'-o/usr/local/etc/p......
  • ELK部署-实现Nginx日志收集
    一、部署ES1、创建网络下载镜像dockernetworkcreateelasticdockerpullelasticsearch:7.17.62、目录准备mkdir/opt/ELK/elastic/{data,config}-pchmod777/o......
  • phpstudy出现乱码导致Apache或者Nginx无法启动
    今天在使用Phpstudy的时候,突然无法创建新站点了(好久没用过了)。错误提示如下:(注意截图位置,端口和时间都是乱码)    经过查阅大量资料,原来是软件的编码格式导致......