我有几个微服务,客户服务和客户评级服务。第一个调用后者。
我在调用客户评级服务时放置了断路器,并强制该服务始终抛出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 ...),电路应断开。但是,每个后续调用都会到达客户评级服务。问题出在哪里?
注意:每个服务只有一个实例。
答案 0 :(得分:0)
此功能在Istio 1.3中有效(但在1.2中不可用)。请参阅我在https://github.com/istio/api/issues/1068
上提出的问题