灰度发布 通过 nginx + 负载均衡实现


1、介绍

服务器:1台
服务:一个
端口:三个(一个对外接口(80),两个内部服务接口(3002, 3022))
nginx:一份

思路:配置负载,不管我们后端服务有没有启动,nginx是可以正常启动的。那么我可以认为nginx目前在监听的端口有两个3002和3022,那么如果我们3002服务挂了,那么这个时候nginx是将我们的请求转发到3022上面。那么我们在更新后台服务的时候,只需要启动另外一个端口成功后,在将开始的一个端口关闭掉就可以让用户无感更新,后台使用运行一个项目,更新内外一个端口,停掉开始的
在这里插入图片描述

2、nginx配置负载均衡

Nginx目前支持6种方式的负载均衡策略:
轮询(默认方式)
weight(权重方式)
ip_hash(依据ip分配方式)
least_conn(最少连接方式)
fair(第三方提供的响应时间方式)
url_hash(第三方通过的依据URL分配方式)

server {
    listen 80;
    server_name  111.11.111.21;

    location / {
        proxy_set_header  Host  $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://real_server;
   }
}

// 权重
upstream real_server {
       server 127.0.0.1:3002 weight=1;  #轮询服务器和访问权重
       server 127.0.0.1:3022 weight=2;
 }
 
// 最少连接方式,把请求发给链接数最少的后端服务器
//upstream real_server {
//  least_conn;
//  server [IP地址]:[端口号] weight=2;
//  server [IP地址]:[端口号];
//}

3、启动nginx

参考下一遍文章:docker部署nginx

4、测试日志

启动3002端口:
在这里插入图片描述

启动3022端口:
在这里插入图片描述

启动3002、3022端口:
待补充截图

5、备注

1、nginx负载均衡没有怎么深入研究,如果放置生产,需考虑一下
2、upstream 在server外面
3、由于没有实际配置生产,还望各位在参考时可以提出意见我做修改



提供一个群:807770565,欢迎各位进来尬聊
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38637558/article/details/104395125