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

同VPC子网下EKS通过Debezium CDC连接AWS RDS失败排查

问题排查与解决方案

以下是除安全组外需要排查和调整的关键配置项:

1. Pod 级安全组配置

如果你的 EKS 集群启用了 Security Groups for Pods(比如用了Amazon VPC CNI的安全组功能),Pod 会拥有独立于节点的安全组,而非直接使用 EKS 节点的安全组。这种情况下,你需要将Pod 的安全组添加到 RDS 安全组的入站规则中,允许对应数据库端口(如 MySQL 3306、PostgreSQL 5432)的流量。

2. IAM 权限与 RDS 数据库认证

如果你的 RDS 启用了 IAM 数据库认证,需要做以下调整:

  • 给 Debezium 连接器所在的 Pod 绑定的 IAM 角色添加 rds-db:connect 权限,权限策略示例:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "rds-db:connect",
                "Resource": "arn:aws:rds-db:<region>:<account-id>:dbuser:<db-resource-id>/<iam-username>"
            }
        ]
    }
    
  • 在 Debezium 连接器配置中,指定 IAM 认证相关参数:
    • database.user 设置为启用 IAM 认证的数据库用户名
    • database.password 设置为通过 IAM 角色生成的临时 token(部分 Debezium 版本支持自动处理)
    • 添加 database.iamAuth=true(针对 MySQL 连接器)或对应 Postgres 的 IAM 认证配置

3. 子网网络 ACL(NACL)检查

VPC 子网的 NACL 是无状态的访问控制列表,即使安全组规则开放,NACL 拒绝流量也会导致连接失败:

  • 检查 RDS 所在子网的入站 NACL,允许 EKS Pod 所在子网的 IP 段访问数据库端口
  • 检查 EKS Pod 所在子网的出站 NACL,允许访问 RDS 子网的数据库端口

4. Pod 网络连通性测试

直接在 Debezium 连接器的 Pod 内执行网络测试,定位问题根源:

# 进入目标Pod
kubectl exec -it <debezium-pod-name> -- /bin/bash

# 测试RDS内网端点连通性(以MySQL 3306端口为例)
nc -zv <rds-internal-endpoint> 3306
# 或使用telnet测试
telnet <rds-internal-endpoint> 3306

如果测试失败,说明网络层面存在阻断;如果测试成功,问题大概率出在 Debezium 连接器的配置(如用户名密码、数据库权限)。

5. RDS 私有 DNS 解析确认

确保 EKS 所在 VPC 启用了私有 DNS 解析,否则 Pod 可能无法正确解析 RDS 的内网端点。你可以在 VPC 控制台的 "DNS 解析" 选项中确认该配置已开启。

6. Debezium 连接器配置验证

确认连接器的核心配置无误:

  • database.hostname 使用 RDS 的内网端点(而非公网端点)
  • database.port 与 RDS 实例的数据库端口一致
  • database.user 和 database.password 拥有足够的权限(如 REPLICATION SLAVE、REPLICATION CLIENT 权限,以及对需同步表的读写权限)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:05:28