故障注入过滤器
这个简单的示例演示了 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
故障注入过滤器的更多信息。