【发布时间】:2020-10-31 13:58:12
【问题描述】:
我有一个在弹性豆茎上运行的烧瓶应用程序。有一个每天运行的 cron,以便从另一台服务器获取新数据。获取此数据后,需要重新启动应用服务器才能使用新数据进行更新。但是,我似乎无法自动执行此操作。我在 cron 运行的 shell 脚本中尝试了以下几行:
systemctl restart nginx
和
/sbin/shutdown -r now
但是,即使这确实重新启动了 nginx 并重新启动了整个服务器,数据也不会更新。如果我使用 EB 控制台并转到 Actions > Restart App Server(s),则会加载新数据并且一切正常。我需要将它作为 cron 的一部分,或者我需要将其设置为每天在特定时间重新启动应用服务器。
我该怎么做?在这一点上,我一直在寻找和尝试几天,但似乎无法弄清楚。
【问题讨论】:
-
Elastic Beanstalk 中运行了多少台服务器?当您通过 cron 重新启动时,是否会为您启动一个新的?
-
是的,在第一个实例中它不会关闭服务器,但在第二个实例中它会关闭并且它在控制台中显示为“待处理”大约 5 分钟,然后它会重新启动。如果它正在创建一个新实例,我还有一个部署钩子可以做同样的事情,所以应该更新它。我确实知道 cron 正在运行,因为如果我在它应该运行后检查服务器上的数据,它就会被更新。它只是没有被应用程序使用,因为它需要重新启动才能这样做。
-
@AndrewR 你能添加你的 crontab 来重启服务器吗?我正在尝试做类似的事情,但我的 crontab 似乎没有运行谢谢。
-
@DavidTeather 不,我也遇到了 crontab 问题。我可以让 cron 在 EB 上工作的唯一方法是通过 .ebextensions。该实例甚至不认为 crontab 正在运行。我确实取得了一些进展,但它仍然没有运行。您可以使用 lambda 中的 AWS admin CLI 编写一个将重新启动应用程序服务器的函数。我仍然无法让异步功能正常工作,但我认为这是唯一的方法。如果我设法让它工作,我会在这里发布解决方案。
标签: amazon-web-services amazon-ec2 cron amazon-elastic-beanstalk