Istio 如果负载平衡,流量不会通过出口。简单:PASSTHROUGH

Istio 如果负载平衡,流量不会通过出口。简单:PASSTHROUGH,istio,envoyproxy,Istio,Envoyproxy,我有两个节点的卡夫卡集群。节点1具有ip 1.1.1.1,节点2具有ip 2.2.2.2 所有交通必须通过出口控制器。 如果来自应用程序的客户端使用ip 1.1.1.1对节点进行寻址,那么他应该在不与Istio进行任何平衡的情况下联系该节点 配置: apiVersion:networking.istio.io/v1alpha3 种类:ServiceEntry 元数据: 姓名:卡夫卡 规格: 主持人: -卡夫卡主持人 地址: - 1.1.1.1/32 - 2.2.2.2/32 端口: -电话:90

我有两个节点的卡夫卡集群。节点1具有ip 1.1.1.1,节点2具有ip 2.2.2.2 所有交通必须通过出口控制器。 如果来自应用程序的客户端使用ip 1.1.1.1对节点进行寻址,那么他应该在不与Istio进行任何平衡的情况下联系该节点

配置:

apiVersion:networking.istio.io/v1alpha3 种类:ServiceEntry 元数据: 姓名:卡夫卡 规格: 主持人: -卡夫卡主持人 地址: - 1.1.1.1/32 - 2.2.2.2/32 端口: -电话:9092 姓名:tcp卡夫卡 协议:TCP 位置:外部网格 分辨率:静态 端点: -地址:1.1.1.1 -地址:2.2.2.2 --- apiVersion:networking.istio.io/v13 种类:命运法则 元数据: 姓名:卡夫卡 规格: 主持人:卡夫卡 交通政策: 负载平衡器: 简单:直通#禁用负载平衡器 --- apiVersion:networking.istio.io/v13 种类:网关 元数据: 姓名:卡夫卡 规格: 选择器: istio:istio出口网关 服务器: -端口: 电话:9092 姓名:tcp卡夫卡 协议:TCP 主持人: -卡夫卡主持人 --- apiVersion:networking.istio.io/v13 种类:虚拟服务 元数据: 姓名:卡夫卡 规格: 主持人: -卡夫卡主持人 网关: -网孔 -卡夫卡 tcp: -匹配: -网关: -网孔 目的子网: - 1.1.1.1/32 - 2.2.2.2/32 港口:9092 路线: -目的地: 主机:istio出口网关 端口: 电话:9092 -匹配: -网关: -卡夫卡 港口:9092 路线: -目的地: 主持人:卡夫卡 端口: 电话:9092 体重:100 在出口控制器日志中,流量到达出口控制器而不出:

[Envoy (Epoch 0)] [2020-07-31 13:52:21.351][58][warning][upstream] [external/envoy/source/common/upstream/original_dst_cluster.cc:76] original_dst_load_balancer: No downstream connection or no original_dst.
[2020-07-31T13:52:11.385Z] "- - -" 0 UH "-" "-" 0 0 0 - "-" "-" "-" "-" "-" - - 10.128.19.132:9092 10.128.13.52:47984 - -
附言。 如果在DestinationRule中设置loadBalancer:ROUND_ROBIN或其他,则一切正常,流量流向外部节点。 但无法保证当从应用程序访问ip 1.1.1.1时,流量将流向具有ip 1.1.1.1的外部服务器


Istio v1.1

我认为您可以尝试在DestinationRule中为此设置粘性会话

来自istio的示例:

负载平衡器设置 应用于特定目标的负载平衡策略。有关更多详细信息,请参阅特使的负载平衡

例如,以下规则对所有到分级服务的流量使用循环负载平衡策略

以下示例使用用户cookie作为哈希键,为同一个分级服务的分级服务基于哈希的负载平衡器设置粘性会话

这是v1.1的链接


有一个有粘性的会话



希望您觉得这很有用。

一致哈希负载平衡策略仅适用于HTTP连接。在我的例子中,tcp连接不需要负载平衡。如果kafka客户端转到节点1.1.1.1,与节点2.2.2.2建立连接,这将很奇怪,因为Istio将平衡负载
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: bookinfo-ratings
spec:
  host: ratings.prod.svc.cluster.local
  trafficPolicy:
    loadBalancer:
      simple: ROUND_ROBIN
 apiVersion: networking.istio.io/v1alpha3
 kind: DestinationRule
 metadata:
   name: bookinfo-ratings
 spec:
   host: ratings.prod.svc.cluster.local
   trafficPolicy:
     loadBalancer:
       consistentHash:
         httpCookie:
           name: user
           ttl: 0s