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

https://www.cnblogs.com/jing99/p/14616653.html 实现原理

https://blog.csdn.net/hguisu/article/details/8930668

posted @ 2022-08-16 15:48  凌易说-lingyisay  阅读(507)  评论(0编辑  收藏  举报