Jul*_*lhé 5 amazon-ec2 amazon-web-services docker amazon-ecs
我是使用 Amazon ECS 的新手,我想知道如何设置服务以便轻松扩展/缩减一个容器。
这是我的项目架构:
目前,我只为我的所有容器创建了一个任务定义,而在我的集群中,我只有一项服务。我在 API 上也有一个负载平衡器(所以我可以通过 DNS 名称从网站访问它)。
它工作正常,但我希望能够启动更多的工作人员,而不启动其他一切,而且我现在似乎无法做到这一点(如果我错了,请纠正我)。所以我有几个问题:
这是我当前的任务定义:
{
"taskDefinitionArn": "arn:aws:ecs:ap-southeast-2:347930943102:task-definition/Flipendo:4",
"revision": 4,
"containerDefinitions": [
{
"volumesFrom": [],
"portMappings": [],
"command": [],
"environment": [
],
"essential": true,
"entryPoint": [],
"links": [
"rabbitmq"
],
"mountPoints": [],
"memory": 2048,
"name": "worker",
"cpu": 4096,
"image": "flipendo/worker"
},
{
"volumesFrom": [],
"portMappings": [],
"command": [],
"environment": [],
"essential": true,
"entryPoint": [],
"links": [],
"mountPoints": [],
"memory": 2048,
"name": "rabbitmq",
"cpu": 2048,
"image": "rabbitmq"
},
{
"volumesFrom": [],
"portMappings": [
{
"hostPort": 443,
"containerPort": 3000
}
],
"command": [],
"environment": [
],
"essential": true,
"entryPoint": [],
"links": [
"rabbitmq"
],
"mountPoints": [],
"memory": 2048,
"name": "api",
"cpu": 2048,
"image": "flipendo/api"
},
{
"volumesFrom": [],
"portMappings": [
{
"hostPort": 80,
"containerPort": 3000
}
],
"command": [],
"environment": [
{
"name": "API_PORT",
"value": "443"
},
{
"name": "API_ADDR",
"value": "load balancer dns server"
}
],
"essential": true,
"entryPoint": [],
"links": [
"api"
],
"mountPoints": [],
"memory": 1024,
"name": "website",
"cpu": 1024,
"image": "flipendo/website"
}
],
"volumes": [],
"family": "Flipendo"
}
Run Code Online (Sandbox Code Playgroud)
非常感谢。
小智 2
Do I need to create separate task definitions?
Run Code Online (Sandbox Code Playgroud)
是的
Do I need to create separate services?
Run Code Online (Sandbox Code Playgroud)
不必要。您可以简单地自行运行任务,而无需“服务”。但“服务”允许与负载均衡器、应用程序自动缩放以及零停机部署关联。
“Docker 链接”容器的唯一方法是在一个任务定义中定义它们,就像您当前所做的那样。这样 ECS 会将所有容器放置在同一个实例上。拆分为不同的任务意味着无需链接,因为容器可能在不同的实例上启动。
因此,如果您决定拆分它们,那么每个容器都必须通过“服务”url 连接到其他容器。
我的建议是
这样您就可以单独扩展每个“服务”。
如果您决定继续使用rabbitMQ,则必须将ELB用于rabbitMQ容器,并手动将rabbitMQ使用的容器端口与ELB关联起来。
ALB 将自动发现您的服务使用的容器端口。
有关 ALB 和 ECS 的更多详细信息,请参阅此:
| 归档时间: |
|
| 查看次数: |
1006 次 |
| 最近记录: |