我们在4个应用程序服务器中部署了我们的服务。
我们有2个Nginx用于负载平衡。
我们正在使用1个Consul服务器进行服务发现。
我们将其中一台应用程序服务器专用为Canary服务器,以使用split_clients
指令测试Canary部署。
使用Nginx模板文件,我们可以控制到Canary VS非Canary服务器的流量。
我已经使用localhost上的curl在所有4台服务器上分别测试了该服务。然后,我在Nginx服务器之一上测试了curl命令。我收到响应,但仅从非Canary应用程序服务器返回了响应。没有流量路由到Canary服务器。
nginx.conf文件的填充如下:
....
upstream canary_servers{
server server4:port max_fails=3 fail_timeout=60 weight=1;
}
upstream non_canary_servers{
server server1:port max_fails=3 fail_timeout=60 weight=1;
server server2:port max_fails=3 fail_timeout=60 weight=1;
server server3:port max_fails=3 fail_timeout=60 weight=1;
}
split_clients "app${remote_addr}${date_gmt}" $app_variant{
* canary_servers;
70% non_canary_servers;
}
.....
这里可能是什么问题?我想念什么?
答案 0 :(得分:1)
尝试将星号放在最后一行:
split_clients "app${remote_addr}${date_gmt}" $app_variant{
70% non_canary_servers;
* canary_servers;
}
答案 1 :(得分:0)
使用*或实际%解决了上述问题。