使用openresty实现按照流量百分比控制的灰度分流控制
安装好以后直接就可以配置实践了,openresty将lua都集成好了,nginx配置文件无需特殊声明引入lua file。
1.nginx.conf 添加两个灰度发布的环境 #grey 灰度环境地址 #prd生产环境地址
http块操作
upstream grey {
server 127.0.0.1:8080;
}
upstream prd {
server 139.162.116.84:8080;
}
server块操作,添加对应location
location @grey{
proxy_pass http://grey
}
location @prd{
proxy_pass http://prd
}
# 在server 里根location指定lua文件
location / {
default_type 'text/html';
content_by_lua_file /root/openresty/nginx/conf/lua_conf/grey.lua;
}
[root@luka77 lua_conf]# cat penresty/nginx/conf/lua_conf/grey.lua
foreign_env = 'grey'
china_env = 'prd'
--流量比率
abtest_num = 50
local num = math.random(100);
if (num <= abtest_num) then
ngx.log(ngx.INFO,'use foreign environment',foreign_env)
ngx.exec("@"..foreign_env)
else
ngx.log(ngx.INFO,'use foreign environment',china_env)
ngx.exec("@"..china_env)
end