我有一个设置,其中有几个应用程序服务器运行php-fpm
服务,并且它们共享应用程序代码和其他资产的GlusterFS
安装。在当前的部署过程中,文件直接在文件服务器上进行更新,并多次反映应用程序服务必须重新加载的更改。为实现这一目标,部署脚本需要进入每个服务器并发出重新加载命令,但使用自动扩展时,服务器的数量在每个时刻都不一样。
总的来说,我正在研究解决这个问题的几个替代方案:
第一个,更多的artesanal而不是完美,作为一个概念证明,将是一个cron作业,将在应用程序机器上每X分钟运行一次,并寻找一个应该包含唯一信息的文件,例如它的主机名或IP地址。如果它匹配,它将不采取行动,但如果不匹配,它将重新加载并在文件中写入自己。在部署过程中,脚本将清除该文件,并且所有服务器应在下一次cron运行中重新加载。
其次,使用更复杂的方法,如消息队列或通知服务,其中正在运行的应用程序计算机将在引导时订阅并等待重新加载订单。然后,部署脚本将发布通知,以使所有服务器都知道它是时候了。然后,来自先前方法的类似cron作业会注意到并重新加载应用服务器。
这有什么意义吗?是否有更简单或更标准的方法来触发部署过程中给定时刻运行的应用程序服务器的广播,而无需ssh到每个并发出重新加载命令?您可以提供的任何其他建议或其他建议吗?
谢谢!