[英]istio 1.4.8: strange 400 error when used with AWS Load balancer
當我在AWS
負載均衡器后面嘗試連接到Istio Gateway
時,我收到了一個奇怪的400
錯誤。
我在istio-ingresgateway
日志中沒有看到任何活動(即使啟用了調試設置),但是當我在ingressgateway
pod 上運行sysdig
時,我看到奇怪的半隨機文本,其中經常帶有"QUIT !T"
。
當我嘗試通過瀏覽器發出http
請求或從集群外部發出curl
請求時,我得到了這個。
當我嘗試在minikube
或Azure
中發出請求時,相同的Istio
配置有效。
我還可以使用相同的AWS
lb 指向Nginx
入口 controller,它工作得很好。
sudo sysdig -s2000 -A -c echo_fds fd.ip=10.1.2.3
output中有時沒有GET請求
------ Read 100B from 10.1.1.3:44404->10.1.2.3:80 (envoy)
QUIT
!T
C
ct>
------ Write 66B to 10.1.1.3:44404->10.1.2.3:80 (envoy)
HTTP/1.1 400 Bad Request
content-length: 0
connection: close
而且,有時這發生在GET
請求之前
------ Read 3.39KB from 10.1.1.3:35430->10.1.2.3:80 (envoy)
QUIT
!T
C
atfI>GET /myapp/ HTTP/1.1
我想知道奇怪的字符是否導致envoy
路線不匹配,但我不知道這可能來自哪里。
關於這可能是什么的任何建議?
調試Istio
入口的任何通用策略?
任何幫助深表感謝。
所以我找到了這個問題的答案。 請求中的垃圾是一條讀過的鯡魚。
有關設置的更多信息:
AWS 負載均衡器正在終止 TLS,因此它后面的所有流量都通過 http 端口 31380。我已經通過 istio VirtualService 設置傳遞X-Forwarded-Proto: https
header,因此后端應用程序可以假設流量是已經終止的 TLS 流量。
解決方案:
我遇到的問題是 AWS Target Group 設置了Proxy protocol v2: Enabled
。 關閉它解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.