配置 istio 目标规则以使用回退 URL 而不是 503

问题描述

我知道您可以使用 istio 在服务没有响应时打开断路器。是否可以重定向到不同的 URL,而不是返回 503?同样的问题,但是当原始服务返回 500 时,我们可以重定向到另一个 URL 吗?

或者是否可以让 istio 提供离线模式响应?我认为最简单的方法是通过 URL 重定向离线模式服务 URL,但对想法持开放态度......

解决方法

我们可以重定向到另一个 URL 吗?

如果我理解正确,您是在问是否可以仅使用 istio 来做到这一点。


根据documentation

虽然 Istio 故障恢复功能提高了网格中服务的可靠性和可用性,但应用程序必须处理故障或错误并采取适当的回退措施。例如,当负载均衡池中的所有实例都失败时,Envoy 会返回 HTTP 503 代码。应用程序必须实现处理 HTTP 503 错误代码所需的任何回退逻辑。

还有dzone.com,Christian Posta blog post

Istio 提高了网格中服务的可靠性和可用性。但是,应用程序需要处理错误并采取适当的回退措施。例如,当负载均衡池中的所有实例都失败时,Envoy 将返回 HTTP 503。应用程序负责实现处理来自上游服务的 HTTP 503 错误代码所需的任何回退逻辑。

使用服务网格,目前没有用于故障上下文传播的专门库,故障原因更加不透明。这并不意味着我们的应用程序不能进行回退(对于传输和客户端特定的错误)。我认为对于任何应用程序的协议来说,无论是使用特定于库的框架还是不)始终遵守它试图为客户保持的承诺,这一点非常重要。如果它发现它无法完成其预期的操作,它应该想办法优雅地降级。幸运的是,您不需要为此使用特定于应用程序的框架。大多数语言都有内置的错误和异常捕获和处理。应在这些异常路径中实施回退。


遗憾的是,答案是,你不能。您必须在您的应用程序中实现它。


其他资源: