nginx在nginx.conf配置文件中通过upstream模块和server模块的配合使用,就可以实现负载均衡。
在http的 upstream模块中,可以通过 server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。
常用的状态有:
weight:服务访问的权重,默认是1。
down:表示当前的server暂时不参与负载均衡。
backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
max_fails:在fail_timeout时间内,允许请求最大的失败次数,默认为1。当达到最大失败时,会在fail_timeout时间内不允许再次被选择。,返回 proxy_next_upstream 模块定义的错误。
fail_timeout:单位为秒,默认是10秒。指定一段时间内,请求经历了max_fails次失败后,该server不能访问的时间(暂停服务的时间)。max_fails可以和fail_timeout一起使用。
注意:当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是backup。
nginx负载均衡配置
http { # upstream模块:server_group_name 自定义服务组名 upstream server_group_name { # ip_hash和weight也可以配合使用 ip_hash; # 最少连接 # least_conn; # server指令指定后端服务器的IP地址和端口 server localhost:8080; server 192.168.xxx.xxx:8081 down; server 192.168.xxx.xxx:8082 max_fails=3 fail_timeout=20s; server 192.168.xxx.xxx:8083 weight=2; } # server模块 server { listen 80; server_name localhost; location / { # proxy_pass:代理转发,将单体服务http://127.0.0.1:80,改为服务组名 proxy_pass http://server_group_name/; # proxy_redirect default; # 注意:如果遇到 nginx 配置了https upstream,然后访问跳转失败,直接报404,添加下面内容。 proxy_set_header Host $host:$proxy_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
防止程序代码中获取端口问题,配置代理端口 proxy_set_header Host $host:$proxy_port;
Nginx负载均衡分配策略介绍
1、轮询[默认]轮询方式是将所有请求按顺序轮流地分配到后端服务器上,它平等地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
2、权重 weight。该策略会指定每个服务的权重比例,权重越高被分配的客户端(请求)也就越多,weight和访问比率成正比。主要用于后端服务器性能不均的情况。
3、ip_hash(哈希)该策略会按照每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。有效解决了动态网页存在的session共享问题。
4、最少连接(least_conn)该策略会将请求分配到连接数最少的服务上。
5、第三方策略。Nginx支持集成第三方的策略插件。比如:
fair:依据页面大小和加载时间长短智能地进行负载均衡,即响应时间短的优先分配。下载安装 Nginx的upstream_fair模块。
url_hash:按访问 url的 hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。下载安装Nginx的hash软件包。
来源:https://blog.csdn.net/qq_42402854/article/details/133129825
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】