0

我们将服务部署在 4 个应用服务器中。我们有 2 个 Nginx 用于负载平衡。我们正在使用 1 个 Consul 服务器进行服务发现。我们将其中一个应用服务器用作 Canary 服务器,以使用该split_clients指令测试 Canary 部署。使用 Nginx 模板文件,我们控制到 Canary VS 非 Canary 服务器的流量。

我已经使用本地主机上的 curl 在所有 4 台服务器上单独测试了该服务。然后我在一台 Nginx 服务器上测试了 curl 命令。我收到了响应,但它仅从非金丝雀应用服务器返回。没有流量路由到 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;
}
.....

这里有什么问题?我错过了什么?

4

2 回答 2

1

尝试将 asterix 放在最后一行:

split_clients "app${remote_addr}${date_gmt}" $app_variant{
   70% non_canary_servers;
   * canary_servers;
}
于 2020-05-15T07:59:22.083 回答
0

上述问题通过使用 * 或实际的 % 来解决。

于 2020-05-27T14:56:48.260 回答