Nginx 常见的三种负载均衡策略
我们日常中最常见的三种nginx的负载均衡策略应当为(轮询、权重、ip绑定),这其中的区别体现在upstream代码块中,以下是upstream代码块示例(轮询)。
upstream alias {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
upstream代码块中可以填服务部署的服务器列表,upstream后面的名称是自己填写,我个人倾向于称它为服务器别名,命名好之后可以直接在server代码块中调用。
轮询
顾名思义,轮询就是将请求轮流转发给所有的服务器。
upstream alias {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://alias;
}
}
如上述代码所示,nginx要将请求转发至 127.0.0.1的8080和8081端口,第一次nginx随机选择一台服务器发送请求,第二次就会选择另外一台。ABABAB,如此循环。服务器性能服务相同时,通常都是采用此策略。
权重
将请求按照一定的比例转发给不同的服务器。
upstream alias {
server 127.0.0.1:8080 weight=3;
server 127.0.0.1:8081 weight=2;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://alias;
}
}
上述代码中,我们设置的权重是3和2,也就代表着请求将会以 3:2 的比例转发给两台服务器。值得一提的是,nginx的权重机制属于轮询权重,也就是先给A发3次请求,然后给B发2次请求。适用于性能不同的服务器,如A服务器性能较强,或者开启的服务较少,则可以将更多的请求转发给A服务器。
ip绑定
顾名思义,就是将请求方的ip和服务器进行绑定。
upstream alias {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
ip_hash;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://alias;
}
}
在upstream代码块里加上 ip_hash; 代码,即代表使用ip绑定策略。举个例子,当用户使用某一ip访问服务器,nginx将请求转发至8080,则代表该请求ip的后续所有请求都将会被转发至8080服务进行处理。
这种策略多用于带会话请求的场景,如用户的登录信息保存在session当中,如果换服务器则拿不到对应的session,会需要重新登录,使用ip_hash能保证用户请求的时同一台服务器。
总结:nginx的上述三种策略基本可以满足绝大部分应用场景,还有一些扩展的策略需要引入三方的一些类似于插件的东西,此处就不一一赘述。
原文链接:https://blog.csdn.net/qq_41137996/article/details/119867885
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-08-22 C# Serilog 使用