分享

ACHE(proxy_ajp_stickysession) + TOMCAT实现高可用网站或管理系统集群

 hehffyy 2018-05-28

1.基础环境安装设置

 

操作系统环境,APACHE安装,TOMCAT集群安装,TOMCAT测试工程请参见:

http://zp820705./blog/1347417

 

2.TOMCAT配置

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

 

配置Tomcat1的server.xml

修改:

 

Tomcat配置文件server.xml代码  收藏代码
  1. <Engine name="Catalina" defaultHost="localhost">  

为:

 

Tomcat配置文件server.xml代码  收藏代码
  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">  
 

 

配置Tomcat2的server.xml

修改:

Tomcat配置文件server.xml代码  收藏代码
  1. <Engine name="Catalina" defaultHost="localhost">  

为:

 

Tomcat配置文件server.xml代码  收藏代码
  1. <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./blog/1347749

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

 

 

Apache主配置文件httpd.conf代码  收藏代码
  1. LoadModule proxy_module modules/mod_proxy.so  
  2. LoadModule proxy_connect_module modules/mod_proxy_connect.so  
  3. LoadModule proxy_ftp_module modules/mod_proxy_ftp.so  
  4. LoadModule proxy_http_module modules/mod_proxy_http.so  
  5. LoadModule proxy_scgi_module modules/mod_proxy_scgi.so  
  6. LoadModule proxy_ajp_module modules/mod_proxy_ajp.so  
  7. LoadModule proxy_balancer_module modules/mod_proxy_balancer.so  
  8. LoadModule ssl_module modules/mod_ssl.so  
  9. LoadModule speling_module modules/mod_speling.so  
  10. LoadModule rewrite_module modules/mod_rewrite.so  
 

 

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

 

 

Apache主配置文件httpd-vhosts.conf代码  收藏代码
  1. # Virtual hosts  
  2. Include conf/extra/httpd-vhosts.conf  

 

 

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

 

 

Apache虚拟主机配置文件httpd-vhost.conf代码  收藏代码
  1. <VirtualHost *:80>  
  2.     ErrorLog "logs/acooly.org-error_log"  
  3.     LogFormat "%{Host}i %h %l %u %t \"%r\" %s %b" vcommon  
  4.     CustomLog logs/access_log vcommon  
  5.   
  6.     ProxyRequests Off  
  7.     ProxyPreserveHost on  
  8.     # apache+tomcat cluster  
  9.     ProxyPass / balancer://tomcat-cluster/ stickysession=JSESSIONID|jsessionid nofailover=Off  
  10.     ProxyPassReverse / balancer://tomcat-cluster/  
  11.     <Proxy balancer://tomcat-cluster/>  
  12.       BalancerMember ajp://10.10.10.11:8009 loadfactor=1 route=tomcat1  
  13.       BalancerMember ajp://10.10.10.12:8009 loadfactor=1 route=tomcat2  
  14.       ProxySet lbmethod=bybusyness  
  15.     </Proxy>  
  16. </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-CookieJSESSIONID=B7EACFABF5543D0E5C19155CCDC82D02.tomcat1; Path=/cluster

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

 

 

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多