当下游服务引发5xx(500,502,503,504)错误时,Istio断路器无法在连续错误时断开电路

时间:2019-04-16 12:06:21

标签: kubernetes openshift istio circuit-breaker

我有几个微服务,客户服务和客户评级服务。第一个调用后者。

我在调用客户评级服务时放置了断路器,并强制该服务始终抛出5xx错误以验证断路器。但是客户服务部门总是这样称呼,显然电路永远都不会断开。

客户评分服务-Istio虚拟服务

...
spec:
  hosts:
    - customer-rating-service
  gateways: ~
  http:
    - route:
        - destination:
            host: customer-rating-service
            subset: v1

客户评分服务-Istio目标规则

...
spec:
  host: customer-rating-service
  trafficPolicy:
    outlierDetection:
      baseEjectionTime: 30s
      consecutiveErrors: 1
      maxEjectionPercent: 100
      minHealthPercent: 0
    tls:
      mode: ISTIO_MUTUAL
  subsets:
    - labels:
        version: v1
      name: v1

如您所见,我已经将consecutiveErrors: 1设置为从客户服务到客户评级服务的首次调用之后,因为这将返回5xx错误(我尝试抛出其他错误500、502、503 ...),电路应断开。但是,每个后续调用都会到达客户评级服务。问题出在哪里?

注意:每个服务只有一个实例。

1 个答案:

答案 0 :(得分:0)

此功能在Istio 1.3中有效(但在1.2中不可用)。请参阅我在https://github.com/istio/api/issues/1068

上提出的问题