我有 2 个 varnish,每个都有 2 个后端(相同的 varnish 版本 -v4.x- 和配置文件)。
传入的客户端连接随机分布到任何可用的 varnish。
我需要客户端根据其源 IP 始终使用相同的 varnish 后端(当然,后端出现故障的情况除外)。
我使用以下内容(简化)配置:
new servers = directors.hash();
servers.add_backend(srv01, 1.0);
servers.add_backend(srv02, 1.0);
sub vcl_recv {
set req.backend_hint = servers.backend(client.ip);
}
我想知道 Varnish 使用的哈希算法是否能保证无论使用哪种 Varnish,客户端始终使用相同的后端。
这意味着无需使用任何随机数据来初始化哈希算法。你知道情况是否如此吗?
答案1
hash
和控制器shard
将散列到相同的后端服务器,假设相同的配置和运行时状态(后端服务器的健康状况)。它使用 sha256,没有随机组件(散列密钥除外)。