故障注入过滤器

这个简单的示例演示了 Envoy 的 故障注入 功能,使用 Envoy 的 运行时支持 来控制该功能。

它演示了导致请求中止和失败的故障注入,以及仅延迟响应的故障。

步骤 1:启动所有容器

更改到 examples/fault_injection 目录。

终端 1

$ pwd
envoy/examples/fault-injection
$ docker compose pull
$ docker compose up --build -d
$ docker compose ps

          Name                         Command               State               Ports
------------------------------------------------------------------------------------------------------
fault-injection_backend_1   gunicorn -b 0.0.0.0:80 htt       Up      0.0.0.0:8080->80/tcp
fault-injection_envoy_1     /docker-entrypoint.sh /usr       Up      10000/tcp, 0.0.0.0:9211->9211/tcp

步骤 2:开始发送连续的 HTTP 请求流

终端 2

$ pwd
envoy/examples/fault-injection
$ docker compose exec envoy bash
$ bash send_request.sh

上面的脚本 (send_request.sh) 向 Envoy 发送连续的 HTTP 请求流,Envoy 将这些请求转发到后端容器。

故障注入已在 Envoy 中配置,但已关闭(即影响 0% 的请求)。

因此,您应该看到一系列连续的 HTTP 200 响应代码。

步骤 3:测试 Envoy 的中止故障注入

使用以下命令通过运行时开启中止故障注入。

终端 3

$ docker compose exec envoy bash
$ bash enable_abort_fault_injection.sh

上面的脚本为 100% 的请求启用了 HTTP 中止。

您现在应该看到一系列连续的 HTTP 503 响应,对应所有请求。

要禁用中止注入,请执行以下操作

终端 3

$ bash disable_abort_fault_injection.sh

步骤 4:测试 Envoy 的延迟故障注入

使用以下命令通过运行时开启延迟故障注入。

终端 3

$ docker compose exec envoy bash
$ bash enable_delay_fault_injection.sh

上面的脚本将为 50% 的 HTTP 请求添加 3 秒的延迟。

您现在应该看到一系列连续的 HTTP 200 响应,对应所有请求,但一半的请求将需要 3 秒才能完成。

要禁用延迟注入,请执行以下操作

终端 3

$ bash disable_delay_fault_injection.sh

步骤 5:检查当前运行时文件系统

要查看当前运行时文件系统的概述

终端 3

$ tree /srv/runtime

另请参阅

故障注入

了解有关 Envoy 的 HTTP 故障注入过滤器的更多信息。