我正在尝试在后端服务因维护、手动关闭而关闭时改善用户体验。
我们确实有一个前端 Web 代理,它恰好是 nginx,但它也可能是其他东西,例如 NetScaler 实例。一个重要的注意事项是前端代理运行在与后端应用程序不同的机器上。
现在,对于后端服务,启动需要很长时间,在某些情况下甚至超过 10 分钟。
请注意,我在 StackOverflow 上问这个问题,而不是 ServerFault,因为为这个问题提供解决方案更有可能需要在守护进程启动脚本中编写一些 bash 代码。
我们想要达到的目标:
service mydaemon stop
应该在前端代理上启用维护页面service mydaemon start
应该禁用前端代理上的维护页面
过去我们通常创建一个maintenance.html
页面并配置 nginx 以使用 来检查该页面的存在try
,然后再退回到后端。
尽管如此,因为我们决定将 nginx 移动到另一台机器上,所以我们不能这样做,并且使用 ssh 这样做会引发安全问题。
我们已经考虑将这个文件写入两台机器都可以访问的 NFS 驱动器,但即使是这种解决方案也无法针对具有大量流量的服务进行扩展。Nginx 最终会为每个请求尝试这个,大大减慢了响应速度。
我们正在为这个问题寻找另一种解决方案,理想情况下它会更灵活。
请注意,我们仍然希望能够从后端应用程序的守护程序脚本内部触发此行为。因此,如果后端应用程序由于其他原因停止响应,我们确实希望从前端看到同样的情况。