熔断
熔断是分布式系统的关键组成部分,也是一种重要的弹性模式。熔断允许应用程序快速失败并尽快向下游施加背压,从而提供限制故障对整个系统的影响的方法。本指南描述了如何在 OSM 中配置熔断。
配置熔断
OSM 利用其 UpstreamTrafficSetting API 为定向到上游服务的流量配置断路属性。我们使用术语 upstream service
来指代从客户端接收连接和请求并返回响应的服务。该规范允许在连接和请求级别为上游服务配置断路属性。OSM 利用 Envoy 的熔断功能 为参与网格的应用程序实现熔断。
每个 UpstreamTrafficSetting
配置都针对由 spec.host
字段定义的上游主机。对于命名空间 my-namespace
中的 Kubernetes 服务 my-svc
,必须在命名空间 my-namespace
中创建 UpstreamTrafficSetting
资源,并且 spec.host
必须是 my-svc.my-namespace.svc.cluster.local
形式的FQDN。当在 出口策略 中指定为匹配项时,spec.host
必须与出口策略中指定的主机和 UpstreamTrafficSetting
配置必须与 Egress
资源属于同一命名空间。
熔断适用于 TCP 和 HTTP 级别,并且可以使用 UpstreamTrafficSetting
资源中的 connectionSettings
属性进行配置。TCP 流量设置适用于 TCP 和 HTTP 流量,而 HTTP 设置仅适用于 HTTP 流量。
支持以下熔断配置:
Maximum connections
:允许客户端建立到属于通过UpstreamTrafficSetting
配置中的spec.host
字段指定的上游主机的所有后端的最大连接数。此设置可以使用tcp.maxConnections
字段进行配置,并且适用于 TCP 和 HTTP 流量。如果未指定,默认为4294967295
(2^32 - 1)。Maximum pending requests
:允许排队的上游主机的未处理 HTTP 请求的最大数量。每当没有足够的上游连接可用要立即分派请求时,请求就会添加到待处理请求列表中。对于 HTTP/2 连接,如果http.maxRequestsPerConnection
没有配置,所有请求都将在同一个连接上进行多路复用,因此只有在没有建立连接时才会触发此断路器。此设置可以使用http.maxPendingRequests
字段进行配置,并且仅适用于 HTTP 流量。如果未指定,默认为4294967295
(2^32 - 1)。Maximum requests
:允许客户端向上游主机发出的最大并行请求数。此设置可以使用http.maxRequests
字段进行配置,并且仅适用于 HTTP 流量。如果未指定,默认为4294967295
(2^32 - 1)。Maximum requests per connection
:每个连接允许的最大请求数。此设置可以使用http.maxRequestsPerConnection
字段进行配置,并且仅适用于 HTTP 流量。如果未指定,则没有限制。Maximum active retries
:允许客户端对上游主机进行的最大活动重试次数。此设置可以使用http.maxRetries
字段进行配置,并且仅适用于 HTTP 流量。如果未指定,默认为4294967295
(2^32 - 1)。
要了解有关配置熔断的更多信息,请参阅以下演示指南: