【问题标题】:Connection to RDS MySql from ECS Fargate wordpress container times out从 ECS Fargate wordpress 容器连接到 RDS MySql 超时
【发布时间】:2019-09-17 09:07:25
【问题描述】:

我有一个正在运行的容器(如果更具体的话,是 wordpress 容器),它试图连接到 mysql rds 实例。

fargate ecs服务容器参数:

{ 
    "executionRoleArn": "ignore-this", 
    "containerDefinitions": [ 
        { 
            "name": "MyCoolContainer", 
            "image": "wordpress:latest", 
            "essential": true, 
            "environment": [ 
                {"name": "WORDPRESS_DB_HOST", "value": "host:3306"}, 
                {"name": "WORDPRESS_DB_USER", "value": "user"}, 
                {"name": "WORDPRESS_DB_PASSWORD", "value": "password"}, 
                {"name": "WORDPRESS_DB_NAME", "value": "name"} 
            ], 
            "portMappings": [ 
                { 
                   "hostPort": 80, 
                   "protocol": "tcp", 
                   "containerPort": 80 
                } 
            ], 
            "logConfiguration": { 
                "logDriver": "awslogs", 
                "options": { 
                    "awslogs-group": "/aws/ecs/fargate/prefix", 
                    "awslogs-region": "eu-west-1", 
                    "awslogs-stream-prefix": "prefix" 
                } 
            } 
        } 
    ], 
    "requiresCompatibilities": [ 
        "FARGATE" 
    ], 
    "networkMode": "awsvpc", 
    "cpu": "256", 
    "memory": "512", 
    "family": "wordpress" 
} 

另外,对于安全组,我开放了22804433306端口IP 地址。

但是ECS中的容器还是无法启动,原因如下:

[17-Sep-2019 08:42:24 UTC] PHP 警告:mysqli::__construct(): (HY000/2002):第 22 行标准输入代码中的连接超时

MySQL 连接错误:(2002) 连接超时

MySQL 连接错误:(2002) 连接超时

但是,当尝试使用命令从本地计算机连接时,我可以确保 RDS 实例是可访问的:

mysql -uuser -ppassword -hhost -P3306

另外,我可以确保(wordpress)容器在本地机器上成功运行并成功连接到远程 RDS 数据库,没有超时。

编辑 这是我的环境在 ECS UI 面板中的样子: (我试图将这些值复制粘贴到我的本地 mysql 命令中,并且连接成功。)

我怀疑 aws 服务配置有问题。有什么想法吗?

【问题讨论】:

  • {"name": "WORDPRESS_DB_HOST", "value": "host:3306"} 删除端口,然后它应该可以工作
  • 您好,感谢您的建议。然而,这并没有解决问题。连接仍然超时。
  • 我想知道环境变量设置不正确。可以控制值WORDPRESS_DB_HOST,这样您就可以签入cloudwatch log fargate。环境变量 syantax 似乎错误或设置不正确
  • 你能从 Fargate ping 通吗?有 NAT 或网关吗?
  • 再验证一件事.. 容器是否能够与外界通信?

标签: mysql wordpress amazon-web-services docker amazon-ecs


【解决方案1】:

感谢 Adiii 和在互联网上找到的其他一些文章,我对这个问题有了完整的解决方案。

您只需将 NAT 网关附加到要在其中启动 ECS Fargate 实例的子网。

出于某种奇怪的原因,简单地在带有 Internet 网关的公共子网中启动并不能解决问题(即使在逻辑上认为它应该如此)。

TL;DR:

需要 NAT 网关。 AWS 搞砸了。

【讨论】:

  • 一种可能性 ;) 来自docs:You are charged for creating and using a NAT gateway in your account. NAT gateway hourly usage and data processing rates apply. Amazon EC2 charges for data transfer also apply.
猜你喜欢
  • 2017-10-26
  • 2022-07-07
  • 1970-01-01
  • 2021-10-27
  • 2017-09-13
  • 2020-12-26
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
相关资源
最近更新 更多