局部负载平衡在Istio上不起作用

时间:2019-11-04 20:42:45

标签: kubernetes istio

我们有一个带有istio的大约100个节点的kubernetes集群,并希望启用Locality LoadBalancing功能。由于我们的区域间数据流量过高,这每年最多可以为我们节省7万美元。

我遵循了docs并按如下方式设置了istio configmap:

 ...
  meshNetworks: {}


  localityLbSetting:
    enabled: true
    distribute:
    - from: us-east-1/us-east-1a/*
      to:
        "us-east-1/us-east-1a/*": 100
    - from: us-east-1/us-east-1b/*
      to:
        "us-east-1/us-east-1b/*": 100
...

然后部署了2个应用程序,其中一个仅响应部署节点的区域(我们正在使用VirtualService),而另一个仅响应请求。

来自us-east-1a中的节点的请求只能由相同区域中的节点答复,对吧?

但这没有发生。

我们还尝试在试验吊舱内设置此变量:

PILOT_ENABLE_LOCALITY_LOAD_BALANCING

当我从部署在“ us-east-1a”区域中的一个吊舱中获取日志时,它会显示来自两个区域的答复。

Istio版本:1.2.8

Kubernetes版本:1.14

感谢您的帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

'Locality'模式下,'Locality Load Balancing'功能的背景下,如果区域之间的权重为'distribute',恐怕您的配置无效。

您的istio-pilot日志应以类似于以下内容的警告形式为您提供线索:

<timestamp> warn    failed to read mesh configuration, using default: 1 error occurred:
    * locality weight must not be in range [1, 100]

我认为您无法在Istio文档中的任何地方找到它,但是权重验证的逻辑可以在here中找到。