[英]Connection to RDS MySql from ECS Fargate wordpress container times out
我有一個正在運行的容器(如果更具體,請使用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"
}
另外,安全組,我已經為任何IP地址打開22,80,443,3306個端口。
但是ECS中的容器仍然無法啟動,原因如下:
[2019年9月17日8: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服務配置有問題。 有任何想法嗎?
多虧了Adiii和其他在互聯網上找到的文章,我對這個問題有了一個完整的解決方案。
您只需將NAT網關連接到要在其中啟動ECS Fargate實例的子網。
出於某種奇怪的原因,僅在具有Internet網關的公共子網中啟動並不能解決問題(即使從邏輯上來說也應該如此)。
TL; DR:
需要NAT網關。 AWS已完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.