envoyFilter导致的webSockets协议无法正常工作

一、背景

生产项目有一个socket请求经过网关一直无法响应,其它接口服务都能正常处理。

二、 处理过程

让租户提供对应的模拟请求接口,然后进行模拟请求测试,并查看envoy网关日志,发现在发起请求时,envoy网关日志是无法处理次请求的,网关请求日子如下: 开始怀疑难道envoy无法处理次socket,尝试将请求头部分的内容删除,模拟请求发现可以请求通了,然后想到请求头大小导致的,集群做过一次变更,调整了envoy的请求头大小限制,但是这个限制是1G,不可能业务请求头能有这么大,然后删除了创建的envoyfilter,发现业务这个websocket的服务可以正常访问了,百思不得其解。

三、后续排查

针对这个问题,还是到官网查询一番,发现设置缓冲区的envoyFilter会导致webSockets无法正常工作,但是可以在envoyFilter中设置跳过对webSockets的检查。

相关配置如下:

apiVersion: networking.istio.io/v1alpha3

kind: EnvoyFilter

spec:

configPatches:

  • applyTo: HTTP_FILTER

match:

context: GATEWAY

listener:

filterChain:

filter:

name: envoy.filters.network.http_connection_manager

proxy:

proxyVersion: ^1.14.*

patch:

operation: INSERT_BEFORE

value:

name: with-matcher

typed_config:

'@type': type.googleapis.com/envoy.extensions.common.matching.v3.ExtensionWithMatcher

extension_config:

name: envoy.filters.http.buffer

typed_config:

'@type': type.googleapis.com/envoy.extensions.filters.http.buffer.v3.Buffer

max_request_bytes: 52428800

xds_matcher:

matcher_tree:

input:

name: request-headers

typed_config:

'@type': type.googleapis.com/envoy.type.matcher.v3.HttpRequestHeaderMatchInput

header_name: Upgrade

exact_match_map:

map:

websocket:

action:

name: skip

typed_config:

'@type': type.googleapis.com/envoy.extensions.filters.common.matcher.action.v3.SkipFilter

相关文档链接如下:

https://github.com/envoyproxy/envoy/issues/19645

相关推荐
没有bug.的程序员1 小时前
Istio 服务网格:流量治理内核、故障注入实战与云原生韧性架构深度指南
spring boot·云原生·架构·istio·流量治理·故障注入·韧性架构
灰子学技术2 天前
istio从0到1:iptables设置
云原生·istio
CZlNFGPr4 天前
电力系统暂态稳定性仿真分析:Matlab编程与Simulink模型下的各类故障影响研究
istio
灰子学技术6 天前
istio从0到1:产品落地过程的问题集锦
云原生·istio
一条闲鱼_mytube16 天前
Istio 服务网格完全指南:从原理到实战
云原生·istio
小北方城市网1 个月前
第 5 课:服务网格(Istio)实战|大规模微服务的流量与安全治理体系
大数据·开发语言·人工智能·python·安全·微服务·istio
没有bug.的程序员1 个月前
Istio 架构全景解析:控制面 vs 数据面、核心组件与流量路径深度拆解
微服务·云原生·架构·istio·架构设计·envoy·servicemesh
没有bug.的程序员1 个月前
为什么会出现 Service Mesh:从 Spring Cloud 到 Sidecar 的演进逻辑
spring cloud·微服务·云原生·istio·service_mesh·架构演进·sidecar
虫小宝1 个月前
导购返利APP服务网格实践:基于Istio的微服务流量管理与监控
微服务·云原生·istio