【发布时间】:2020-04-05 16:10:52
【问题描述】:
我有以下设置(如附图所示):
A(java 进程)-> B(kubernetes 大使代理)-> C(kubernetes pod 中的 java 服务)
A 和 B 之间使用 HTTPS 进行通信,然后大使剥离 HTTPS 并继续与 C 进行 HTTP 通信。
我遇到的问题是,有时,正在发送的 HTTP BODY 消息未在 A 和 B 之间 100% 传输,但仅在 B 端跟踪我可以看到它由于某种原因停止(在在 A 侧跟踪它显示为一切都发送OK)。然后,C 中的 java 进程(正在等待 B-proxy 转发所有数据)只是等待并在 30 秒后超时。
您可以在所附图像中看到,在 A trace 中写入了整个 BODY 已发送,但在 B 侧的 trace 中,只有一半 BODY 可见(已交付)。我怀疑这些TCP Previous segment not captured。
您还可以看到,在此之后它只是等待 30 秒,然后超时。
这在我的设置中经常发生。有谁知道可能是什么问题?
大使配置:
getambassador.io/config: |
---
apiVersion: ambassador/v1
kind: TLSContext
name: tls
ambassador_id: some-stg
secret: ambassador-tls-cert
---
apiVersion: ambassador/v1
kind: Module
name: ambassador
ambassador_id: some-stg
config:
service_port: 8443
diagnostics:
enabled: true
envoy_log_type: json
---
apiVersion: ambassador/v1
kind: Module
name: tls
ambassador_id: some-stg
config:
server:
enabled: True
redirect_cleartext_from: 8080
alpn_protocols: "h2, http/1.1"
secret: ambassador-tls-cert
---
apiVersion: ambassador/v1
kind: TracingService
name: tracing
service: tracing-jaeger-collector.tracing:9411
driver: zipkin
ambassador_id: some-stg
tag_headers:
- :authority
- :path
更新
这里还有关于cloudshark的痕迹: 转储(发送方 - 外部 kubernetes):https://www.cloudshark.org/captures/8cfad383c8fb B dump(kubernetes 大使代理接收者):https://www.cloudshark.org/captures/50512920d898
【问题讨论】:
标签: kubernetes proxy wireshark tcpdump ambassador