KubeSphere 基于 istio 通过服务网格中部署的 Envoy sidecar 代理,为微服务应用的服务组件提供了流量治理的能力,允许用户修改负载均衡的方式,对连接池管理和熔断器进行细粒度的配置,本文档将对流量治理中的策略配置的所有参数进行说明,建议参考 熔断 示例文档进行实际操作。

流量治理策略配置

点击流量治理拓扑图中的任意一个服务组件,例如点击 reviews,右侧可以看到流量治理策略配置的弹窗。

负载均衡算法

流量治理 - 图1

会话保持

流量治理 - 图2

其中,流量治理的负载均衡算法表格中的两种策略:

参数 参数说明
负载均衡算法
- ROUND_ROBIN (轮询):默认负载均衡算法
- LEAST_CONN (最小连接数):随机选取两个健康的主机,再从所选取的两个主机中选择一个链接数较少的主机
- RANDOM (随机):从所有健康的主机中,随机选取一个主机,在负载平衡池的端点上均匀分配负载。在没有健康检查策略的情况下,随机通常会比轮询调度策略更加高效,但不会有任何顺序。
会话保持
根据 HTTP header 中的内容获取哈希:
流量治理根据 HTTP header 中的内容获取哈希。
根据 Cookie 中的内容获取哈希:
支持用户输入 Cookie 键的名称,转发方式则由设定的 Cookie 键对应的值来计算哈希,哈希相同的请求则会转发至同一个容器组中。例如我们设定 Cookie 中的 User 为键,则通过计算 User 对应的值的哈希来确认转发规则。
根据源 IP 获取哈希: 根据源 IP 中的内容获得哈希。

在微服务的一个服务组件中,流量治理中可选择开启连接池管理和熔断器等配置,以下将对相关参数进行释义。

连接池管理

在连接池管理一栏,点击 「开启」即可配置连接池管理的各项参数。

参数 参数说明
最大连接数 是指 Envoy 将为上游群集中的所有主机建立的最大连接数,适用于 HTTP/1.1。
每连接最大请求数 对某一后端的请求中,一个连接内能够发出的最大请求数量。对后端连接中最大的请求数量若设为 1 则会禁止 keep alive 特性。
最大请求重试次数 在指定时间内对目标主机最大重试次数。
连接超时时间 TCP 连接超时时间,最小值必须大于 1ms。
最大连接数和连接超时时间是对 TCP 和 HTTP 都有效的通用连接设置
最大等待请求数 等待列队的长度,默认为 1024。

流量治理 - 图3

熔断器

在熔断器一栏,点击 「开启」即可配置熔断器的各项参数。

参数 参数说明
连续错误响应个数 在一个检查周期内,连续出现 5xx 状态码的错误的个数,超过该值后,实例将会被移出连接池。
检查周期 (单位: s) 将会对检查周期内的响应码进行筛选,检测实例上一次被移除和这一次被移除之间的时间间隔。默认值为 10s,最小值为 1ms。
容器组隔离比例(单位: %) 上游服务的负载均衡池中允许被移除的实例的最大百分比,采用向上取整。
最短隔离时间 (单位: s) 实例最短的移除时间。实例每次被移除后的隔离时间为被移除的次数与最小移除时间的乘积。该策略设置让系统能够自动增加不健康上游服务实例的隔离时间。

流量治理 - 图4