本文档为您介绍如何通过Istio管理流量。Istio提供的流量治理策略包含负载均衡算法设置、会话保持,连接池管理、熔断配置和故障注入等。
操作步骤 登录容器服务管理控制台。 在 Kubernetes 菜单下, 单击左侧导航栏中的服务网格 > 虚拟服务,可以看到虚拟服务(Virtual Service)列表。 绑定虚拟服务 说明 未绑定网关的虚拟服务在服务网关列会显示绑定按钮。 单击对应虚拟服务右侧的管理,进入详情界面,您可以根据需要,进行流量管理。 流量管理 流量治理 在reviews详情页,单击流量治理,进入如下页面。流量治理 负载均衡设置:Istio提供标准负载均衡算法和会话保持两种方式,两者只能取其一。 图 1. 负载均衡算法 负载均衡算法 图 2. 会话保持 会话保持 表 1. 负载均衡设置 参数 参数名称 参数说明 loadBalancer 负载均衡算法 ROUND_ROBIN:轮询调度策略。是Istio代理的缺省算法。此算法按顺序在负载平衡池中的端点上均匀分配负载。 LEAST_CONN:随机选择两个健康主机,从中选择一个较少请求的主机提供服务。 这是加权最小请求负载平衡的实现。 RANDOM:随机的负载均衡算法。从所有健康的主机中随机选择一个主机,在负载平衡池的端点上均匀分配负载。在没有健康检查策略的情况下,随机策略通常会比轮询调度策略更加高效,但不会有任何顺序。 PASSTHROUGH:这个策略会直接把请求发给客户端要求的地址上。请谨慎使用。 consistentHash 会话保持 基于HTTP头:根据HTTP header中的内容获取哈希。 基于Cookie:根据Cookie中的内容获取哈希。 基于源IP:根据源 IP 中的内容获得哈希。 连接池管理。连接池管理 表 2. 连接池管理 参数 参数名称 参数说明 maxConnections 最大连接数 是指Envoy将为上游群集中的所有主机建立的最大连接数。适用于HTTP/1.1群集。 说明 最大连接数和连接超时时间是对 TCP 和 HTTP 都有效的通用连接设置。 connectTimeout 连接超时时间 TCP连接超时时间。最小值必须大于1ms。 说明 最大连接数和连接超时时间是对 TCP 和 HTTP 都有效的通用连接设置。 maxRequestsPerConnection HTTP每连接最大请求数 对某一后端的请求中,一个连接内能够发出的最大请求数量。对后端连接中最大的请求数量若设为1,则会禁止keep alive特性。 说明 HTTP每连接最大请求数和HTTP最大请求重试次数仅针对 HTTP1.1/HTTP2/GRPC 协议的连接生效。 maxRetries HTTP最大请求重试次数 在指定时间内对目标主机最大重试次数。默认值为3。 说明 HTTP每连接最大请求数和HTTP最大请求重试次数仅针对 HTTP1.1/HTTP2/GRPC 协议的连接生效。 熔断设置:您可以在流量策略中选择进行熔断策略配置。熔断设置 表 3. 熔断配置 参数 参数名称 参数解释 consecutiveErrors 连续错误响应个数 周期内连续出现错误的个数。超过该值后,主机将会被移出连接池。默认值是5。 说明 当上游服务是 HTTP 服务时,5xx 的返回码会被记为错误;当上游主机提供的是 TCP 服务时,TCP 连接超时和连接错误/故障事件会被记为错误。 maxEjectionPercent 隔离实例比例(%) 上游服务的负载均衡池中允许被移除的主机的最大百分比。默认值为10%。 baseEjectionTime 最短隔离时间 最小的移除时间长度。主机每次被移除后的隔离时间为被移除的次数和最小移除时间的乘积。这样的实现,让系统能够自动增加不健康上游服务实例的隔离时间。默认值为30s。 interval 检查周期 检测主机上一次被移除和这一次被移除之间的时间间隔。默认值为 10s,最小值为1ms。 说明 勾选将设置应用于所有版本,上述设置在reviews服务的各个版本均生效。 故障注入策略 故障注入策略包含时延故障和中断故障策略,当前故障注入支持HTTP。
时延故障(delay):转发之前加入延迟,用于模拟网络故障、上游服务过载等故障。时延故障 表 4. 时延故障 参数 参数名称 参数解释 percent 百分比 取值范围为0~ 100,用来指定注入延迟的比例。 fixedDelay 时延 必填项。在请求转发之前设定的时间延迟单位。取值单位包括小时(h)、分钟(m)、秒钟(s)和毫秒(ms),允许的最小值是 1ms。 中断故障(abort):终止请求并向下游服务返回错误代码,模拟上游服务出错的状况。中断故障 表 5. 中断故障 参数 参数名称 参数解释 percent 百分比 取值范围为 0 ~ 100 ,用来指定中断请求的比例。 httpStatus 状态码 必填项。来定义返回给客户端服务的有效的 HTTP 错误代码。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。