nginx-灰度发布策略(基于cookie)
一. 简述:
基于 Cookie 的灰度发布是一种常见的策略,它允许您根据用户的特定 Cookie 值将流量路由到不同的服务版本。这种方法可以确保只有满足条件的用户会看到新版本的功能,从而降低风险并便于监控和回滚。
二. 配置案例:
测试环境: 3个web服务(nginx):
10.2.2.250:8080-------------->用于控制用户请求地址(灰度/线上环境)
10.2.2.250:8081---------------> 灰度环境
10.2.2.250:8082---------------> 线上环境
灰度环境部署(nginx安装过程略):
请求地址: http:10.2.2.250:8081/index.html
内容: one------> 8081
线上环境部署(nginx安装过程略):
请求地址: http: 10.2.2.250:8082/index.html
内容: two-----------> 8082
配置片段:
add_header Set-Cookie 'request_id=vipkid';
upstream test_one {
server 127.0.0.1:8081 max_fails=1 fail_timeout=60;
}
upstream test_two {
server localhost:8082 max_fails=1 fail_timeout=60;
}
server {
listen 8080;
server_name localhost;
if ($http_cookie ~* "request_id=vvv") {
set $group test_one;
}
if ($http_cookie !~* "request_id=vvv") {
set $group test_two;
}
location / {
#root html;
#index index${request_type}.html;
proxy_pass http://$group;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.html index.htm;
}
测试:
当cookie包含request_id=vvv时, 访问10.2.2.250:8080会upstream到8081:
当cookie不包含request_id=vvv时,访问10.2.2.250:8080会upstream到8082;
原理: 开发添加cookie识别字段内容, 通过nginx获取cookie, 通过正则匹配,控制是否将请求upstream到对应的后端环境!
优点: 扩展/控制性较高(可通过自定义信息【如uid】方式),配置简单
缺点: 需要开发/项目组同事定义对应的cookie信息
需要注意cookie缓存问题!
----------------------------------------------------------------------------------------------
深耕运维行业多年,擅长linux、容器云原生、运维自动化等方面。
承接各类运维环境部署、方案设计/实施、服务代运维工作,欢迎沟通交流 !