【发布时间】:2017-07-13 20:31:54
【问题描述】:
我最近将我的 Symfony 项目从手动扩展的 EC2 环境迁移到 Elastic Beanstalk,但我偶然发现了一个问题。
我有一个 Cron 作业,它抓取一堆过期的订阅,并尝试创建订单并收取费用,这项作业仅在单个服务器上运行非常重要,因为它会批量抓取它们,如果有一个重复的 Cron 正在运行,这将导致对同一个订阅进行多次收费。
在手动扩展环境中,我只有一个主服务器,它有一个 crontab 并运行 subs,但在这里似乎不可行。
关于如何在没有主服务器的自动缩放环境中进行设置有什么建议吗?
我研究了 JMSJobQueueBundle,但它似乎也依赖于只运行单个 crontab 实例的主管,这在自动缩放环境中会重复。
最好让外部服务器每 X 分钟 ping 我的 API 并在它 ping 的单个实例上启动作业?这似乎引入了另一个故障点。
【问题讨论】:
标签: symfony amazon-web-services amazon-elastic-beanstalk autoscaling