docker - 无法使用 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"
有什么帮助吗?
解决方案
对开箱即用的 Fargate 容器进行故障排除非常困难。您应该检查的第一件事:
- RDS 和容器是否在同一个 VPC 中?
- RDS 安全组是否对容器的安全组开放了正确的端口?
一些故障排除选项:
- 最快的选择是将 EC2 实例部署在与容器相同的子网中,并排除与该容器的连接问题
- 仅在开发环境中,通过入口点脚本在您的容器上安装 SSH。
- 或者,有一个单独的任务来启动仅运行 SSH 的容器以进行网络故障排除
- 为 Dev 使用容器主机,以便您可以使用 docker exec
推荐阅读
- adb - 一台 Android 设备对另一台运行 adb logcat
- python - 跟踪有偏差的硬币翻转实验 - python 中的二项式分布
- c++ - 如何在Visual Studio 2019(16.3预览4)中启用c++20
- python - 提供列表中非常特定元素的计数并返回它的函数
- replace - 用于替换 Sublime 文本 3 中的字母的键盘映射
- python - 如何使用flask将JSON数据显示到前端界面?
- ruby-on-rails - 访问数组中的哈希
- c - procfs 如何输出 /proc/iomem?
- c# - Pomelo 使用 MySQL 和 .NET Core 生成的 SQL 不正确
- java - 如何按升序和降序对我的哈希图数据进行排序