envoy 中文参考文档
  • 首页
  • 简介
    • Envoy是什么
    • 架构介绍
      • 术语
      • 线程模型
      • 监听器
      • L3/L4网络过滤器
      • HTTP连接管理
      • HTTP过滤器
      • HTTP路由
      • gRPC
      • WebSocket支持
      • 集群管理
      • 服务发现
      • 健康检查
      • 连接池
      • 负载均衡
      • 异常检测
      • 熔断
      • 全局限速
      • TLS
      • 统计
      • 运行时配置
      • 跟踪
      • TCP代理
      • 访问日志
      • MongoDB
      • DynamoDB
      • Redis
      • 热重启
      • 动态配置
      • 初始化
      • 逐出
      • 脚本
    • 部署
    • 业界对比
    • 获得帮助
    • 历史版本
  • 编译安装
    • 编译
    • 参考配置
    • 演示沙箱
      • 前端代理
      • Zipkin跟踪
      • Jaeger跟踪
      • gRPC桥接
      • 构建Envoy Docker镜像
    • 工具
  • 配置参考
    • V1 API 概述
    • V2 API 概述
    • 监听器
    • 网络过滤器
      • TLS客户端身份认证
      • Echo
      • Mongo代理
      • 速率限制
      • Redis代理
      • TCP代理
    • HTTP连接管理器
      • 路由匹配
      • 流量转移/分流
      • HTTP头部操作
      • HTTP头部清理
      • 统计
      • 运行时设置
      • 路由发现服务
    • HTTP过滤器
      • 缓存
      • CORS过滤器
      • 故障注入
      • DynamoDB
      • gRPC HTTP/1.1 桥接
      • gRPC-JSON 转码过滤器
      • gRPC-Web 过滤器
      • 健康检查
      • 速率限制
      • 路由
      • Lua
    • 集群管理
      • 统计
      • 运行时设置
      • 集群发现服务
      • 健康检查
      • 熔断
    • 访问日志
    • 限速服务
    • 运行时配置
    • 路由表检查工具
  • 运维管理
    • 命令行选项
    • 热重启
    • 管理接口
    • 统计概述
    • 运行时配置
    • 文件系统
  • 自定义扩展示例
  • V1 API参考
    • 监听器
    • 网络过滤器
      • TLS客户端身份认证
      • Echo
      • HTTP连接管理
      • Mongo代理
      • 速率限制
      • Redis代理
      • TCP代理
    • HTTP路由配置
      • 虚拟主机
      • 路由
      • 虚拟集群
      • 速率限制配置
      • 路由发现服务
    • HTTP过滤器
      • 缓存
      • CORS过滤器
      • DynamoDB
      • 故障注入
      • gRPC HTTP/1.1 桥接
      • gRPC-JSON 转码过滤器
      • gRPC-Web 过滤器
      • 健康检查
      • Lua
      • 速率限制
      • 路由
    • 集群管理
      • 集群
        • 健康检查
        • 熔断
        • TLS上下文
        • 异常值检测
        • HASH环负载均衡配置
      • 异常检测
      • 集群发现服务
      • 服务发现服务
    • 访问日志
    • 管理接口
    • 限速服务
    • 运行时配置
    • 跟踪
  • V2 API参考
    • 启动引导
    • 监听&监听发现
    • 集群&集群发现
    • 服务发现
    • 健康检查
    • HTTP路由管理&发现
    • TLS配置
    • 通用的类型
    • 网络地址
    • 协议选项
    • 发现API
    • 限速组件
    • 过滤器
      • 网络过滤器
        • TLS客户端身份认证
        • HTTP连接管理
        • Mongo代理
        • 速率限制
        • Redis代理
        • TCP代理
      • HTTP过滤器
        • 缓存
        • 故障注入
        • 健康检查
        • Lua
        • 速率限制
        • 路由
        • gRPC-JSON转码器
      • 常见访问日志类型
      • 常见故障注入类型
  • FAQ
    • Envoy有多快?
    • 我在哪里获得二进制文件?
    • 我如何设置SNI?
    • 如何设置区域感知路由?
    • 我如何设置Zipkin跟踪?
