- 从零学习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
ClientTrafficPolicy
ClientTrafficPolicy 用于管理客户端到 Envoy Proxy 之间的行为,例如控制访问 Gateway 的客户端连接,例如 TCP keepalive、Proxy Protocol、XFF 客户端 IP 识别、客户端请求超时、连接 idle timeout、连接 buffer limit。
注意:这些都挂在
Gateway上,不挂在HTTPRoute(BackendTrafficPolicy ) 或 backend service 上 [1]
| |
前置准备
创建一个新的 HTTPRoute
| |
合并官方所有示例的配置
| |
验证策略是否已经绑定到 gateway
| |
准备后端服务,这里使用 ealen/echo-server,可以有效 header 回显
| |
配置对应的 HTTPRoute
| |
实验1:验证TCP Keepalive
对应配置
| |
实验2验证
| |
实验2:Client IP Detection
对应配置
| |
实验2验证
| |
实验3:Request Received Timeout
对应配置
| |
客户端必须在 2 秒内把完整请求发完,否则 Envoy 直接超时。
验证
| |
实验4 HTTP Idle Timeout
对应配置
HTTP 连接空闲 5 秒没有活跃请求,Envoy 就关闭连接。
| |
验证
| |
原理,nc 127.0.0.1 8888 输入后,输入后不要结束,会自动超时
| |
实验5 Buffer Limit
对应配置
| |
对每个 “客户端到 Envoy listener 的下游连接”,读写 buffer 的软限制是 1024 bytes
实验6 Proxy Protocol
对应配置
| |
这个功能开启表示,让 EG 的下游 listener 开启 proxy protocol 能力。例如,客户端请求先进到一个四层 LB(如云厂商 CLB/NLB/ELB)时,再转发给 EG 时,LB 会在 TCP 连接最前面加一段 PROXY protocol 头,告知 EG 原始客户端 IP 是谁、端口是多少、目标 IP/端口是多少。
验证结果,如果直接使用下面命令会出现 “Connection reset by peer”
| |
相关日志
| |
所以需要使用参数 “–haproxy-protocol”
| |
通常使用在 公网 LB / 四层 LB (携带 PROXY protocol) -> Envoy Gateway -> 后端。开启该功能后,前端的 LB 也需要携带 PROXY protocol。
他的原理就是
| |