gpt4 book ai didi

kubernetes - 基于 URL 的具有亲和性的服务代理

转载 作者:行者123 更新时间:2023-12-02 11:30:50 25 4
gpt4 key购买 nike

我正在寻找具有基于 URL 的亲和性的服务代理(或负载平衡器)。

这是用于在集群内部的 Kubernetes 中使用的:我正在寻找一个“内部”负载均衡器,我不需要将服务暴露在外面。

默认情况下,Kubernetes 中的 Service 使用“循环”算法。

我想要基于 HTTP URL 的一部分的一些亲和性:第一个请求将转到随机 pod,使用相同 URL 的后续请求将(最好)转到同一个 pod。

我已经阅读了一些关于基于 sourceIP 的亲和性的文档,这是否基于 URL 存在?

我已经快速阅读了 Envoy,也许使用“Ring hash”负载平衡算法就可以了,但我不知道是否可以基于 URL 进行散列。

也许使用 kube-proxy ( https://kubernetes.io/docs/concepts/services-networking/service/#proxy-mode-ipvs ) 的“ipvs”代理模式可以,但我只看到“目标散列”和“源散列”作为负载平衡算法,我也不知道如何配置它.

最佳答案

正如您已经提到的,IPVS代理算法定义了源和目标 IP 地址,以便为负载平衡生成唯一的哈希键。但是,它在拦截 TCP 或 UDP 服务的网络流量的 L4 传输层中运行。因此,可能很难与 HTTP 请求交互并根据 URL 路径做出路由决策。

Envoy代理通过 HTTP header 表示一致的散列值,在 HTTP router filter 中指定连同 Ring hash负载均衡策略。因此,您可以在 Hash 策略中指定适当的头名称,用于获取负载均衡的哈希键。

hash_policy:
header:
header_name: "x-url"

或者,您可以考虑使用 Istio作为使用 Envoy 扩展版本的中间代理。 Kubernetes 服务通过在整个环境中部署一个特殊的 sidecar 代理来拦截微服务之间的所有网络通信,从而参与到服务网格中。 Istio 也可用于 Hash通过 DestinationRule 基于 HTTP header 的 session 亲缘性的一致负载平衡资源。
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: example
spec:
host: my-service.default.svc.cluster.local
trafficPolicy:
loadBalancer:
consistentHash:
httpHeaderName: x-url

关于kubernetes - 基于 URL 的具有亲和性的服务代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55222685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com