nginx负载均衡
目录
负载均衡
- 使用集群是解决高并发、海量数据问题的常用手段
- 增加服务器,分担原有服务器的访问和存储压力,通过负载均衡调度服务器,将访问请求分发到集群中的任何一台服务器上进行处理
upstream
nginx 将请求转发到后台的一组
upstream
服务池
Syntax: upstream name {};
Default: --;
Content: http
upstream hostName1 {
server 127.0.0.1:3000;
server 127.0.0.1:4000;
server 127.0.0.1:5000;
}
server {
location ~ .*\.json$ {
# $http_host 要访问的主机名, $request_uri 请求路径
proxy_pass http://hostName1;
}
}
分配方式
-
轮询:默认轮询
upstream hostName1 { server 192.168.1.11 down; server 192.168.1.22 backup; server 192.168.1.33 max_fails=1 fail_tiemout=10s; }
- down,表示当前 server 已停用;
- backup,表示当前 server 是备用服务器,只有其它非 backup 后端服务器都挂掉了或很忙才会分配请求给它;
- weight,表示当前 server 负载权重,权重越大几率愈高;
- max_fails 和 fail_timeout 一般会关联使用,如果某台 server 在 fail_timeout 时间内出现了 max_fails 次连接失败,那么 Nginx 会认为其已经挂掉,从而在 fail_timeout 时间内不再去请求它,fail_timeout 默认是 10s,max_fails 默认是 1,即默认情况只要是发生错误就认为服务器挂了,如果将 max_fails 设置为 0,则表示取消这项检查。\
- max_conns: 限制每个 server 最大的接收的连接数,性能高的服务器可以连接数多一些
-
weight:
轮询的加强版,既可以指定轮询比率,weight 和访问几率成正比,主要应用于后端服务器异质的场景下。
upstream hostName1 { server 192.168.1.11 weight=1; server 192.168.1.22 weight=2; server 192.168.1.33 weight=3; }
-
least_conn:(生产中都会不用)
哪个机器上的连接数少就分发给谁
upstream hostName1 { least_conn; server 192.168.1.11:7777; server 192.168.1.22:8888; server 192.168.1.33:9999; }
-
ip_hash:(生产中都会不用)
每个请求按照访问 Ip(即 Nginx 的前置服务器或客户端 IP)的 hash 结果分配,这样每个访客会固定访问一个后端服务器,可以解决 session 一致问题。
upstream hostName1 { ip_hash; server 192.168.1.11:7777; server 192.168.1.22:8888; server 192.168.1.33:9999; }
-
fair(第三方):(生产中都会不用)
公平地按照后端服务器的响应时间(rt)来分配请求,响应时间(rt)小的后端服务器优先分配请求。
upstream hostName1 { fair; server 192.168.1.11:7777; server 192.168.1.22:8888; server 192.168.1.33:9999; }
-
url_hash(第三方):
按照访问的 URL 地址来分配请求,每个 URL 都定向到同一个后端服务器上
场景:固定资源不在统一服务器上
upstream hostName1 { url_hash; server 192.168.1.11:7777; server 192.168.1.22:8888; server 192.168.1.33:9999; }
-
自定义 hash
自定义哈希 key
upstream hostName1 { hash $request_url; server 192.168.1.11:7777; server 192.168.1.22:8888; server 192.168.1.33:9999; }
-
LUA脚本
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)