Powered by GitBook
On this page
  • 集群&集群发现
  • Cluster
  • Cluster.EdsClusterConfig
  • Cluster.OutlierDetection
  • Cluster.LbSubsetConfig
  • Cluster.LbSubsetConfig.LbSubsetSelector
  • Cluster.LbSubsetConfig.LbSubsetFallbackPolicy (Enum)
  • Cluster.RingHashLbConfig
  • Cluster.RingHashLbConfig.DeprecatedV1
  • Cluster.DiscoveryType (Enum)
  • Cluster.LbPolicy (Enum)
  • Cluster.DnsLookupFamily (Enum)
  • UpstreamBindConfig
  • CircuitBreakers
  • CircuitBreakers.Thresholds
  • 返回

Was this helpful?

  1. V2 API参考

集群&集群发现

Previous监听&监听发现Next服务发现

Last updated 5 years ago

Was this helpful?

集群&集群发现

Cluster

{
  "name": "...",
  "type": "...",
  "eds_cluster_config": "{...}",
  "connect_timeout": "{...}",
  "per_connection_buffer_limit_bytes": "{...}",
  "lb_policy": "...",
  "hosts": [],
  "health_checks": [],
  "max_requests_per_connection": "{...}",
  "circuit_breakers": "{...}",
  "tls_context": "{...}",
  "http_protocol_options": "{...}",
  "http2_protocol_options": "{...}",
  "dns_refresh_rate": "{...}",
  "dns_lookup_family": "...",
  "dns_resolvers": [],
  "outlier_detection": "{...}",
  "cleanup_interval": "{...}",
  "upstream_bind_config": "{...}",
  "lb_subset_config": "{...}",
  "ring_hash_lb_config": "{...}",
  "transport_socket": "{...}"
}
  • 只能设置http_protocol_options和http2_protocol_options其中一个配置。

  • 只能设置http_protocol_options和http2_protocol_options其中一个配置。

Cluster.EdsClusterConfig

只有当集群发现类型是EDS时才有效。

{
  "eds_config": "{...}",
  "service_name": "..."
}

Cluster.OutlierDetection

{
  "consecutive_5xx": "{...}",
  "interval": "{...}",
  "base_ejection_time": "{...}",
  "max_ejection_percent": "{...}",
  "enforcing_consecutive_5xx": "{...}",
  "enforcing_success_rate": "{...}",
  "success_rate_minimum_hosts": "{...}",
  "success_rate_request_volume": "{...}",
  "success_rate_stdev_factor": "{...}",
  "consecutive_gateway_failure": "{...}",
  "enforcing_consecutive_gateway_failure": "{...}"
}

Cluster.LbSubsetConfig

(可选)将此群集中的端口划分为由端口元数据定义的子集,并按路由和加权群集元数据进行选择。

{
  "fallback_policy": "...",
  "default_subset": "{...}",
  "subset_selectors": []
}
  • { "subset_selectors": [
      { "keys": [ "version" ] },
      { "keys": [ "stage", "hardware_type" ] }
    ]}

    当来自所选路由和加权群集的元数据包含与子集的元数据相同的key和value时,匹配子集。相同的主机可能出现在多个子集中。

Cluster.LbSubsetConfig.LbSubsetSelector

子集的规格

{
  "keys": []
}
  • keys

Cluster.LbSubsetConfig.LbSubsetFallbackPolicy (Enum)

如果选择NO_FALLBACK,则会报告等效于没有健康主机的结果。如果选择了ANY_ENDPOINT,则可能会返回任何群集端点(取决于策略,健康检查等)。如果选择DEFAULT_SUBSET,则在匹配来自default_subset字段的值的端口上执行负载平衡。

  • NO_FALLBACK

    (DEFAULT)

  • ANY_ENDPOINT

  • DEFAULT_SUBSET

Cluster.RingHashLbConfig

{
  "minimum_ring_size": "{...}",
  "deprecated_v1": "{...}"
}

Cluster.RingHashLbConfig.DeprecatedV1

{
  "use_std_hash": "{...}"
}
  • use_std_hash

