【发布时间】:2015-04-10 02:42:24
【问题描述】:
我有一个弹性 beanstalk 应用程序,它同时利用了 Web 层和工作层。作业通过 SQS 从 Web 层卸载到工作层,以保持面向 Web 的服务器的速度。两种环境都使用完全相同的代码库,并在其下使用一个 RDS 实例。
我需要在工作层的领导服务器上运行一个 cron 作业。我创建了一个 .ebextensions 文件夹,其中包含一个名为 crontab 的文件,如下所示(它是一个 Laravel 网络应用程序):
* * * * * root php /var/www/html/artisan do:something:with:database
然后,我创建了一个名为 01cronjobs.config 的文件,它更新了 root 下的环境 crontab,如下所示:
container_commands:
01_remove_old_cron_jobs:
command: "crontab -r || exit 0"
02_cronjobs:
command: "cat .ebextensions/crontab | crontab"
leader_only: true
.. 一切都好。现在,我想使用eb deploy 命令将它部署到EB。但是,我只希望工作层承担 cron 作业,因为我们只能让一台服务器在整个组中运行 cron。
有没有办法告诉 ebextensions 配置文件只在工作层上运行配置命令?像worker_only: true 这样的东西在这里会很棒,但它似乎不存在。
谁能提供一些关于我如何实现这一目标的见解?谢谢。
【问题讨论】:
标签: amazon-web-services amazon-elastic-beanstalk worker