Nginx基于cookies控制流量的灰度发布

前言:

        因为公司业务发版需要进行灰度发布,基于一定的权重来指向用户流量到不同的版本应用中,这里用nginx的两种不同的方法来实现。

参考:

        nginx会话保持之sticky模块 - 天生帅才 - 博客园 (cnblogs.com)

方法一:利用Nginx-sticky

我将在这里介绍容器化的nginx配置,如果是主机部署的nginx则会简单点(需添加了sticky模块的nginx),下面可提供参考。

部署一个deployment并将配置文件挂载到对应configmap。镜像名为:runnable/sticky-nginx:v1.8.1

对应关系:

/etc/nginx/nginx.conf => nginx-conf(nginx.conf)

/etc/nginx/conf.d => conf-d(*.conf)

1.首先我们创建一个比较通用的nginx.conf配置文件内容的ConfigMap:

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-conf
  namespace: proxy
data:
  nginx.conf: |-
    # 设置工作进程数为 4。通常这个值设置为 CPU 核心数,但根据负载情况可以调整。
    worker_processes  4;

    # 将错误日志输出到标准错误流,以便容器化环境中能捕获和管理日志。
    error_log  /dev/stderr notice;

    events {
        # 设置每个工作进程的最大连接数为 1024。
        worker_connections  1024;
    }

    http {
        # 包含 mime.types 文件,该文件定义了各种文件扩展名和 MIME 类型的映射。
        include       mime.types;

        # 包含 conf.d 目录下的所有配置文件。方便分模块管理配置。
        include       conf.d/*.conf;

        # 设置默认的 MIME 类型为 application/octet-stream。用于未定义 MIME 类型的文件。
        default_type  application/octet-stream;

        # 启用 sendfile 选项,提高文件传输效率。
        sendfile        on;

        # 设置 keep-alive 超时时间为 65 秒。这个值可以根据需要调整。
        keepalive_timeout  65;

        # 定义日志格式,命名为 main。日志格式包含客户端 IP、用户信息、请求时间、请求行、响应状态、发送字节数、引用页面、用户代理、转发信息、Cookie 和上游服务器地址。
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值