Apache+Tomcat 实现负载均衡及seesion复制

Posted 池鱼i_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache+Tomcat 实现负载均衡及seesion复制相关的知识,希望对你有一定的参考价值。

当我们tomcat访问量大,线程连接数不够时,我们考虑到了tomcat的负载均衡来分担过多的访问.性能方面负载均衡也能利用多台tomcat来增大内存量,

流程,准备工作apache,Jk_mod,tomcat,在apache的conf/httpd.conf文件中 使用include 标签引入我们自定义的一个mood_jl.conf,在modules中引入下载的k_mod-apache-X.X.XX.so文件,在其中引入我们的.so,及work.properties文件,及指定负载分配控制器controller,在work.properties文件中worker.list=controller,tomcat1,tomcat2指定service,worker.tomcat1.port  Ajp端口号,type 是ajp,host为指定ip,lbfactor 指定分配权重值越大分担请求越多,worker.controller.type=lbworker.controller.balanced_workers=tomcat1,tomcat2  指定分担请求的tomcat Session的复制在tomcat中service.xml中Engine标签加入 jvmRoute  值为work,properties中指定的tomcat名称,然后打开<Cluster标签的注释,最后在应用中程序的web.xml文件中增加<distributable/>。

我们在做这个项目时,我们考虑到服务器性能的问题,我们最开始想到使用纵向扩展,来增加硬件的配置提高其性能,但这样做比较耗费资金,而且服务器内存空间也是有限的;所以后来就想到使用横向扩展来达到这一目的

当时我们的apache是通过jk借助于ajp协议与tomcat进行通信的,在我们不进行负载均衡之前,那所有的请求都由一台tomcat进行处理,这样会使我们的tomcat所承受的压力增大,而我们进行负载均衡之后,同样数量的请求经过apache和jk将其分发到多台tomcat进行处理,从而降低每台tomcat所承受的压力,而且当其中一台机器宕机时,其他机器还可以继续提供服务,保证服务不间断。

在这个过程中,我们遇到了session问题,然后我此昂到用session复制来解决这个问题;

在apache的配置文件中增加session粘带特性:

worker.lb.sticky_session=1

worker.lb.sticky_session_force=0

Tomcat的配置

修改server.xml文件

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

增加jvmRoute=”tomcat2”  *.  jvmRoute赋的值为worker.properties中配置的相应的server名一致

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 将此配置的注释去掉

修改应用的web.xml文件

在应用中的web.xml文件中增加<distributable/>。

如果这样做,当第一次访问的时候,会把所以数据全部缓存到第一台服务器上,通过web配置文件,会把第一台缓存的数据全部复制到第二胎服务器上,这样做就加大网路通信量,导致阻塞,所以我们就想到了可以通过memcached分布式缓存来存取session从而解决上述问题。

spring定时器

每隔固定的时间执行

1.建立一个triggers触发器集合

2.建立SimpleTriggerBean并且指定每次间隔的时间以及执行的次数以及要执行的目标

3.通过 targetObject以及targetMethod找到要执行的具体类的具体方法目标对象是一个普通的java类每到指定的时间执行

1.建立一个triggers触发器集合.

2.建立CronTriggerBean指定cron表达式以及要执行的目标

3.通过 targetObject以及targetMethod找到要执行的具体类的具体方法目标对象是一个普通的java类

以上是关于Apache+Tomcat 实现负载均衡及seesion复制的主要内容,如果未能解决你的问题,请参考以下文章

使用apache和nginx代理实现tomcat负载均衡及集群配置详解

nginx反向代理及tomcat负载均衡

Tomcat 负责均衡及cluster session

部署Tomcat 及 nginx+tomcat负载均衡

基于Apache和tomcat实现负载均衡

Apache反向代理结合Tomcat集群来实现负载均衡概念理解