1. 什么是熔断?
一种过载保护的手段
- 目的:避免服务的级联失败(当某一个服务出现故障的时候,通过熔断这种机制来避免调用他的服务也就是下游服务 也发生错误)
2. 实验:配置熔断器
任务:为httpbin服务,配置熔断器
(httpbin已经部署过,直接配置熔断)
“熔断”是通过“目标规则”来配置的,在“目标规则”的trafficPolicy配置项下配置
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: httpbin
spec:
host: httpbin
trafficPolicy:
connectionPool: # 连接池
tcp:
maxConnections: 1 # tcp的最大连接数
http:
http1MaxPendingRequests: 1 # http最大被阻挡的请求数
maxRequestsPerConnection: 1 # http每个链接的最大请求
outlierDetection: # 失败探测(异常检测)
consecutiveErrors: 1 # 失败次数 (失败一次就触发熔断)
interval: 1s # 熔断的间隔时间
baseEjectionTime: 3m # 最小驱逐时间,默认是30s(驱逐时间会根据他来乘上熔断触发的次数,通过这样的方式可以实现指数级的退避策略:当异常越来越 多的时候,熔断间隔的时间也就越来越长)
maxEjectionPercent: 100 # 最大可被驱逐的比例
运行脚本
查看脚本的生效情况
运行kubectl describe dr httpbin,可以看到,配置已经生效