故障注入過濾器

這個簡單的範例展示了 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 故障注入過濾器。