docker - 无法使用 Aws ECS fargate 容器连接到 Aurora MySql

标签 docker asp.net-core amazon-rds amazon-aurora aws-fargate

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

"An exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseMySql' call."



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

An error occurred using the connection to database '' on server '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"

有什么帮助吗?

最佳答案

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

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

  • 一些故障排除选项:
  • 最快的选择是在与您的容器相同的子网中部署一个 EC2 实例并排除与该
  • 的连接的故障。
  • 仅在开发环境中,通过入口点脚本在您的容器上安装 SSH。
  • 或者,有一个单独的任务来启动一个只运行 SSH 的容器来进行网络故障排除
  • 为 Dev 使用容器主机,以便您可以使用 docker exec
  • 关于docker - 无法使用 Aws ECS fargate 容器连接到 Aurora MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60758683/

    相关文章:

    mysql - 如何在Dockerfile中将Mysql Docker连接到其他docker?

    docker - Prisma 无法验证数据库服务器

    Asp.net Core 身份 - Azure 身份验证中间件

    c# - 在 asp.net 核心应用程序中应该如何实现对数据库的异步日志记录?

    c# - 尝试激活 DbContext 时无法解析 Microsoft.EntityFrameworkCore.DbContextOptions 类型的服务

    docker - “stopped”和 “exited”容器有什么区别?

    java - 使用 Docker 和 Maven 进行 Spring Boot - JAR 中缺少 list

    amazon-web-services - 我想让用户只在一个 rds 实例上拥有完全访问权限

    amazon-web-services - AWS 弹性 Beanstalk : terminate RDS then fail to update application version

    mysql - 如何允许ECS任务访问RDS