首页 > 解决方案 > 无法使用 Aws ECS fargate 容器连接到 Aurora MySql

问题描述

我有一个 .net core 3.1 应用程序,它部署为带有 Fargate 的 AWS Ecs 上的 docker 容器。我创建了 2 个新的 Aurora MySql 数据库,并尝试使用写入器端点连接到其中一个数据库集群。现在的问题是,当我尝试通过调用负载均衡器 DNS 来通过邮递员调用 POST 方法时,出现以下异常:

“引发了一个异常,可能是由于暂时性故障。考虑通过在 'UseMySql' 调用中添加 'EnableRetryOnFailure()' 来启用暂时性错误恢复能力。”

我还尝试添加异常中提到的重试模式,但没有运气。我已在我为 RDS 创建的安全组中的任何位置允许端口 3306 上的 Aurora/MySql。我还在端口 3306 上为源“我的集群服务安全组和负载均衡器安全组”添加了 Aurora/MySql,但即便如此也没有运气。最后,我从任何地方添加了所有端口上的所有流量,但即使这样,错误也是一样的。所以我怀疑这是不同的东西。然后我尝试通过 Windows 上的 docker 桌面运行该应用程序,但我仍然遇到同样的错误。

使用连接到服务器“db-cluster.cluster-cqb2jskhx78p.us-east-2.rds.amazonaws.com”上的数据库“”时发生错误。

我的连接字符串是:

"DefaultConnection": "Data Source=db-cluster.cluster-cqb2jskhx78p.us-east-2.rds.amazonaws.com;Initial Catalog=demodb;User ID=admin;Password=MyPassword;port=3306"

有什么帮助吗?

标签: dockerasp.net-coreamazon-rdsamazon-auroraaws-fargate

解决方案


对开箱即用的 Fargate 容器进行故障排除非常困难。您应该检查的第一件事:

  • RDS 和容器是否在同一个 VPC 中?
  • RDS 安全组是否对容器的安全组开放了正确的端口?

一些故障排除选项:

  • 最快的选择是将 EC2 实例部署在与容器相同的子网中,并排除与该容器的连接问题
  • 仅在开发环境中,通过入口点脚本在您的容器上安装 SSH。
    • 或者,有一个单独的任务来启动仅运行 SSH 的容器以进行网络故障排除
  • 为 Dev 使用容器主机,以便您可以使用 docker exec

推荐阅读