有人可以提供有关如何使用此负载平衡算法的更多详细信息或示例吗?
基于一致哈希(ketama hash)的负载均衡器,用于均匀负载 连接池更改时的分发/重新分发。这个 负载均衡策略仅适用于基于HTTP的连接。一个 用户指定的HTTP标头用作xxHash散列的密钥。
答案 0 :(得分:0)
LoadBalancerSettings.ConsistentHashLB
标志用于Envoy配置,Envoy's Load Balancing Docs中有更多详细信息:
ring / modulo哈希负载均衡器对上游主机实施一致的哈希。该算法基于将所有主机映射到圆上,使得从主机集添加或移除主机仅影响1 / N个请求。这种技术通常也称为“ketama”散列。
这是一种哈希算法,可以减少从Envoy平衡池中添加和删除服务器的影响(例如VirtualService后面的服务器)。
如果没有这样的算法,请将单个服务器添加到池causes hashes to map to different servers:
我们写了ketama来取代我们的memcached客户端如何将密钥映射到服务器...每当我们从池中添加或删除服务器时,一切 散列到不同的服务器,这有效地擦除了整个缓存。
回到Istio - Envoy的文档再次注意:
一致的散列负载均衡器仅在使用指定要散列的值的协议路由时才有效。
表示 - 指定从中生成哈希的标头。来自Istio docs:
httpHeader |字符串|需要。将用于获取哈希键的HTTP请求标头的名称。如果请求标头不存在,负载均衡器将使用随机数作为散列,有效地使负载平衡策略随机。