假设我们有以下图片:
Apache HTTP 服务器正在处理用户的请求。它使用 mod_jk 将所有(或部分)请求转发到 Tomcat 服务器。
假设我们想关闭 Tomcat 上的应用程序两小时进行维护。我们希望所有访问该应用程序的用户都能收到有关维护的消息(例如:抱歉,我们正在维护服务器。该应用程序将于上午 6 点再次上线)。
有没有办法让这个维护页面上线而无需重新启动 Apache HTTP 服务器?(该服务器无法重新启动,因为它正在为其他应用程序提供服务)
谢谢
答案1
设置另一个仅显示维护页面的 Tomcat 实例。运行它而不是应用程序 Tomcat。
顺便说一句,您可以正常重新启动 Apache HTTP 服务器,该服务器会在每个线程完成其当前请求后回收每个提供请求的线程,因此不会丢弃任何请求。
答案2
只需使用 Apache 指令配置您的 Apache,使其返回适当的“抱歉,我们正在执行一些维护魔法。我们很快就会回来。”页面ErrorDocument
。无需重新启动 - 如果后端进程未返回某些 OK http 代码(例如 200),Apache 将返回错误文档页面。
答案3
前端服务器停机导致 Apache 不重启?那么你可以使用以下命令优雅重启apachectl -k 优雅通过更改配置来使用静态维护页面来满足请求。
否则,如前所述,您可以拥有一个上游服务器来处理所有返回维护页面的请求,并且您可以执行基于 DNS 的切换。