You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Istio服务网格中连接AWS RDS MySQL报上游连接错误的求助

解决Istio服务网格连接AWS RDS MySQL的upstream connect error or disconnect/reset before header错误

我来帮你定位并解决这个问题——你碰到的这个连接错误,核心原因是Egress规则里对MySQL 3306端口的协议配置错了。

问题分析

MySQL使用的是原生的TCP/MySQL协议,而你的Egress规则里把3306端口的协议设成了https,这就导致Istio用HTTPS的逻辑去处理MySQL的流量,自然会出现连接重置或者错误。另外你提到的几个对比场景也能佐证这点:

  • EC2上的独立MySQL能正常连接:没有Istio拦截,直接走原生TCP通信
  • 未启用Istio时能连RDS:同样没有Istio的协议校验,TCP连接正常

修复方案

只需要修改Egress规则里3306端口的协议为tcp或者mysql(Istio都支持这两种来处理MySQL流量),具体步骤如下:

  1. 更新你的Egress规则yaml文件:
    apiVersion: config.istio.io/v1alpha2
    kind: EgressRule
    metadata:
      namespace: <our-namespace>
      name: rds-egress-rule-with
    spec:
      destination:
        service: <RDS End point>
      ports:
        - port: 80
          protocol: http
        - port: 443
          protocol: https
        - port: 3306
          protocol: tcp  # 替换成mysql也可以
    
  2. 应用更新后的配置:
    kubectl apply -f <你的Egress规则文件名>.yaml
    
  3. 重启网格内需要连接RDS的服务Pod,确保新规则生效。

额外说明

因为你的Istio已经禁用了双向TLS,所以不需要额外配置mTLS相关的规则,只要协议匹配上,流量就能正常转发到RDS了。

内容的提问来源于stack exchange,提问作者Anuranjit Maindola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:30:39