【发布时间】:2021-07-18 23:01:39
【问题描述】:
我正在学习一些关于 VPC、子网、ECS(使用 Fargate)等的基础知识。我正在尝试使用以下 Dockerfile 部署一个非常基本的 docker 容器:
FROM node:14
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "node", "index.js" ]
此映像在本地和使用 Fargate 部署时工作正常(我可以在 CloudWatch 中看到日志)。当负载均衡器尝试联系我的容器时,问题就来了。它没有通过健康检查,因此实例被销毁,然后一遍又一遍地重新创建。
映像已部署到 ECR,ECS 可以访问它(因为我可以看到服务运行了几秒钟)。
这就是问题所在,现在我将描述我做了什么以及我设置了哪些配置和资源:
VPC
- ID:vpc-0aca80a8ee7f636f6
- IPv4:172.30.0.0/16
与以下路由表关联:
- 路由表:
- 路线:
- 172.30.0.0/16 -> 本地
- 0.0.0.0/0 -> igw-07bb57585a09fa127
- 子网关联:
- subnet-09364cab61f5e5e04 / public-subnet-2 (172.30.12.0/24)
- subnet-09fec2674273e56f2 / public-sn (172.30.10.0/24)
- 路线:
互联网网关连接到 VPC。我还创建了一个附加到subnet-09fec2674273e56f2 / public-sn 的 NAT。
这些是我在该 VPC 中创建的子网(我只使用选定的子网):
我认为这就是我设置网络所做的一切。我还创建了一个 ECS 集群没有创建一个新的 VPC。我创建了一个任务定义,配置如下:
我知道任务数为 0,我将其更改为避免在解决问题之前一直重新创建实例。
这是负载均衡器的配置:
知道为什么请求会超时吗?需要更多信息吗?
更新 1
任务定义的安全组:
【问题讨论】:
-
fargate 任务上的安全组是什么?
-
添加到问题中! :D
-
你在 fargate 上打开了 8080 端口,我在你的 sg 中看不到它。我认为你可以在你的 sg 中添加你的源 sg-id。
-
天啊,你是对的!大声笑非常感谢!!!!!!!请张贴询问答案:D
标签: amazon-web-services amazon-ecs amazon-elb amazon-vpc