Nginx 负载均衡分配服务器策略,蓝绿发布,金丝雀发布(canary),灰度发布
Nginx
反向代理
反向代理:请求ip80转发到ip8080;根据访问的路径跳转到不同端口的服务中。
Nginx 负载均衡分配服务器策略
0、80代理到9090
server { listen 80; server_name www.ling111.top; location / { proxy_pass http://www.ling111.top:9090; index index.html index.htm index.jsp; } }
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器挂掉,能自动剔除。
2、weight权重
默认为1,权重越高被分配的客户端越多。
upstream server_pool{ server 192.168.11.12 weight=10; server 192.168.11.13 weight=10; }
3、ip_hash
每次请求按访问ip的hash结果分配,这个每个访客固定访问一个后端服务器。
upstream server_pool{ ip_hash; server 192.168.11.12; server 192.168.11.13; }
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool{ fair; server 192.168.11.12; server 192.168.11.13; }
动静分离
动静分离:动态请求和静态请求分开
Nginx原理
- 一个master+多个worker,master监控管理,worker争抢client请求;
- 利用 nginx 进行热部署操作,nginx -s reload
- 每个worker是独立的进程,如果有其中一个worker出现问题,其他work独立,继续进行争抢,不会造成服务中断。
- worker数和服务器的cpu数相等最为合适。
蓝绿发布
蓝绿发布提供了一种零宕机的部署方式。不停老版本,部署新版本进行测试,确认OK,将流量切到新版本,然后老版本同时也升级到新版本。始终有两个版本同时在线,有问题可以快速切换。
以下示意图可描述灰度发布的大致流程:先切分20%的流量到新版本,若表现正常,逐步增加流量占比,继续测试新版本表现。若新版本一直很稳定,那么将所有流量都切分到新版本,并下线老版本。
金丝雀发布(canary)
在生产环境上引一部分实际流量对一个新版本进行测试,测试新版本的性能和表现,在保证系统整体稳定运行的前提下,尽早发现新版本在实际环境上的问题。
为什么叫金丝雀发布呢,是因为金丝雀对矿场中的毒气比较敏感,所以在矿场开工前工人们会放一只金丝雀进去,以验证矿场是否存在毒气,这便是金丝雀发布名称的由来。
金丝雀发布的特点:
通过在线上运行的服务中,新加入少量的新版本的服务,然后从这少量的新版本中快速获得反馈,根据反馈决定最后的交付形态。
灰度发布
灰度发布是迭代的软件产品在生产环境安全上线的一种重要手段。
灰度发布,也叫金丝雀发布。是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,而我们平常所说的金丝雀部署也就是灰度发布的一种方式。
金丝雀发布和灰度发布对比
参考:
https://blog.csdn.net/weixin_43852813/article/details/122369364
https://blog.csdn.net/m0_38017860/article/details/124274741
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架