3

我一直在寻找在云原生应用程序中设置工作节点的时间。我计划让一组自动缩放的工作节点从队列中拉出作业,这没什么特别的。

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

真正引起我注意的是 AWS Elastic Beanstalk 文档的 Linux 自定义配置部分中的 Services 键。

00_start_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>:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

他们给出的例子是这样的..

services: 
  sysvinit:
    myservice:
      enabled: true
      ensureRunning: true

我发现示例和文档非常模糊,我不知道如何使用此配置键启动和运行我自己的服务,这意味着我什至不知道这是否是我想要或需要使用的。我尝试创建一个 ruby​​ 可执行文件并将名称放在该字段中,但没有运气。

我向 AWS 论坛询问了更多说明,但没有收到任何回复。

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

4

2 回答 2

0

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

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

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

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

于 2013-06-21T21:14:00.590 回答
0

文档中文件的语法似乎是错误的。以下对我有用(注意方括号而不是引号):

services:
  sysvinit:
    my_service:
      enabled: true
      ensureRunning: true
      files : [/etc/init.d/my_service]
于 2014-03-18T11:43:11.080 回答