故障注入過濾器
這個簡單的範例展示了 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
)會將連續的 HTTP 請求流發送到 Envoy,而 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
故障注入過濾器。