Cluster.DiscoveryType (Enum)

  • STATIC (DEFAULT) 静态发现类型

  • STRICT_DNS 严格的DNS发现类型

  • LOGICAL_DNS 逻辑DNS发现类型

  • EDS 服务发现类型

  • ORIGINAL_DST 原始目标发现类型

Cluster.LbPolicy (Enum)

  • ROUND_ROBIN (DEFAULT) 轮循负载平衡策略

  • LEAST_REQUEST 最小请求负载平衡策略

  • RING_HASH 环形散列负载平衡策略

  • RANDOM 随机负载平衡策略

  • ORIGINAL_DST_LB 原始目标负载平衡策略

Cluster.DnsLookupFamily (Enum)

当选择V4_ONLY时,DNS解析器将仅执行IPv4系列中的地址查找。如果选择V6_ONLY,则DNS解析程序将仅执行IPv6系列中的地址查找。如果指定了AUTO,则DNS解析器将首先执行IPv6系列中的地址查找,然后回退到IPv4系列中的地址查找。对于STRICT_DNS和LOGICAL_DNS以外的集群类型,此设置将被忽略。

  • AUTO

    (DEFAULT)

  • V4_ONLY

  • V6_ONLY

UpstreamBindConfig

包含Envoy的可扩展地址结构,在与上游建立连接时绑定。

{
  "source_address": "{...}"
}
  • source_address

CircuitBreakers

可以为每个定义的优先级单独指定断路设置。

{
  "thresholds": []
}
  • thresholds

CircuitBreakers.Thresholds

为RoutingPriority定义断路阈值设置。

{
  "priority": "...",
  "max_connections": "{...}",
  "max_pending_requests": "{...}",
  "max_requests": "{...}",
  "max_retries": "{...}"
}

返回

name (, REQUIRED) 提供在所有群集中必须唯一的群集名称。在发布统计信息时,会使用集群名称。在发布任何统计信息时,集群名称将被转换为_。默认情况下,群集名称的最大长度限制为60个字符。可通过--max-obj-name-len命令行参数,提高此上限。

type ()) 用于解析群集的服务发现类型。

eds_cluster_config () 用于群集的EDS更新配置。

connect_timeout () 连接到该群集中主机的超时时长。

per_connection_buffer_limit_bytes () 连接集群的读写缓冲区大小。如果未指定,则使用默认值(1MB)。

lb_policy ()) 在集群中选择主机时使用的负载平衡器类型。

hosts () 如果服务发现类型是STATIC,STRICT_DNS或LOGICAL_DNS,则需要配置。

health_checks () 群集可选的健康检查配置。如果未指定配置,则不会执行健康检查,并且假定所有群集成员都将始终处于健康状态。

max_requests_per_connection () 可选,单个上游连接的最大请求数。HTTP/1.1和HTTP/2连接池都遵守此参数。如果没有指定,则没有限制。若此参数设置为1将有效地禁用保活状态的连接。

circuit_breakers () 可选,集群熔断配置。

tls_context () 连接到上游群集的TLS配置。如果没有指定TLS配置,则新连接不会使用TLS。

http_protocol_options () 处理HTTP1请求时的其他选项。

http2_protocol_options () 即使需要默认的HTTP2协议选项,也必须设置此字段,以便Envoy将在创建新的HTTP连接池时,假定上游支持HTTP/2。目前,Envoy仅支持上游连接的先验证。即使TLS与ALPN一起使用,也必须指定http2_protocol_options。另外,这允许HTTP/2通过纯文本连接。

dns_refresh_rate () 指定DNS刷新率,在群集类型为STRICT_DNS或LOGICAL_DNS时,则将此值用作群集的DNS刷新率。如果未指定此设置,则此值默认为5000。对于STRICT_DNS和LOGICAL_DNS以外的群集类型,此设置将被忽略。

dns_lookup_family ()) DNS IP地址解析策略。 如果未指定此设置,则该值默认为V4_ONLY。

