Coreos 在 AWS 上使用 docker 和 fleetctl 自动扩展

Coreos 在 AWS 上使用 docker 和 fleetctl 自动扩展

在过去的几周里,我花了很多时间评估将应用程序部署到云的不同方法(对于这个问题,我们假设是 AWS),但并没有找到令人满意的解决方案。

在我看来,我们有一个非常标准的设置:

  • Rails 应用程序
  • Sidekiq 工作者
  • 计划任务
  • 自动扩展

Elastic beanstalk 很容易为 rails 部分设置,但是对于 sidekiq 和 cronjobs 来说却很糟糕。

在研究了 coreos 及其所有功能/工具后,我们确信这是最简单的解决方案。rails、sidekiq 和 cron 的 docker 镜像相同,但都具有不同的CMDs。

现在,玩了fleet十几个 ec2 实例后,我仍然无法理解其背后的哲学:

全局单位有点“附加”,不允许statusjournal命令。而且它们引入的时间并不长,表明它们不是处理事情的主要方式。

但唯一的其他方法是运行类似的东西myservice{1..9}.service

全局单元可自动扩展 - 一旦新实例启动并连接到集群,fleet就会启动容器(如果元数据匹配)。但似乎没有办法在不停机的情况下更新图像,再加上前面提到的缺少命令和工具。

使用第二种方法,自动扩展不会带来任何好处,因为我必须指定所需的确切副本数量。顺便说一句,这似乎也是 Kubernetes 的情况!?

那么,由于许多大公司都运行 Docker 容器,肯定是自动扩展的(尤其是使用 kubernetes 的 Google),如何设置一个简单的自动扩展的 Docker 环境,而不必手动更改容器的数量?

注意:我甚至不需要非常复杂的资源管理答案(ECS 需要,但那是另一回事)。实际上,我需要的是一种在实例上拥有角色的方法,以及一种确保此实例在启动后运行正确容器的工具,包括滚动更新。

也许目前还没有好的答案,因为我在网上还没有找到令人满意的答案。但也许有人有一些建议。

谢谢!

相关内容