在 AWS 上设置基于 docker 的集群的最佳方法是啥? [关闭]

Posted

技术标签:

【中文标题】在 AWS 上设置基于 docker 的集群的最佳方法是啥? [关闭]【英文标题】:What's the best way to setup a docker based cluster on AWS? [closed]在 AWS 上设置基于 docker 的集群的最佳方法是什么? [关闭] 【发布时间】:2021-06-08 14:53:58 【问题描述】:

我们正在构建一个小型微服务架构,我们希望将其部署到 AWS。 服务的数量正在增长,因此我们需要允许扩展(水平)的解决方案。

在 AWS 上构建它的最佳方式是什么?我们在 docker 方面没有太多经验,过去我们使用过基于 EC2 的东西。

我正在考虑类似的事情:

使用 ECR,创建一个私有 docker 存储库。我们在那里推送发布图片。 使用 ECS 自动部署这些映像。

这是正确的吗?或者我们应该改用 Kubernetes 吗?哪个更好?

我们的需求:

基于 Docker 映像的自动化部署 部署到测试和生产环境 Prod 集群应该能够通过负载平衡处理某些服务的多个实例。

提前感谢您的任何建议!

【问题讨论】:

使用 ECS,比 Kubernetes on AWS (EKS) 简单得多。此外,如果您可以使用 Fargate,则可以很好地减轻管理负担。如果您可以从头开始学习,请在 EC2 上使用 ECS。祝你好运! 您的问题是征求意见,与本站无关。如果只有一种真正“最佳”的服务,那么其他服务就没有理由存在。如果您希望以后能够轻松迁移到其他云供应商,最好的服务可能是 EKS。绝对简单和易用的最佳服务可能是 Elastic Beanstalk。我个人是 ECS+Fargate 的粉丝。 感谢大家提供的信息! 【参考方案1】:

AWS 容器服务团队成员在这里。同意其他人的答案可能非常偏向于个人观点。如果您具备良好的 AWS 知识但没有容器知识,我建议您使用 ECS/Fargate。请注意,在 ECS 上部署需要一些 CloudFormation 机制,因为除了嵌入容器的 ECS 任务之外,您还需要部署许多资源(负载均衡器、IAM 角色等)。如果不抽象,可能会令人生畏。

我们创建了一些工具,可让您卸载一些锅炉电镀。按照我对您的用例的建议顺序:

Copilot 是一个 CLI 工具,可以根据特定模式准备环境和部署您的应用程序。看看here Docker Compose 与 ECS 集成。这是我们与 Docker 构建的新集成,允许您从简单的 Docker Compose 文件开始并部署到 ECS/Fargate。见here。 CDK 是一个软件开发框架,用于将您的 AWS 基础设施定义为代码。见here。 These are the specific CDK ECS patterns 如果你想走那条路。

【讨论】:

太棒了,不知道这些工具存在!谢谢你。还有一个问题:成本对我的经理很重要。带有 EC2 的 ECS 将是经济的选择,对吧? Fargate似乎很贵。使用 ECS 最具成本效益的方式是什么? 根据所有托管服务,Fargate 比同类 EC2 容量具有小幅溢价。 This 文章介绍了成本模型,this 其他文章更多地介绍了 TCO 分析(上一篇博客提到 EKS/Fargate,但 ECS/Fargate 的概念类似)。 我尝试了副驾驶路径,效果很好。我可以看到该服务在云中运行。但是,它不打印任何 URL。它只是说我的应用程序已部署。在哪里可以找到公共 URL?这是一个现在只有一个服务的应用程序,它是。后端服务 (API)。 我现在没有方便的副驾驶环境,但copilot app show 应该描述应用程序(并输出其端点)。 不,它只打印环境、服务和管道。它也打印 URI,但那是空的。 @mreferre

以上是关于在 AWS 上设置基于 docker 的集群的最佳方法是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS ECS EC2 集群中运行 docker 镜像

在 AWS 中使用 Docker 扩展内存消耗高但计算能力低的作业:寻找最佳解决方案

在 AWS ECS 上使用 docker-compose 进行持续部署的最佳实践

markdown 在AWS上创建Docker 1.12 Swarm集群

AWS Elastic beanstalk:使用 docker 镜像时如何设置 ulimit

使用 Docker 进行 Python 开发的最佳环境设置