我一直在寻找在云原生应用程序中设置工作节点的时间。我计划让一个自动缩放的工作节点组从队列中拉出作业,没什么特别的。
我只是想知道,有没有最好的练习方法来确保(例如ruby)脚本一直在运行?我目前的假设是,如果作业查询没有返回新作业,那么您运行的脚本会轮询队列中的作业并休眠几秒钟。
引起我注意的是AWS Elastic Beanstalk文档的Linux Custom Config部分中的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论坛询问了更多的说明,但未收到任何回复。
如果有人对如何实现这一点有任何见解或指导,我将不胜感激。谢谢!
答案 0 :(得分:0)
我决定不使用EB配置文件的“服务”部分,而只是使用“命令”..
我在ruby中构建了一个监视给定系统进程的服务监视器(在本例中是我的服务)。
服务本身是一个脚本无限循环,基于队列服务的长轮询时间延迟。
cron作业每分钟运行一次监视器,如果服务停止,则重新启动。
答案 1 :(得分:0)
文档中的文件语法似乎是错误的。以下适用于我(注意方括号而不是引号):
services:
sysvinit:
my_service:
enabled: true
ensureRunning: true
files : [/etc/init.d/my_service]