在云中的单个计算机上运行同一应用程序的多个实例

时间:2016-12-12 02:04:30

标签: amazon-web-services heroku amazon-ecs

我有一个工作者应用程序(非面向Web),它处理来自AWS SQS的一些作业。我想运行此应用程序的多个实例,但使用不同的命令行参数(最后可能有30个进程),所以:

myApp arg1 arg2
myApp arg3 arg4

我的基础架构需求非常基础,但具体来说我希望应用程序的每个实例都

  1. 如果发生故障,则自动重启
  2. 进行某种基本监控+日志检索
  3. 支持从git
  4. 进行自动部署
  5. 在专用IP上运行
  6. 托管此功能的最佳基础架构是什么?在亚马逊生态系统中首选,但不是必需的

    在亚马逊:

    • Amazon Kinesis + Amazon Lambda不支持专用IP部分
    • Amazon EC2 + CodeDeploy然后我可以在EC2映像上配置UpStart或其他东西来保持进程活着吗?
    • Amazon EC2容器服务(ECS)可以为每个进程运行一个docker容器。我目前认为这是我最好的选择。

    不是亚马逊:

    • Heroku支持“流程类型”,可以轻松运行每个流程,但每个流程需要一个“dyno”。这似乎最终约为25美元/过程,不能扩展。

    我只是在寻求创意。在亚马逊没有太多经验。还有哪些其他基础设施选择特别适合这个问题?

1 个答案:

答案 0 :(得分:3)

Docker或rkt是您的解决方案。您可以在一个EC2实例中在munites中启动和运行。请记住,您的应用程序实例数量将受AWS允许的每种实例类型的IP地址数量的限制。

查看http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI可以拥有多少个IPv4和IPv6地址。 如果您需要更多,请要求AWS支持人员提前提高限额。