tomcat - 使用 Apache HTTP 实例支持 Tomcat 的最简单方法

标签 tomcat apache cluster-computing failover

我有一个 Tomcat 6 实例,由于多次 WAR 部署后的 PermGen 问题,它经常需要重新启动。

在生产环境中,关闭网站显然是不好的做法,除了连接失败外,任何访问者都一无所获。大局是设置一个或两个以上实例的故障转移 Tomcat 集群,但现在我想要一个简单的解决方案:

当 Tomcat 关闭时,所有请求都会转发到运行 1 个简单的“站点正在维护”类型页面的 Apache HTTP 服务器。

我假设我需要一些小型、超快速的代理来坐在 Tomcat 前面,为它提供请求并监控它的健康状况。如果它死了,它只是将这些请求发送到 Apache HTTP。

想法?

最佳答案

您通常可以在安装 tomcat 之前使用 Apache。为您的 tomcat 设置重定向代理规则。如果这不起作用,apache 将发送“503 服务暂时不可用”,您可以将其配置为您的维护页面。

apache 应用程序文件看起来有点像这样

<VirtualHost *>
    ServerName example.com
    ServerAlias *.example.com
    ServerAdmin admin@example.com

    RewriteEngine on
    RewriteRule ^/static/(.*) /some/path/for/static/files/static/$1 [L]
    RewriteRule ^(.*) http://127.0.0.1:8080$1 [P]

    ErrorLog /var/log/apache2/example/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/example/access.log combined
    ServerSignature On

    ErrorDocument 503 /static/site_down.html
</VirtualHost>

第一个重写规则将某个 URI (/static/) 下面的所有文件更改为一个目录,这些静态文件直接从该目录提供而无需代理。您也可以使用它来为您网站的所有静态资源提供服务,这将在一定程度上弥补在您的 tomcat 前面安装 apache 的一般(小)性能损失。

ErrorDocument 指令更改了对该静态路径中的文档 site_down.html 的正常 503 响应。

为此,您需要启用 mod_rewrite 和 mod_proxy/mod_proxy_http 以及 在您的 apache2 配置中启用代理

<Proxy *>
        Order Deny,Allow
        Deny from all
        Allow from all
</Proxy>

关于tomcat - 使用 Apache HTTP 实例支持 Tomcat 的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/765284/

相关文章:

tomcat - AXIS2 网络服务客户端 java.net.SocketException : Connection reset

apache - Crontab - 每 3 小时重启一次 apache

ubuntu - Slurm Worker 节点无法连接到 Master 节点

Tomcat 终端命令

java - 带有 id 和配置参数的 JProfiler Agent 问题

javascript - list 更新但允许缓存时如何使浏览器更新脚本文件?

elasticsearch - 在同一集群环境中使用dockerfile使用Kibana创建3个Elasticsearch集群和1个Balancer节点

cluster-computing - 起搏器 corosync 服务被忽略

java - 用于 Vaadin/Apache Cayenne 应用程序的 Tomcat 部署的 "velocity.log"的位置在哪里?

java - 使用 Java Socket 与 Apache HttpClient 进行异步实时 HTTP 数据收集