[zh] improve fault-injection/index (#14809)

Signed-off-by: xin.li <xin.li@daocloud.io>
This commit is contained in:
my-git9 2024-03-30 20:14:03 +08:00 committed by GitHub
parent d9175d1a1d
commit 42f9bc4451
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 22 additions and 21 deletions

View File

@ -13,10 +13,10 @@ test: yes
## 开始之前 {#before-you-begin}
* 按照[安装指南](/zh/docs/setup/)中的说明设置 Istio
* 按照[安装指南](/zh/docs/setup/)中的说明配置 Istio
* 部署示例应用程序 [Bookinfo](/zh/docs/examples/bookinfo/)并应用
[默认目标规则](/zh/docs/examples/bookinfo/#apply-default-destination-rules)。
* 部署示例应用程序 [Bookinfo](/zh/docs/examples/bookinfo/)
并应用[默认目标规则](/zh/docs/examples/bookinfo/#apply-default-destination-rules)。
* 在[流量管理](/zh/docs/concepts/traffic-management)概念文档中查看有关故障注入的讨论。
@ -28,13 +28,13 @@ test: yes
{{< /text >}}
* 经过上面的配置,下面是请求的流程:
* `productpage``reviews:v2``ratings` (针对 `jason` 用户)
* `productpage``reviews:v1` (其他用户)
* `productpage``reviews:v2``ratings`(针对 `jason` 用户)
* `productpage``reviews:v1`(其他用户)
## 注入 HTTP 延迟故障 {#injecting-an-http-delay-fault}
为了测试微服务应用程序 Bookinfo 的弹性,我们将为用户 `jason``reviews:v2``ratings` 服务之间注入一个 7 秒的延迟。
这个测试将会发现一个故意引入 Bookinfo 应用程序中的 bug
这个测试将会发现一个故意引入 Bookinfo 应用程序中的 BUG
注意 `reviews:v2` 服务对 `ratings` 服务的调用具有 10 秒的硬编码连接超时。
因此,尽管引入了 7 秒的延迟,我们仍然期望端到端的流程是没有任何错误的。
@ -74,7 +74,7 @@ test: yes
subset: v1
{{< /text >}}
新的规则可能需要几秒钟才能传播到所有的 pod
新的规则可能需要几秒钟才能传播到所有的 Pod
## 测试延迟配置 {#testing-the-delay-configuration}
@ -91,13 +91,13 @@ test: yes
1. 查看页面的响应时间:
1. 打开浏览器的 *开发工具* 菜单
1. 打开 *网络* 标签
1. 重新加载 `/productpage` 页面您会看到页面加载实际上用了大约 6 秒。
1. 打开浏览器的**开发工具**菜单
1. 打开**网络**标签
1. 重新加载 `/productpage` 页面您会看到页面加载实际上用了大约 6 秒。
## 理解原理 {#understanding-what-happened}
您发现了一个 bug。微服务中有硬编码超时,导致 `reviews` 服务失败。
您发现了一个 BUG微服务中有硬编码超时,导致 `reviews` 服务失败。
按照预期,我们引入的 7 秒延迟不会影响到 `reviews` 服务,因为 `reviews``ratings` 服务间的超时被硬编码为 10 秒。
但是,在 `productpage``reviews` 服务之间也有一个 3 秒的硬编码的超时,再加 1 次重试,一共 6 秒。
@ -119,7 +119,8 @@ Istio 的故障注入规则可以帮助您识别此类异常,而不会影响
1. 确认 `/productpage` 页面正常响应且没有任何错误
但是,`reviews` 服务的 v3 版本已经修复了这个问题。
`reviews:v3` 服务已将 `reviews``ratings` 的超时时间从 10 秒降低为 2.5 秒,因此它可以兼容(小于)下游 `productpage` 请求的超时时间。
`reviews:v3` 服务已将 `reviews``ratings` 的超时时间从 10 秒降低为 2.5
秒,因此它可以兼容(小于)下游 `productpage` 请求的超时时间。
如果您按照[流量转移](/zh/docs/tasks/traffic-management/traffic-shifting/)任务所述将所有流量转移到 `reviews:v3`
您可以尝试修改延迟规则为任何低于 2.5 秒的数值,例如 2 秒,然后确认端到端的流程没有任何错误。
@ -172,7 +173,7 @@ Istio 的故障注入规则可以帮助您识别此类异常,而不会影响
1. 以用户 `jason` 登录到 `/productpage` 页面。
如果规则成功传播到所有的 pod您应该能立即看到页面加载并看到 `Ratings service is currently unavailable` 消息。
如果规则成功传播到所有的 Pod您应该能立即看到页面加载并看到 `Ratings service is currently unavailable` 消息。
1. 如果您注销用户 `jason` 或在匿名窗口(或其他浏览器)中打开 Bookinfo 应用程序,
您将看到 `/productpage` 为除 `jason` 以外的其他用户调用了 `reviews:v1`(完全不调用 `ratings`)。