Nginx学习-4 负载均衡
程序员文章站
2022-06-27 21:06:04
负载均衡,Load Balancing,就是将对请求的处理分摊到多个操作单元上进行。这个均 衡是指在大批量访问前提下的一种基本均衡,并非是绝对的平均。 对于 Web 工程中的负载均衡,就是将相同的 Web 应用部署到多个不同的 Web 服务器 上,形成多个 Web 应用服务器。当请求到来时,由负载均衡服务器负责将请求按照事先设 定好的比例向 Web 应用服务器进行分发,从而增加系统的整体吞吐量。负载均衡分类(1) 软硬件分类 负载均衡可以通过负载......
负载均衡,Load Balancing,就是将对请求的处理分摊到多个操作单元上进行。这个均
衡是指在大批量访问前提下的一种基本均衡,并非是绝对的平均。
对于 Web 工程中的负载均衡,就是将相同的 Web 应用部署到多个不同的 Web 服务器
上,形成多个 Web 应用服务器。当请求到来时,由负载均衡服务器负责将请求按照事先设
定好的比例向 Web 应用服务器进行分发,从而增加系统的整体吞吐量。
负载均衡分类
(1) 软硬件分类
负载均衡可以通过负载均衡软件实现,也可通过硬件负载均衡器实现
A、硬件负载均衡
硬件负载均衡器的性能稳定,且有生产厂商作为专业的服务团队。但其成本很高,一台
硬件负载均衡器的价格一般都在十几万到几十万,甚至上百万。知名的负载均衡器有 F5、
Array、深信服、梭子鱼等。
B、 软件负载均衡
软件负载均衡成本几乎为零,基本都是开源软件。例如,LVS、HAProxy、Nginx 等。
(2) 负载均衡工作层分类
负载均衡就其所工作的 OSI(开放系统互联模型)层次,在生产应用层面分为四类:
A、七层负载均衡 L7
七层负载均衡,即应用层负载均衡,基于 HTTP 协议的负载均衡。其是通过虚拟的 URL,
将请求分配到真实的服务器。其一般应用于基于 HTTP 协议的 B/S 架构系统。Nginx 提供的就
是七层负载均衡功能。
B、 四层负载均衡 L4
四层负载均衡,即传输层负载均衡,基于 TCP 协议的负载均衡。其是通过虚拟 IP+端口
号的形式,将请求分配到真实的服务器。其一般应用于 C/S 架构的内部 ERP 系统。LVS(Linux
Virtual Server,一种软负载均衡器)和 F5(一种硬件负载均衡设备)提供的就是四层负载均
衡。当然,Nginx Plus(Nginx 的商业授权版)提供了四层负载均衡功能。有些 DNS 提供的也
是四层负载均衡。
C、 三层负载均衡 L3
三层负载均衡,即网络层负载均衡,基于 IP 协议的负载均衡。其是通过虚拟 IP 的形式,
将请求分配到真实的 IP。有些 DNS 提供的是三层负载均衡。
D、二层负载均衡 L2
二层负载均衡,即链路层负载均衡。其是通过虚拟 MAC 地址的形式,将请求分配到真
实 MAC 地址。生产环境中也可以为 DNS 配置二层负载均衡。
负载均衡的实现
(1) 总体规划
该机群包含一台 Nginx 服务器,两台 Tomcat 服务器。将前面打过包的 web 工程直接部
署到两台 Tomcat 主机上。然后,在 Nginx 服务器上设置对这两台 Tomcat 主机的负载均衡。
(2) 配置 Nginx 主机
A、修改 Nginx 主机的 hosts 文件
B、 修改 Nginx 配置文件
Nginx 负载均衡策略
Nginx 内置了三种负载均衡策略,另外,其还支持第三方的负载均衡。而每种负载均衡
主机根据负载均衡策略的不同,又可设置很多性能相关的属性
(1) 轮询
默认的负载均衡策略,其是按照各个主机的权重比例依次进行请求分配的。该策略适用
的场景是:根据主机性能设置不同权重。
对于每台主机,除了像 weight 一样可以设置的属性外,还可以设置如下属性。
fail_ timeout:表示当前主机被 Nginx 认定为停机的最长失联时间,默认为 10 秒。常与
max_fails 联合使用。
max_fails:表示在 fail_timeout 时间内最多允许的失败次数。即 Nginx 在 fail_timeout 时
间内向当前主机所发出的所有请求,超过了 max_fails 次请求失败,则认为当前主机已
经停机,即使没有到达 fail_timeout 时限。默认值为 1。fail_timeout 与 max_fails 的关系
类似于汽车保养时间间隔与公里数的关系,谁先到达以谁为准。
backup:表示当前服务器为备用服务器。当运行服务器发生停止服务状况时,备用服务
器会自动补上。原来停止服务的服务器又开始服务时,其会自动转为备用机,暂停服务。
down:表示当前服务器永久停机。
(2) ip_hash
指定负载均衡器按照基于客户端 IP 的分配方式,该策略确保了相同的客户端的请求一
直发送到相同的服务器,以保证 session 会话,解决了 session 不能跨服务器的问题。
对于该策略需要注意以下几点:
此策略适合有状态服务,比如 session。
在 nginx1.3.1 版本之前,该策略中不能指定 weight 属性。
该策略不能与 backup 同时使用。
当有服务器宕机,必须手动指定 down 属性,否则请求仍是会落到该服务器
(3) least_conn
把请求转发给连接数最少的服务器。
Nginx Plux 的四层负载均衡实现
Nginx Plus 是 Nginx 的商业版,其官网是: https://nginx.com
同样是修改 nginx.conf 文件,添加一个 stream 模块,其与 events、http 等模块同级。在
其中配置 upstream{}与 server{}模块。此时需要注意,通行代理配置在 server{}中(前面的是
配置在 server 模块的 location 模块中),且不能再是 http://开头的了,因为其为四层负载均
衡,负载均衡协议不再是 HTTP 协议了。
本文地址:https://blog.csdn.net/ren762201592/article/details/107393514
上一篇: RESTful设计方法
下一篇: Docker 搭建 MySQL 服务