0%

envoy circuit break

简介

最近工作中涉及到Envoy相关的内容,主要功能是做最大流量的CircuitBreak,这里简单介绍下使用方式,给出一个例子

安装和启动

先下载Envoy

1
2
git clone https://github.com/envoyproxy/envoy.git
cd envoy/examples/front-proxy

添加下面的配置到service-envoy.yaml配置文件中

1
2
3
4
5
circuit_breakers:
thresholds:
max_connections: 1
max_pending_requests: 1
max_requests: 1

启动Envoy以及两个服务

1
2
docker-compose pull
docker-compose up --build -d

验证Envoy启动正常

1
2
curl -v localhost:8080/service/1
curl -v localhost:8080/service/2

验证CircuitBreak

首先安装wrk

1
2
3
git clone https://github.com/wg/wrk.git
cd wrk
make

然后执行压测

1
./wrk -t10 -c4 -d120s http://127.0.0.1:8080/service/1

在另外一个Terminal中执行tcpdump查看http return code(主要是wrk不提供返回码的统计)

1
sudo tcpdump -i lo0 -A -vvv port 8080 | grep "service/1"

通过结果可以看到返回码为503,同时,还增加了一个header:

1
x-envoy-overloaded: true

表示Envoy在触发circuit break后会返回503

Reference

  1. Envoy Front End Proxy
  2. envoy-proxy-demo
  3. wrk
如果您觉得这些内容对您有帮助,你可以赞助我以提高站点的文章质量