dns_resolvers () 如果指定了DNS解析程序,并且群集类型是STRICT_DNS或LOGICAL_DNS,则此值用于指定群集的dns解析程序。如果未指定此设置,则该值默认为使用/etc/resolv.conf配置的默认解析器。对于STRICT_DNS和LOGICAL_DNS以外的其他集群类型,此设置将被忽略。

outlier_detection () 如果指定,则会为此上游群集启用异常值检测。每个配置值都可以通过运行时配置覆盖。

cleanup_interval () 从集群类型ORIGINAL_DST中删除过期主机的时间间隔。如果主机在这段时间内没有被用作上游目的地,则认为它们是陈旧的。随着新的连接重定向到Envoy,新的主机将按需添加到原始目标集群,从而导致集群中的主机数量随着时间而增长。没有陈旧的主机(它们被主动用作目的地)被保存在群集中,从而允许与它们的连接保持打开状态,从而节省了打开新连接所花费的等待时间。如果未指定此设置,则该值默认为5000毫秒。对于ORIGINAL_DST以外的其他群集类型,此设置将被忽略。

upstream_bind_config () 用于绑定新建立的上游连接的可选配置。这将覆盖bootstrap proto中指定的任何bind_config。如果地址和端口是空的,则不执行绑定。

lb_subset_config () 配置负载平衡子集。

ring_hash_lb_config () 可选,配置环哈希负载平衡策略。只能设置一个ring_hash_lb_config。

transport_socket () 请参阅 描述。

eds_config () 此群集的EDS更新源的配置。

service_name () 可选,替代集群的名称,提供给EDS服务。这与集群名称没有同样的限制,即它可以是任意的长度。

有关异常值检测的更多信息,请参阅。

consecutive_5xx () 发生连续5xx逐出主机之前,连续5xx响应的数量。默认为5。

interval () 每次异常值分析扫描的时间间隔,这可能导致新抛出异常以及主机被重新添加到服务集群。默认为10000ms或10s。

base_ejection_time () 主机弹出的基准时间。实际时间等于基本时间乘以主机被逐出的次数。默认为30000ms或30s。

max_ejection_percent () 由于异常检测而逐出的主机占上游群集的最大百分比。默认为10%。

enforcing_consecutive_5xx () 当通过连续5xx检测到异常状态时,主机实际被逐出的几率百分比。这个设置可以用来禁止逐出或者缓慢地加速。默认为100。

enforcing_success_rate () 通过成功率统计检测到异常状态时,主机实际被逐出的几率百分比。这个设置可以用来禁止逐出或者缓慢地加速。默认为100。

success_rate_minimum_hosts () 必须具有足够的请求量来检测成功率异常值的群集中的主机数量。如果主机数量小于此设置,则不会为群集中的任何主机执行通过成功率统计信息的异常值检测。默认为5。

success_rate_request_volume () 在一个时间间隔内(如上述定义的时间间隔)必须收集的最小请求总数,以便将此主机包含在基于成功率的异常值检测中。如果低于此设置,则不会为该主机执行通过成功率统计的异常值检测。默认为100。

success_rate_stdev_factor () 这个因子被用来确定异常逐出成功率的阈值。逐出阈值是平均成功率与该因子与平均成功率的标准偏差的乘积之差:mean - (stdev * success_rate_stdev_factor)。 这个因素除以一千得到一个两位小数值。也就是说,如果期望的因子是1.9,运行时间值应该是1900,默认为1900。

consecutive_gateway_failure () 逐出之前连续发生的连续网关故障数量,包括(502,503,504状态或连接错误,映射到其中一个状态代码)默认为5。

enforcing_consecutive_gateway_failure () 当通过连续的网关故障检测到异常状态时,主机实际被逐出的几率百分比。这个设置可以用来禁止逐出或者缓慢地加速。默认为0。

fallback_policy () 选定路由的元数据没有响应的端口子集匹配时使用的行为。该值默认为。

