有什么方法可以防止VirtualService路由到空的不健康的目的地?例如,考虑以下VirtualService和DestinationRule。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: httpy
spec:
hosts:
- httpy
http:
- route:
- destination:
host: httpy
subset: prod
weight: 90
- destination:
host: httpy
subset: canary
weight: 10
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: httpy
spec:
host: httpy
subsets:
- name: prod
labels:
isCanary: "false"
- name: canary
labels:
isCanary: "true"
想象一下,没有健康的豆荚在里面 httpy
的服务。isCanary: "true"
标签,要么是因为A)零个豆荚具有 isCanary: "true"
标签或B)所有的金丝雀豆荚都是未准备好的不健康的。 这将导致10%的请求到 httpy
返回 "无健康上行 "的响应。
有没有什么好的方法可以避免这种情况? 有没有可能让VirtualService变得更 "聪明",让它不把流量路由到一个明显不可用的目的地?
如果你想自己尝试一下,应用下面的要领,然后删去 httpy-canary
部署。https:/gist.github.comllamasoftaaca58fda0ec2e06f2fee4f272691460。
是的,在目标规则中,您可以配置为 failover
与 LocalityLoadBalancerSetting
.
根据 同义词 文档。
如果运营商的目标不是在区域和地区之间分配负载,而是限制故障切换的区域性以满足其他运营需求,运营商可以设置一个 "故障切换 "策略而不是 "分配 "策略。
下面的例子为区域设置了一个区域性故障转移策略。假设一个服务驻留在 us-east、us-west & eu-west 的区域内,这个例子指定,当 us-east 内的端点变得不健康时,流量应故障转移到 eu-west 内任何区域或子区域的端点,同样地,us-west 应故障转移到 us-east。
failover: - from: us-east to: eu-west - from: us-west to: us-east
故障切换需要 异常值检测 要到位才行。
希望对大家有所帮助。