让Ruby服务在Elastic Beanstalk上运行

让Ruby服务在Elastic Beanstalk上运行,ruby,amazon-ec2,monitoring,amazon-elastic-beanstalk,worker,Ruby,Amazon Ec2,Monitoring,Amazon Elastic Beanstalk,Worker,我一直在寻找在云本地应用程序中设置工作节点的方法。我计划让一组自动缩放的工作节点从队列中提取作业,没有什么特别的 我只是想知道,有没有什么最佳实践方法可以确保(如ruby)脚本始终运行?我目前的假设是,有一个脚本正在运行,它轮询队列中的作业,如果作业查询没有返回新作业,它会休眠几秒钟左右 真正吸引我注意的是AWS Elastic Beanstalk文档Linux自定义配置部分中的服务键 00\u start\u service.config services: sysvinit:

我一直在寻找在云本地应用程序中设置工作节点的方法。我计划让一组自动缩放的工作节点从队列中提取作业,没有什么特别的

我只是想知道,有没有什么最佳实践方法可以确保(如ruby)脚本始终运行?我目前的假设是,有一个脚本正在运行,它轮询队列中的作业,如果作业查询没有返回新作业,它会休眠几秒钟左右

真正吸引我注意的是AWS Elastic Beanstalk文档Linux自定义配置部分中的服务键

00\u start\u service.config

services: 
  sysvinit:
    <name of service>:
      enabled: true
      ensureRunning: true
      files: "<file name>"
      sources: "<directory>"    
      packages: 
          <name of package manager>:
          <package name>: <version>
      commands: 
         <name of command>:
我发现示例和文档非常模糊,我不知道如何使用这个配置键启动和运行我自己的服务,这意味着我甚至不知道这是否是我想要或需要使用的。我曾尝试创建一个ruby可执行文件,并将名称放入字段中,但没有成功

我要求AWS论坛做出更多澄清,但没有收到任何回应

如果有人对如何实现这一目标有任何见解或方向,我将不胜感激。谢谢大家!

我决定不使用EB配置文件的“服务”部分,而只是使用“命令”

我用ruby构建了一个服务监视器,它监视给定的系统进程(在本例中是我的服务)

服务本身是一个无限循环的脚本,基于对队列服务的长轮询时间而产生延迟


cron作业每分钟运行一次监视器,如果服务关闭,它将重新启动。

文档中的文件语法似乎错误。以下内容适合我(请注意方括号而不是引号):


我面临着一个类似的问题,但与Python有关。命令不是挂起安装进程,还是作为bg进程(“&”)调用它?@winwaed嘿,很抱歉这么晚才通知。。我开始使用Upstart,它允许您创建一个系统服务并保持它运行!谢谢,我去看看。
services: 
  sysvinit:
    myservice:
      enabled: true
      ensureRunning: true
services:
  sysvinit:
    my_service:
      enabled: true
      ensureRunning: true
      files : [/etc/init.d/my_service]