• Apache和Tomcat 配置负载均衡(mod-proxy方式)-粘性session


    Tomcat集群配置后端Tomcat Server为支持AJP的独立服务,前端Apache配置为粘性会话(sticky-session),Tomcat不配置Cluster配置和Session复制。

    配置Tomcat1的server.xml

    修改:

    Tomcat配置文件server.xml代码

        <Engine name="Catalina" defaultHost="localhost">

    为:

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

    配置Tomcat2的server.xml

    修改:

    Tomcat配置文件server.xml代码

        <Engine name="Catalina" defaultHost="localhost">

    为:

    Tomcat配置文件server.xml代码

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">

    注意:

    后端tomcat服务配置文件server.xml中指定的端口后用于接收Apache的代理转发请求,在后续apache配置中使用,本例中tomcat1和tomcat2都使用相同的配置:8009

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    3.APACHE配置

    apache的配置方式还是采用vhost方式配置,主配置文件(conf/httpd.conf)引用(include)vhost子配置文件(conf/extra/httpd-vhosts.conf)方式.

    Apache的编译请参考:http://zp820705.iteye.com/blog/1347749

    apache编译为支持Proxy后的module情况:

    Apache主配置文件httpd.conf代码

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule ssl_module modules/mod_ssl.so
    LoadModule speling_module modules/mod_speling.so
    LoadModule rewrite_module modules/mod_rewrite.so

    删除主配置文件conf/httpd.conf文件中引用vhost的配置行的注释。

    Apache主配置文件httpd-vhosts.conf代码

    # Virtual hosts
    Include conf/extra/httpd-vhosts.conf

    Apache虚拟主机配置(httpd-vhost.conf)

    Apache虚拟主机配置文件httpd-vhost.conf代码

    <VirtualHost *:80>
        ErrorLog "logs/acooly.org-error_log"
        LogFormat "%{Host}i %h %l %u %t "%r" %s %b" vcommon
        CustomLog logs/access_log vcommon
    
        ProxyRequests Off
        ProxyPreserveHost on
        # apache+tomcat cluster
        ProxyPass / balancer://tomcat-cluster/ stickysession=JSESSIONID|jsessionid nofailover=Off
        ProxyPassReverse / balancer://tomcat-cluster/
        <Proxy balancer://tomcat-cluster/>
          BalancerMember ajp://10.10.10.11:8009 loadfactor=1 route=tomcat1
          BalancerMember ajp://10.10.10.12:8009 loadfactor=1 route=tomcat2
          ProxySet lbmethod=bybusyness
        </Proxy>
    </VirtualHost>

    stickysession=JSESSIONID|jsessionid

    apache采用粘性会话配置,后端服务器是tomcat,指定sessionId参数为JSESSIONID和jsessionid,其中JSESSIONID是浏览器支持cookie方式session处理,jsessionid是客户端采用URL参数方式session处理。

    nofailover=Off

    表示apache-proxy支持failover,模式是支持的,可以不配置。

    route=tomcat1route=tomcat2

    表示后端tomcat服务处理标志,与具体后端tomcat服务中的server.xml配置文件中的Engine节点配置的jvmRoute属性相同。

    4.测试

    浏览器访问测试

    http://10.10.10.11/cluster/index.jsp

    stickysession测试

    访问http://10.10.10.11/cluster/index.jsp,反复刷新,应该是同一后端服务器支持服务。

    使用restlet工具restclient(http://code.google.com/p/rest-client/)访问http://10.10.10.11/cluster/index.jsp,查看返回报文:

    sessionId为:

    Set-Cookie JSESSIONID=B7EACFABF5543D0E5C19155CCDC82D02.tomcat1; Path=/cluster

    红色tomcat1表示指定由后端tomcat1服务。

  • 相关阅读:
    创建索引锁的表
    安装STS报错(三)
    安装STS报错(二)
    安装STS报错(一)
    Linux Top使用说明
    平实给力的写作指导入门手册——leo鉴书57
    Flex中配置FusionCharts
    Java Web项目中缺少Java EE 6 Libraries怎么添加
    Java Web项目结构
    MyEclipse中修改项目运行地址栏中项目名称
  • 原文地址:https://www.cnblogs.com/jiangtao1218/p/10111190.html
Copyright © 2020-2023  润新知