网站首页 > 技术教程 正文
Nginx是一款高性能HTTP、和反向代理服务器,是大型架构必备使用的,下面详解4大Nginx负载均衡配置@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
Nginx负载均衡
Nginx 是一个高性能的 HTTP 、和反向代理服务器,它也可以作为负载均衡器。
如下所示:
可以将流量分配到多个后端服务器,这种方式,可以提高系统的可用性、和扩展性、以及性能。
但是,如果你要负载到别的服务器,就会涉及到负载均衡配置算法、和配置。
比如:常见的有:轮询(round-robin)、最少连接(least connections)、IP 哈希(IP hash)、随机.......等,下面我分别详解@mikechen
Nginx负载均衡配置
1.轮询
Nginx默认的负载均衡策略是:轮询,每个请求依次分配给不同的后端服务器,这种轮询策略,适用于后端服务器性能相似。
如下图所示:
轮询是一种简单的负载均衡算法,将请求按照固定顺序,依次分发到每个服务器。
每个服务器依次接收请求,直到所有服务器都接收到一个请求,然后循环重新开始。
轮询策略无需额外配置参数,只需定义上游服务器组即可,如下所示:
http {
upstream mikechen{
server backend1.mikechen.cc;
server backend2.mikechen.cc;
server backend3.mikechen.cc;
}
server {
listen 80;
location / {
proxy_pass http://mikechen;
}
}
}
upstream mikechen{...}:定义一个上游服务器组,命名为 mikechen。
- server backend1.mikechen.cc;:指定第一个后端服务器;
- server backend2.mikechen.cc;:指定第二个后端服务器;
- server backend3.mikechen.cc;:指定第三个后端服务器;
server {...}:定义一个虚拟主机,参数如下:
- listen 80;:监听端口 80;
- location / {...}:处理根路径 / 的请求,proxy_pass http://backend,将请求转发到上游服务器组 mikechen。
2.加权
Nginx 的加权负载均衡(weighted load balancing),允许为不同的后端服务器设置不同的权重,以便将更多的请求分配给性能更高、或资源更多的服务器。
权重越高,服务器被分配到的请求就越多,如下所示:
upstream backend {
server backend1.mikechen.cc weight=5;
server backend2.mikechen.cc weight=3;
server backend3.mikechen.cc weight=1;
}
参数说明:
- weight=3:设置 backend1 的权重为 5;
- weight=1:设置 backend2 的权重为 3;
- weight=2:设置 backend3 的权重为 1;
在上面的示例中,请求将按照如下比例分配:
- backend1.mikechen.cc:将处理 5/(5+3+1) ≈ 55.56% 的请求;
- backend2.mikechen.cc:将处理 3/(5+3+1) ≈ 33.33% 的请求;
- backend3.mikechen.cc:将处理 1/(5+3+1) ≈ 11.11% 的请求;
3.IP 哈希(IP Hash)
IP Hash 是一种负载均衡策略,通过对客户端 IP 地址,进行哈希计算来决定请求应该转发到哪个后端服务器。
如下图所示:
这样,来自同一 IP 地址的请求会被发送到相同的后端服务器,除非后端服务器发生变化。
在 Nginx 中,IP Hash 通过在 upstream 块中,使用 ip_hash 指令来配置。
如下所示:
http {
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
- ip_hash;:启用 IP 哈希负载均衡;
- 相同的客户端 IP 地址将,总是被分配到相同的服务器,直到服务器列表发生变化。
适用于需要保持用户会话状态的应用,如购物车、用户登录.......等。
4.最少连接
最少连接策略,根据每个后端服务器当前处理的连接数来分配新请求,请求会被分配到连接数最少的服务器上。
如下所示:
配置如下:
http {
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
least_conn;:启用最少连接负载均衡;
请求将被分配到当前连接数最少的后端服务器,这种策略可以减少服务器之间的负载不均,特别是在请求处理时间差异较大的情况下。
这种配置,适用于请求处理时间不一致的应用,比如:有些请求处理时间较长的场景。
以及,最少连接策略能够,有效地将请求分配到负载较低的服务器,从而提升整体性能、和响应速度。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2024-10-14 nginx-负载均衡(nginx负载均衡的三种方式)
- 2024-10-14 5分钟教你合理配置 Nginx Worker_processes和Worker_connections
- 2024-10-14 nginx 之服务器的负载均衡策略——六种
- 2024-10-14 我们耳熟能详的负载均衡,你该如何配置?
- 2024-10-14 详解Nginx负载均衡的4种方案(详解nginx负载均衡的4种方案是)
- 2024-10-14 【Nginx基础】Nginx常见负载均衡策略配置示例
- 2024-10-14 nginx配置负载均衡 以及宕机了后,怎么配置高可用
- 2024-10-14 Nginx总结(六)nginx实现负载均衡(nginx的负载均衡怎么做)
- 2024-10-14 Nginx 负载均衡详解(nginx负载均衡详解)
- 2024-10-14 nginx服务器负载均衡配置(nginx负载均衡配置详解)
你 发表评论:
欢迎- 最近发表
-
- 阿里P8大佬总结的Nacos入门笔记,从安装到进阶小白也能轻松学会
- Linux环境下,Jmeter压力测试的搭建及报错解决方法
- Java 在Word中合并单元格时删除重复值
- 解压缩软件哪个好用?4款大多数人常用的软件~
- Hadoop高可用集群搭建及API调用(hadoop3高可用)
- lombok注解@Data没有toString和getter、setter问题
- Apache Felix介绍(apache fineract)
- Spring Boot官方推荐的Docker镜像编译方式-分层jar包
- Gradle 使用手册(gradle详细教程)
- 字节二面:为什么SpringBoot的 jar可以直接运行?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)