目的是使用swarm为8容器应用程序进行生产级部署。
似乎(ECS除外)我们面临两个选择:
使用通过云形态模板进行(群集)配置的所谓docker-for-aws。
像往常一样设置我们的VPC,安装docker引擎,引导swarm(通过init / join等)并在普通的EC2实例中部署我们的应用程序。
这两种方法的唯一区别是docker-for-aws执行的swarm bootstrap?
与正常的AWS VPC配置相比,docker-for-aw的其他好处是什么?
THX
答案 0 :(得分:2)
如果您需要跨不同云提供商提供可移植性 - 请使用Docker团队提供的AWS CloudFormation模板。如果您只需要在AWS上运行 - ECS应该没问题。但是,您需要花一点时间来弄清楚服务发现在那里的运作方式。 Swarm的好处是它们非常简单,只需通过服务名称访问您的服务,就像它们是内置负载平衡的DNS名称一样。
使用它自动创建新环境相当容易,如果您以后需要使用Azure或Google Cloud,您只需使用模板即可为您的docker集群做好准备。
Docker团队已经在该模板中添加了很多东西,除非你真的需要,否则你真的不想自己重新创建它们。例如,如果您不为您的infra使用静态IP(相当典型的情况)并且其中一个管理器死亡 - 您不能只重新启动它。您需要手动将其重新加入群集。 Docker for AWS通过IP来同步处理,通过DynamoDB进行同步,并使用其他特定于提供商的技术使故障转移/恢复顺利进行。另一个例子是日志记录 - 它们会自动将您的日志推送到CloudWatch,这非常方便。
如果您使用Swarm模板,有关自动化环境配置的一些提示:
我对自动化的偏好是Terraform。它让我可以描述一个理想的基础设施状态,而不是如何实现它。
答案 1 :(得分:1)
我会说不,基本上没有其他好处。
但是,如果你想实现docker-for-aws模板提供的所有/几个功能,我相信你的第二个项目符号点应该包含一点。 E.g。
可能还有更多,我现在不记得了。
模板还会向EC2实例提取有关相关资源的大量信息,以使其随时可用于所有Docker服务。
我一直在使用docker-for-aws模板,并且已经逐渐欣赏了很多自动化的东西。以官方模板为基础,我不喜欢改变。
答案 2 :(得分:0)
我会在roll your own
解决方案中使用ECS。除非您的组织有可用于重新设计AWS提供的服务和集成作为产品的一部分;你会人为地将自己画成一个角落,以便将来改变。我想到Do not re-invent the wheel
。
基本上是@Jonatan所说的。构建解决方案以集成已有的解决方案......当您可以处理业务/应用程序的其他部分时,可以尝试一种痛苦的尝试。