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