- 从零学习envoy笔记 - Gateway总览
- 从零学习envoy笔记 - 学习EG API和Gateway API
- 从零学习envoy笔记 - 快速部署实验环境
- 从零学习envoy笔记 - 官方Task Backend Routing
- 从零学习envoy笔记 - 官方Task Backend Utilization Load Balancing
- 从零学习envoy笔记 - 官方Task Bandwidth Limit
- 从零学习envoy笔记 - 官方Task Client Traffic Policy
BackendTrafficPolicy
带宽限制 (Bandwidth Limit) 是指 Envoy Gateway 允许用户配置发送到后端和从后端接受的流量的吞吐量。这里不是指限速返回 429,而是 Envoy 会在带宽 token 用完后暂停数据传输,等 token 补充后继续 [1] 。
带宽限制主要是为了下面一些考虑:
- 防止一个 backend 消耗完所有的网络
- 保护上游服务过载
- 确保在多路由,多租户等场景下的公平使用
需要注意的是,这里限速是针对 Envoy proxy 实例进行的,如果有多个实例,则每个实例自行限速,而不是共享一个限速池
Note: The bandwidth limit is applied per Envoy proxy instance. If the data plane runs multiple replicas, each replica enforces the limit independently. When a
BackendTrafficPolicywithbandwidthLimittargets aGateway, Envoy Gateway applies the same limit to each matching route under thatGateway. The limit is not shared across routes. [1]
实验 - 限制请求带宽
根据前面实验,要保留下面实验的后端
| |
创建一个 HTTPRoute ,用于测试 Bandwidth Limit
| |
验证 HTTPRoute 和 Gateway 的绑定
| |
验证访问
| |
配置 Bandwidth Limit 挂载,
| |
测试带宽限速命令
| |
这里因为后端不存在 POST 端口所以 404,也无法验证请求带宽限速
实验 - 限制相应带宽
准备 Red 的 HTTPRoute
| |
为 Red HTTPRoute 挂载 相应限速,这里为了验证效果,采用了 Hour 限速。
| |
验证访问
| |
需要注意的是,这里的限速是 1Ki/Hour, 不是所有请求累计 1KiB / Hour,而是单个 Resopones 1KiB / Hour 的限速
实验结果:在 Second / Minute / Hour 三个条件进行实验,发现需要根据时间窗口和大小调整,否则出现500,不确定是否限制住了… , 例如 1/Second, 1Ki / Minute
资源清理
| |
Reference
[1] Bandwidth Limit