mirror of https://github.com/istio/istio.io.git
				
				
				
			zh: content/docs/tasks/traffic-management/fault-injection/index.md (#2596)
* zh: content/docs/tasks/traffic-management/fault-injection/index.md Keep consistent with the latest version Signed-off-by: ylf <1045438139@qq.com> * zh: content/docs/tasks/traffic-management/fault-injection/index.md fix md style * zh: content/docs/tasks/traffic-management/fault-injection/index.md fix md style
This commit is contained in:
		
							parent
							
								
									2d70a7633e
								
							
						
					
					
						commit
						858b4e8af8
					
				|  | @ -18,25 +18,31 @@ keywords: [流量管理,故障注入] | ||||||
| * 通过首先执行[请求路由](/zh/docs/tasks/traffic-management/request-routing/)任务或运行以下命令来初始化应用程序版本路由: | * 通过首先执行[请求路由](/zh/docs/tasks/traffic-management/request-routing/)任务或运行以下命令来初始化应用程序版本路由: | ||||||
| 
 | 
 | ||||||
|     {{< text bash >}} |     {{< text bash >}} | ||||||
|     $ istioctl create -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@ |     $ kubectl apply -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@ | ||||||
|     $ istioctl replace -f @samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml@ |     $ kubectl apply -f @samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml@ | ||||||
|     {{< /text >}} |     {{< /text >}} | ||||||
| 
 | 
 | ||||||
|  | * 通过上面的配置,下面是请求的流程: | ||||||
|  |     *  `productpage` → `reviews:v2` → `ratings` (`jason` 用户) | ||||||
|  |     *  `productpage` → `reviews:v1` (其他用户) | ||||||
|  | 
 | ||||||
| ## 使用 HTTP 延迟进行故障注入 | ## 使用 HTTP 延迟进行故障注入 | ||||||
| 
 | 
 | ||||||
| 为了测试我们的微服务应用程序 Bookinfo 的弹性,我们将在 reviews :v2 和 ratings 服务之间的一个用户 "jason” _注入一个 7 秒_ 的延迟。 | 为了测试我们的微服务应用程序 Bookinfo 的弹性,我们将在 `reviews:v2` 和 `ratings` 服务之间的一个用户 `jason` 注入一个 7 秒的延迟。 | ||||||
| 由于 _reviews:v2_ 服务对其 ratings 服务的调用具有 10 秒的硬编码连接超时,因此我们期望端到端流程是正常的(没有任何错误)。 | 这个测试将会发现故意引入 Bookinfo 应用程序中的错误。 | ||||||
|  | 
 | ||||||
|  | 由于 `reviews:v2` 服务对其 ratings 服务的调用具有 10 秒的硬编码连接超时,比我们设置的 7s 延迟要大,因此我们期望端到端流程是正常的(没有任何错误)。 | ||||||
| 
 | 
 | ||||||
| 1. 创建故障注入规则以延迟来自用户 "jason”(我们的测试用户)的流量 | 1. 创建故障注入规则以延迟来自用户 "jason”(我们的测试用户)的流量 | ||||||
| 
 | 
 | ||||||
|     {{< text bash >}} |     {{< text bash >}} | ||||||
|     $ istioctl replace -f @samples/bookinfo/networking/virtual-service-ratings-test-delay.yaml@ |     $ kubectl apply -f @samples/bookinfo/networking/virtual-service-ratings-test-delay.yaml@ | ||||||
|     {{< /text >}} |     {{< /text >}} | ||||||
| 
 | 
 | ||||||
| 1. 确认已创建规则: | 1. 确认已创建规则: | ||||||
| 
 | 
 | ||||||
|     {{< text bash yaml >}} |     {{< text bash yaml >}} | ||||||
|     $ istioctl get virtualservice ratings -o yaml |     $ kubectl get virtualservice ratings -o yaml | ||||||
|     apiVersion: networking.istio.io/v1alpha3 |     apiVersion: networking.istio.io/v1alpha3 | ||||||
|     kind: VirtualService |     kind: VirtualService | ||||||
|     metadata: |     metadata: | ||||||
|  | @ -80,15 +86,15 @@ keywords: [流量管理,故障注入] | ||||||
|     {{< /text >}} |     {{< /text >}} | ||||||
| 
 | 
 | ||||||
| 1. 查看页面的返回时间: | 1. 查看页面的返回时间: | ||||||
|    1. 打开浏览器的 *开发工具* 菜单 |     1. 打开浏览器的 *开发工具* 菜单 | ||||||
|    1. 打开 *网络* 标签 |     1. 打开 *网络* 标签 | ||||||
|    1. 重新加载 `productpage` 页面,你会看到页面实际上用了大约 6s。 |     1. 重新加载 `productpage` 页面,你会看到页面实际上用了大约 6s。 | ||||||
| 
 | 
 | ||||||
| ## 了解发生了什么 | ## 理解原理 | ||||||
| 
 | 
 | ||||||
| 你发现了一个 bug。在微服务中有硬编码超时,导致 `reviews` 服务失败。 | 你发现了一个 bug。在微服务中有硬编码超时,导致 `reviews` 服务失败。 | ||||||
| 
 | 
 | ||||||
| 在 `productpage` 和 `reviews` 服务之间超时时间是 6s - 编码 3s + 1次重试总共 6s ,`reviews` 和 `ratings` 服务之间的硬编码连接超时为 10s 。由于我们引入的延时,`/productpage` 提前超时并引发错误。 | 在 `productpage` 和 `reviews` 服务之间超时时间是 6s - 编码 3s + 1 次重试总共 6s ,`reviews` 和 `ratings` 服务之间的硬编码连接超时为 10s 。由于我们引入的延时,`/productpage` 提前超时并引发错误。 | ||||||
| 
 | 
 | ||||||
| 这些类型的错误可能发生在典型的企业应用程序中,其中不同的团队独立地开发不同的微服务。Istio 的故障注入规则可帮助您识别此类异常,而不会影响最终用户。 | 这些类型的错误可能发生在典型的企业应用程序中,其中不同的团队独立地开发不同的微服务。Istio 的故障注入规则可帮助您识别此类异常,而不会影响最终用户。 | ||||||
| 
 | 
 | ||||||
|  | @ -113,18 +119,18 @@ keywords: [流量管理,故障注入] | ||||||
| 
 | 
 | ||||||
| 测试微服务弹性的另一种方法是引入 HTTP abort 故障。在这个任务中,在 ratings 微服务中引入 HTTP abort ,测试用户为 `jason` 。 | 测试微服务弹性的另一种方法是引入 HTTP abort 故障。在这个任务中,在 ratings 微服务中引入 HTTP abort ,测试用户为 `jason` 。 | ||||||
| 
 | 
 | ||||||
| 在这个案例中,我们希望页面能够立即加载,同时显示 `product ratings not available` 这样的消息。 | 在这个案例中,我们希望页面能够立即加载,同时显示 `Ratings service is currently unavailable` 这样的消息。 | ||||||
| 
 | 
 | ||||||
| 1. 为用户 "jason” 创建故障注入规则发送 HTTP abort | 1. 为用户 "jason” 创建故障注入规则发送 HTTP abort | ||||||
| 
 | 
 | ||||||
|     {{< text bash >}} |     {{< text bash >}} | ||||||
|     $ istioctl replace -f @samples/bookinfo/networking/virtual-service-ratings-test-abort.yaml@ |     $ kubectl apply -f @samples/bookinfo/networking/virtual-service-ratings-test-abort.yaml@ | ||||||
|     {{< /text >}} |     {{< /text >}} | ||||||
| 
 | 
 | ||||||
| 1. 确认已创建规则 | 1. 确认已创建规则 | ||||||
| 
 | 
 | ||||||
|     {{< text bash yaml >}} |     {{< text bash yaml >}} | ||||||
|     $ istioctl get virtualservice ratings -o yaml |     $ kubectl get virtualservice ratings -o yaml | ||||||
|     apiVersion: networking.istio.io/v1alpha3 |     apiVersion: networking.istio.io/v1alpha3 | ||||||
|     kind: VirtualService |     kind: VirtualService | ||||||
|     metadata: |     metadata: | ||||||
|  | @ -160,14 +166,15 @@ keywords: [流量管理,故障注入] | ||||||
| 
 | 
 | ||||||
|     如果规则成功传播到所有的 pod,您应该能立即看到页面加载并看到 `Ratings service is currently unavailable` 消息。 |     如果规则成功传播到所有的 pod,您应该能立即看到页面加载并看到 `Ratings service is currently unavailable` 消息。 | ||||||
| 
 | 
 | ||||||
| 1. 注销用户 `jason`,您应该会在 `/productpage` 网页上看到评级星标的评论成功显示。 | 1. 如果您注销用户 `jason` 或在匿名窗口(或其他浏览器)中打开 Bookinfo 应用程序,您应该会在 `/productpage` 仍然调用 `reviews:v1`(没有调用  `ratings`) | ||||||
|  |  除了 `jason` 外的用户都会看到网页上看到评级星标的评论成功显示。 | ||||||
| 
 | 
 | ||||||
| ## 清理 | ## 清理 | ||||||
| 
 | 
 | ||||||
| 1. 删除应用程序路由规则: | 1. 删除应用程序路由规则: | ||||||
| 
 | 
 | ||||||
|     {{< text bash >}} |     {{< text bash >}} | ||||||
|     $ istioctl delete -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@ |     $ kubectl delete -f @samples/bookinfo/networking/virtual-service-all-v1.yaml@ | ||||||
|     {{< /text >}} |     {{< /text >}} | ||||||
| 
 | 
 | ||||||
| 1. 如果您不打算探索任何后续任务,请参阅 [Bookinfo 清理](/zh/docs/examples/bookinfo/#清理)说明以关闭应用程序。 | 1. 如果您不打算探索任何后续任务,请参阅 [Bookinfo 清理](/zh/docs/examples/bookinfo/#清理)说明以关闭应用程序。 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue