Redis 集群配置 (proto)
此扩展的限定名称为 envoy.clusters.redis
注意
此扩展未经过强化,应仅在上下游都可信的部署中使用。
此集群添加了对 Redis 集群 的支持,作为 Envoy 对 Redis 集群的支持 的一部分。
Redis 集群是 Redis 的扩展,它支持分片和高可用性(其中一个分片丢失其主节点后会故障转移到一个副本,并将其指定为新的主节点)。但是,由于 Redis 集群前面没有统一的前面端或代理服务,因此客户端(在本例中为 Envoy)必须在本地维护 Redis 集群的状态,特别是拓扑结构。使用 CLUSTER SLOTS 命令 查询集群中的随机节点以获取拓扑结构。然后将此结果存储在本地,并在用户配置的时间间隔内更新。
此外,如果 enable_redirection 为 true,则来自上游服务器的移动和请求重定向错误将在它们超过用户配置的错误阈值时触发拓扑刷新。
示例
name: name
connect_timeout: 0.25s
dns_lookup_family: V4_ONLY
hosts:
- socket_address:
address: foo.bar.com
port_value: 22120
cluster_type:
name: envoy.clusters.redis
typed_config:
"@type": type.googleapis.com/google.protobuf.Struct
value:
cluster_refresh_rate: 30s
cluster_refresh_timeout: 0.5s
redirect_refresh_interval: 10s
redirect_refresh_threshold: 10
extensions.clusters.redis.v3.RedisClusterConfig
[extensions.clusters.redis.v3.RedisClusterConfig proto]
{
"cluster_refresh_rate": {...},
"cluster_refresh_timeout": {...},
"redirect_refresh_interval": {...},
"redirect_refresh_threshold": {...},
"failure_refresh_threshold": ...,
"host_degraded_refresh_threshold": ...
}
- cluster_refresh_rate
(Duration) 连续拓扑刷新请求之间的间隔。如果未设置,则默认为 5 秒。
- cluster_refresh_timeout
(Duration) 拓扑刷新请求的超时时间。如果未设置,则默认为 3 秒。
- redirect_refresh_interval
(Duration) 触发拓扑刷新请求后必须经过的最小间隔,在此间隔后才能再次可能触发新的请求。在此时间间隔内收到的任何错误都将被忽略。如果未设置,则默认为 5 秒。
- redirect_refresh_threshold
(UInt32Value) 必须接收的重定向错误数量才能触发拓扑刷新请求。如果未设置,则默认为 5。如果将其设置为 0,则禁用重定向后的拓扑刷新。
- failure_refresh_threshold
(uint32) 必须接收的失败次数才能触发拓扑刷新请求。如果未设置,则默认为 0,这将禁用由于失败引起的拓扑刷新。
- host_degraded_refresh_threshold
(uint32) 主机降级或不健康之前才能触发拓扑刷新请求的主机数量。如果未设置,则默认为 0,这将禁用由于降级或不健康的主机引起的拓扑刷新。