1. 什么是熔断?

一种过载保护的手段

  • 目的:避免服务的级联失败(当某一个服务出现故障的时候,通过熔断这种机制来避免调用他的服务也就是下游服务 也发生错误)

    2. 实验:配置熔断器

    任务:为httpbin服务,配置熔断器
    (httpbin已经部署过,直接配置熔断)
    image.png

“熔断”是通过“目标规则”来配置的,在“目标规则”的trafficPolicy配置项下配置

  1. apiVersion: networking.istio.io/v1alpha3
  2. kind: DestinationRule
  3. metadata:
  4. name: httpbin
  5. spec:
  6. host: httpbin
  7. trafficPolicy:
  8. connectionPool: # 连接池
  9. tcp:
  10. maxConnections: 1 # tcp的最大连接数
  11. http:
  12. http1MaxPendingRequests: 1 # http最大被阻挡的请求数
  13. maxRequestsPerConnection: 1 # http每个链接的最大请求
  14. outlierDetection: # 失败探测(异常检测)
  15. consecutiveErrors: 1 # 失败次数 (失败一次就触发熔断)
  16. interval: 1s # 熔断的间隔时间
  17. baseEjectionTime: 3m # 最小驱逐时间,默认是30s(驱逐时间会根据他来乘上熔断触发的次数,通过这样的方式可以实现指数级的退避策略:当异常越来越 多的时候,熔断间隔的时间也就越来越长)
  18. maxEjectionPercent: 100 # 最大可被驱逐的比例

运行脚本
image.png
查看脚本的生效情况
运行kubectl describe dr httpbin,可以看到,配置已经生效
image.png