跳到主要内容
跳到主要内容

副本感知路由

Private preview in ClickHouse Cloud

副本感知路由(也称为 sticky sessions、sticky routing 或 session affinity)使用了 Envoy proxy 的 ring hash 负载均衡。副本感知路由的主要目的是提高缓存复用的概率,它并不保证隔离。

为某个服务启用副本感知路由后,我们会在该服务主机名的基础上额外开放通配符子域名。对于主机名为 abcxyz123.us-west-2.aws.clickhouse.cloud 的服务,可以使用任何与 *.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud 匹配的主机名访问该服务:

示例主机名
aaa.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud
000.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud
clickhouse-is-the-best.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud

当 Envoy 收到与此模式匹配的主机名时,它会基于该主机名计算路由哈希值,并根据计算出的哈希在哈希环上找到对应的 ClickHouse 服务器。在服务没有正在发生变更(例如服务器重启、扩缩容)的前提下,Envoy 将始终选择同一台 ClickHouse 服务器进行连接。

请注意,原始主机名仍然会使用 LEAST_CONNECTION 负载均衡,这是默认的路由算法。

副本感知路由的限制

副本感知路由不保证隔离

对服务的任何中断,例如服务器 pod(容器组)重启(由于版本升级、崩溃、纵向扩容等原因)、服务器横向扩容或缩容,都会导致路由哈希环发生变化。这会使使用相同主机名的连接被调度到不同的服务器 pod(容器组)上。

客户需要手动添加一条 DNS 记录,才能使新的主机名模式的名称解析生效。如果使用不当,这可能会导致服务器负载不均衡。

配置副本感知路由

如需启用副本感知路由功能,请联系我们的支持团队