default_subset () 如果fallback_policy为DEFAULT_SUBSET,则指定在回退期间使用的端点的默认子集。将default_subset中的每个字段与envoy.lb命名空间下的匹配LbEndpoint.Metadata进行比较。没有主机匹配是有效的,在这种情况下,行为与NO_FALLBACK的fallback_policy`相同。

subset_selectors () 对于每个条目,遍历LbEndpoint.Metadata的envoy.lb命名空间,并为每个唯一的key和value组合创建一个子集。例如:

() 与加权的群集元数据匹配的key列表。

负载均衡策略的具体配置。

minimum_ring_size () 最小哈希环大小,即总的虚拟节点。更大的尺寸将提供更好的请求分布,因为集群中的每个主机将具有更多的虚拟节点。默认为1024.在主机总数大于最小值的情况下,每个主机将被分配一个虚拟节点。

deprecated_v1 () 已弃用的v1配置。

() 默认为true,这意味着std::hash用于将主机散列到ketama环上。std::hash可能因平台而异。为此,Envoy默认最终会使用xxHash。该字段用于迁移目的,最终将被弃用。现在将其设置为false以使用xxHash。

有关每种类型的解释,请参阅。

有关每种类型的信息,请参阅负载平衡器体系部分。

() 建立上游连接时,Envoy应该绑定的地址。

() 如果使用相同的RoutingPriority定义多个阈值,则使用列表中的第一个阈值。如果给定的RoutingPriority没有定义Thresholds,则使用默认值。

priority () 设置指定断路器的RoutingPriority。

max_connections () Envoy将对上游群集进行的最大连接数。如果未指定,则默认值为1024。

max_pending_requests () Envoy将允许上游集群的最大待处理请求数。如果未指定,则默认值为1024。

max_requests () Envoy将对上游群集执行的最大并行请求数。如果未指定,则默认值为1024。

max_retries () Envoy允许上游集群执行的最大并行重试次数。如果未指定,则默认值为3。

Cluster proto
string
Duration
UInt32Value
Address
HealthCheck
UInt32Value
UpstreamTlsContext
Http1ProtocolOptions
Http2ProtocolOptions
Duration
Address
Duration
Cluster.EdsClusterConfig proto
string
Cluster.OutlierDetection proto
架构概述
UInt32Value
Duration
Duration
UInt32Value
UInt32Value
UInt32Value
UInt32Value
UInt32Value
UInt32Value
UInt32Value
UInt32Value
Cluster.LbSubsetConfig proto
Struct
Cluster.LbSubsetConfig.LbSubsetSelector proto
string
Cluster.LbSubsetConfig.LbSubsetFallbackPolicy proto
Cluster.RingHashLbConfig proto
RingHash
UInt64Value
Cluster.RingHashLbConfig.DeprecatedV1 proto
BoolValue
Cluster.DiscoveryType proto
服务发现类型
Cluster.LbPolicy proto
架构概述
Cluster.DnsLookupFamily proto
UpstreamBindConfig proto
Address
CircuitBreakers proto
CircuitBreakers.Thresholds proto
UInt32Value
UInt32Value
UInt32Value
UInt32Value
上一级
首页目录
Cluster
Cluster.EdsClusterConfig
Cluster.OutlierDetection
Cluster.LbSubsetConfig
Cluster.LbSubsetConfig.LbSubsetSelector
Cluster.LbSubsetConfig.LbSubsetFallbackPolicy (Enum)
Cluster.RingHashLbConfig
Cluster.RingHashLbConfig.DeprecatedV
Cluster.DiscoveryType (Enum)
Cluster.LbPolicy (Enum)
Cluster.DnsLookupFamily (Enum)
UpstreamBindConfig
CircuitBreakers
CircuitBreakers.Thresholds
Cluster.DiscoveryType
Cluster.EdsClusterConfig
Cluster.LbPolicy
CircuitBreakers
Cluster.DnsLookupFamily
Cluster.OutlierDetection
Cluster.LbSubsetConfig
Cluster.RingHashLbConfig
Cluster.LbSubsetConfig.LbSubsetFallbackPolicy
NO_FALLBACK
Cluster.LbSubsetConfig.LbSubsetSelector
Cluster.RingHashLbConfig.DeprecatedV1
CircuitBreakers.Thresholds
TransportSocket
base.TransportSocket
ConfigSource
RoutingPriority
BindConfig