如何使用Apache http代理两个不同的tomcat服务器?

时间:2012-06-17 16:16:20

标签: apache tomcat proxy

我有apache httpd,我想代理两个不同的tomcat服务器。

我看到了这个: http://tomcat.apache.org/connectors-doc-archive/jk2/proxy.html

但这只适用于一个tomcat服务器。如果除了运行8080的tomcat之外,我还有一台服务器在8081上运行怎么办?

3 个答案:

答案 0 :(得分:2)

使用mod_proxy_balancer设置负载平衡的方法更简单。只需在平衡器列表下列出tomcat服务器,而不是将该平衡器放在ProxyPass

<Proxy balancer://mycluster>
    BalancerMember http://tomcat1:8080/
    BalancerMember http://tomcat2:8081/
</Proxy>
ProxyPass /test balancer://mycluster 

答案 1 :(得分:1)

Apache httpd两个开箱即用的选项,用于代理任意数量的后端Tomcat实例:

  1. mod_proxy_http
  2. mod_proxy_ajp
  3. 它们被相同地配置到彼此,除了前者使用HTTP协议进行通信,而后者使用AJP协议和URL,与启动ajp://,而不是http://的后端服务器。两者都可以以相同的方式配置为负载平衡,故障转移等。你可以代理完全分离Tomcat实例(即,没有负载平衡:刚分离的后端)通过单独的URL空间提供单独的代理配置(例如/app1 - &GT; Tomcat1和/app2 - &GT; Tomcat2)或者您可以配置两个(或更多)后端实例以进行负载平衡等。

    具体来说,请查看以下httpd配置指令的文档:

    <Proxy>
    BalanceMember
    ProxyPass
    ProxyPassReverse
    

    您可以在此处找到所有这些文档:

    1. http://httpd.apache.org/docs/2.2/mod/mod_proxy.html(一般)
    2. http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html(HTTP)
    3. http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html(AJP)
    4. http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html(负载均衡器)
    5. 如果您想使用AJP协议并且您有更复杂的配置需求,您也可以使用mod_jk mod_jk2,这是一个老的,死的,被遗弃的,完全无关的项目,现在)。您可以在此处找到有关Tomcat站点上mod_jk的更多信息:http://tomcat.apache.org/connectors-doc/

      mod_jk具有完全不同的配置程序和比mod_proxy_ajp更多的AJP特定选项。

      你在原来的文章中提到的(短)文件(从旧mod_jk2文档)指向的Apache httpd的是mod_proxy_ajpmod_proxy_balancer模块(尽管它指向不稳定的httpd 2.1 ,这是编写文档时的最前沿)。你走在正确的轨道上:你只需要继续阅读。您可以使用此处描述的任何模块代理任意数量的Tomcat后端实例。

答案 2 :(得分:0)

您可以在第三台服务器上安装HAProxy,这三台服务器将作为LB运行,或者您可以在任何一台服务器上安装HAProxy,然后进行以下配置。

安装HAProxy(如果你正在运行Ubuntu / Debain发行版)

  $ sudo apt-get install haproxy
  # Setup config file in /etc/haproxy/haproxy.cnf per requirement
  # change /etc/default/ to Enabled = 1 and restart haproxy service
设置完成后,在配置中执行以下mod:

$ sudo vim /etc/haproxy/haproxy.cfg

global
        maxconn 4096
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option  redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen webcluster *:80
        mode    http
        stats   enable
        stats   auth us3r:passw0rd
        balance roundrobin
        option httpchk HEAD / HTTP/1.0
        option forwardfor
        cookie LSW_WEB insert
        option httpclose
        server web01 192.168.0.1:8080 cookie LSW_WEB01 check
        server web02 192.168.0.2:8081 cookie LSW_WEB02 check

完成后,通过以下方式重启HAProxy服务:

$ sudo service haproxy restart

这里192.168.0.1和192.168.0.2可以是你的两个服务器,一个可以在端口8080上运行,另一个可以在8081上运行。

参考。发布:http://www.leaseweblabs.com/2011/07/high-availability-load-balancing-using-haproxy-on-ubuntu-part-1/ 如果您不使用Ubuntu / Debain,如果您将谷歌关于如何在您的Linux发行版上设置haproxy,您也会找到在线帮助。但是,是的,你可以赌它,因为它是这项工作的成熟工具。