在哪里放置 Istio 网络重试
Where to put Istio network retry
我对Istio很陌生,不是Kubernete的专家,虽然我用过后者。我恭敬地请求您的理解和比您通常可能包含的更多的细节。
为简单起见,假设我有两个服务,都是 Java/SpringBoot。服务 A 监听来自外部世界的请求,服务 B 监听来自服务 A 的请求。服务 B 是可扩展的,并且有时可能 return 503。我希望服务 A 在可配置的非- 编程方式。这是我尝试遵循的 blog/link,我认为它非常相似。
https://samirbehara.com/2019/06/05/retry-design-pattern-with-istio/
两个问题:
这看起来很明显,但是如果我想定义一个虚拟可重试服务,我是将它添加到项目的现有 application.yml 文件中,还是有其他文件可以networking.istio.io/v1alpha3 去?
我是否会在 yaml/repo 中为服务 A 或服务 B 定义重试配置?我可以想到以任何一种方式构建 Istio 的原因。
谢谢,
樵夫
如果可扩展服务正在返回 503
,那么像 serviceB
的博客示例一样添加虚拟服务并使 serviceA
连接到 virtualServiceB
是有意义的这将重试 ServiceB
现在,要让它工作(从集群内):
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: serviceB
spec:
hosts:
– serviceB
http:
– route:
– destination:
host: serviceB
retries:
attempts: 3
perTryTimeout: 2s
这些行:
hosts:
– serviceB
将告诉默认的 Istio 网关(网状网络)将所有流量不路由到 serviceB
,而是先路由到 virtualServiceB
,然后再路由到 ServiceB
。然后你将重试从 virtualServiceB
到 serviceB
.
希望对您有所帮助
我对Istio很陌生,不是Kubernete的专家,虽然我用过后者。我恭敬地请求您的理解和比您通常可能包含的更多的细节。
为简单起见,假设我有两个服务,都是 Java/SpringBoot。服务 A 监听来自外部世界的请求,服务 B 监听来自服务 A 的请求。服务 B 是可扩展的,并且有时可能 return 503。我希望服务 A 在可配置的非- 编程方式。这是我尝试遵循的 blog/link,我认为它非常相似。
https://samirbehara.com/2019/06/05/retry-design-pattern-with-istio/
两个问题:
这看起来很明显,但是如果我想定义一个虚拟可重试服务,我是将它添加到项目的现有 application.yml 文件中,还是有其他文件可以networking.istio.io/v1alpha3 去?
我是否会在 yaml/repo 中为服务 A 或服务 B 定义重试配置?我可以想到以任何一种方式构建 Istio 的原因。
谢谢, 樵夫
如果可扩展服务正在返回 503
,那么像 serviceB
的博客示例一样添加虚拟服务并使 serviceA
连接到 virtualServiceB
是有意义的这将重试 ServiceB
现在,要让它工作(从集群内):
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: serviceB
spec:
hosts:
– serviceB
http:
– route:
– destination:
host: serviceB
retries:
attempts: 3
perTryTimeout: 2s
这些行:
hosts:
– serviceB
将告诉默认的 Istio 网关(网状网络)将所有流量不路由到 serviceB
,而是先路由到 virtualServiceB
,然后再路由到 ServiceB
。然后你将重试从 virtualServiceB
到 serviceB
.
希望对您有所帮助