Thrift 代理路由配置 (proto)
Thrift 代理 配置概述.
extensions.filters.network.thrift_proxy.v3.RouteConfiguration
[extensions.filters.network.thrift_proxy.v3.RouteConfiguration proto]
{
"name": ...,
"routes": [],
"validate_clusters": {...}
}
- name
(string) 路由配置的名称。此名称用于异步路由发现。例如,它可能与 route_config_name 在 extensions.filters.network.thrift_proxy.v3.Trds 中匹配。
- routes
(repeated extensions.filters.network.thrift_proxy.v3.Route) 将按顺序与传入请求匹配的路由列表。第一个匹配的路由将被使用。
- validate_clusters
(BoolValue) 一个可选的布尔值,指定路由表引用的集群是否将由集群管理器验证。如果设置为 true 且路由引用了不存在的集群,则路由表将不会加载。如果设置为 false 且路由引用了不存在的集群,则路由表将加载,并且路由器过滤器将在运行时选择路由时返回 INTERNAL_ERROR。此设置在通过 route_config 选项静态定义路由表时默认为 true。此设置在通过 trds 选项动态加载路由表时默认为 false。用户可能希望在某些情况下覆盖默认行为(例如,在将 CDS 与静态路由表一起使用时)。
extensions.filters.network.thrift_proxy.v3.Route
[extensions.filters.network.thrift_proxy.v3.Route proto]
{
"match": {...},
"route": {...}
}
- match
(extensions.filters.network.thrift_proxy.v3.RouteMatch, REQUIRED) 路由匹配参数。
- route
(extensions.filters.network.thrift_proxy.v3.RouteAction, REQUIRED) 将请求路由到某个上游集群。
extensions.filters.network.thrift_proxy.v3.RouteMatch
[extensions.filters.network.thrift_proxy.v3.RouteMatch proto]
{
"method_name": ...,
"service_name": ...,
"invert": ...,
"headers": []
}
- method_name
(string) 如果指定,则路由必须与请求方法名完全匹配。作为特殊情况,空字符串匹配任何请求方法名。
必须设置 method_name 或 service_name 中的其中一个。
- service_name
(string) 如果指定,则路由必须将服务名称作为请求方法名称前缀。作为特殊情况,空字符串匹配任何服务名称。仅在服务复用时相关。
必须设置 method_name 或 service_name 中的其中一个。
- invert
(bool) 反转在 method_name 或 service_name 字段中完成的任何匹配。不能与通配符匹配结合使用,因为会导致路由永远不会匹配。
注意
这不会反转作为 headers field 字段的一部分完成的匹配。要反转标头匹配,请参阅 invert_match.
- headers
(repeated config.route.v3.HeaderMatcher) 指定路由应该匹配的一组标头。路由器将检查请求的标头是否与路由配置中指定的所有标头匹配。如果路由中的所有标头都存在于请求中,并且具有相同的 value(或者如果 value 字段不在配置中,则基于存在性),则会发生匹配。请注意,这仅适用于 Thrift 传输或支持标头的协议。
extensions.filters.network.thrift_proxy.v3.RouteAction
[extensions.filters.network.thrift_proxy.v3.RouteAction proto]
{
"cluster": ...,
"weighted_clusters": {...},
"cluster_header": ...,
"metadata_match": {...},
"rate_limits": [],
"strip_service_name": ...,
"request_mirror_policies": []
}
- cluster
(string) 指示应将请求路由到的单个上游集群。
必须设置 cluster、weighted_clusters 或 cluster_header 中的其中一个。
- weighted_clusters
(extensions.filters.network.thrift_proxy.v3.WeightedCluster) 可以为给定路由指定多个上游集群。请求根据分配给每个集群的权重路由到其中一个上游集群。
必须设置 cluster、weighted_clusters 或 cluster_header 中的其中一个。
- cluster_header
(string) Envoy 将通过从请求标头中读取名为 cluster_header 的 Thrift 标头的值来确定要路由到的集群。如果找不到标头或引用的集群不存在,Envoy 将分别返回未知方法异常或内部错误异常。
必须设置 cluster、weighted_clusters 或 cluster_header 中的其中一个。
- metadata_match
(config.core.v3.Metadata) 子集负载均衡器使用的可选端点元数据匹配条件。只有上游集群中元数据与此字段中设置的内容匹配的端点才会被考虑。请注意,这将与 WeightedCluster.metadata_match 中提供的内容合并,其中那里的值优先。键和值应在“envoy.lb”元数据键下提供。
- rate_limits
(repeated config.route.v3.RateLimit) 指定可以应用于路由的一组速率限制配置。注意,Thrift 服务或方法名称匹配可以通过指定具有标头名称“:method-name”的 RequestHeaders 操作来实现。
- strip_service_name
(bool) 如果存在前缀,则从方法名称中去除服务前缀。例如,方法调用 Service:method 最终将变为 method。
- request_mirror_policies
(repeated extensions.filters.network.thrift_proxy.v3.RouteAction.RequestMirrorPolicy) 指示路由具有请求镜像策略。
extensions.filters.network.thrift_proxy.v3.RouteAction.RequestMirrorPolicy
[extensions.filters.network.thrift_proxy.v3.RouteAction.RequestMirrorPolicy proto]
路由器能够将来自一个集群的流量镜像到另一个集群。当前的实现是“开火就忘”,这意味着 Envoy 不会等待镜像集群响应,然后再返回来自主集群的响应。所有正常统计信息都将为镜像集群收集,这使得此功能对于测试很有用。
注意
如果主集群不存在,则不会触发镜像。
{
"cluster": ...,
"runtime_fraction": {...}
}
- cluster
(string, REQUIRED) 指定将请求镜像到的集群。在加载路由配置时,集群必须存在于集群管理器配置中。如果它在运行时消失,则镜像请求将默默地被忽略。
- runtime_fraction
(config.core.v3.RuntimeFractionalPercent) 如果未指定,则对目标集群的所有请求都将被镜像。
对于某个分数 N/D,将选择范围在 [0,D) 内的随机数。如果数字 <= 分子 N 的值,或者如果键不存在,则使用默认值,则请求将被镜像。
extensions.filters.network.thrift_proxy.v3.WeightedCluster
[extensions.filters.network.thrift_proxy.v3.WeightedCluster proto]
允许为多个上游集群指定权重,以及指示转发到每个集群的流量百分比的权重。路由器根据这些权重选择上游集群。
{
"clusters": []
}
- clusters
(重复 extensions.filters.network.thrift_proxy.v3.WeightedCluster.ClusterWeight, 必需) 指定与路由关联的一个或多个上游集群。
extensions.filters.network.thrift_proxy.v3.WeightedCluster.ClusterWeight
[extensions.filters.network.thrift_proxy.v3.WeightedCluster.ClusterWeight proto]
{
"name": ...,
"weight": {...},
"metadata_match": {...}
}
- name
(字符串, 必需) 上游集群的名称。
- 权重
(UInt32Value) 当请求匹配路由时,上游集群的选择由其权重决定。集群数组中所有条目权重的总和决定了总权重。
- metadata_match
(config.core.v3.Metadata) 由子集负载均衡器使用的可选端点元数据匹配条件。只有上游集群中元数据与这里设置的字段相匹配的端点,以及在 RouteAction 的 metadata_match 中提供的端点,将被考虑。此处的值将优先。键和值应在 “envoy.lb” 元数据键下提供。