tomcat负载均衡

Apache +Tomcat负载均衡配置,tomcat负载均衡

Apache
+Tomcat负载均衡能保证较高的可用性和系统性能,这些是通过Apache与Tomcat之间的通讯来完成的。Apache和Tomcat之间的通讯基本有三种方式:Mod_Jk、HTTP_Proxy、AJP_Proxy其中以Mod_Jk最为流行,并且官方的文档也非常全。

Mod_JK是Apache的一个模块,其通过AJP协议实现与Tomcat之间的通讯,Tomcat通过设置Connector监听AJP的连接请求。

 

注意:如果希望apache与tomcat通信使用 HTTP 协议则需要使用
HTTP_Proxy,请看最后。

 

安装Mod_JK:

tar zxvf tomcat-connectors-1.2.40-src.tar.gz

cd tomcat-connectors-1.2.40-src/

cd native/

./configure –with-apxs=/home/soft/httpd-2.4.10/bin/apxs
–prefix=/home/soft/tomcat-connectors-1.2.40
make 

make install
可选

make clean

make distclean

注:安装结果貌似不会装到/tomcat-connectors-1.2.40,但会往本地apache httpd
写入文件,比如添加了:modules/mod_jk.so

 

负载均衡配置步骤:
1.在apache安装目录下conf目录中找到httpd.conf,在最后加上配置 Include
conf/mod_jk.conf
2.将mod_jk.so文件放入Apache\modules文件夹
3.新建mod_jk.conf文件并配置
4.新建workers.properties和uriworkermap.properties文件并配置
5.修改各个tomcat配置文件server.xml,主要对应端口和设置engine的jvmRoute属性

 

mod_jk.conf 内容:
# 加载 mod_jk 模块
LoadModule jk_module modules/mod_jk.so
# workers.properties 位置
JkWorkersFile conf/mine_jk/workers.properties
#加载workers的请求处理分配文件
JkMountFile conf/mine_jk/uriworkermap.properties
# 日志存放位置
JkLogFile logs/mine_mod_jk.log
# 设置日志级别 [debug/error/info]
JkLogLevel info
# Select the timestamp log format
JkLogStampFormat “[%a %b %d %H:%M:%S %Y] ”

workers.properties 内容:
# 定义worker,此处的list名称必须和mod_jk.conf文件中的 dispatcher
名称一致  
worker.list=dispatcher,status
# Define Node1  
worker.tomcat1.port=8019  
worker.tomcat1.host=localhost  
worker.tomcat1.type=ajp13  
worker.tomcat1.lbfactor=1  
#worker.tomcat1.connection_pool_size=10  
#worker.tomcat1.connection_pool_timeout=600  
#worker.tomcat1.socket_connect_timeout=300  
# Define Node2  
worker.tomcat2.port=8029  
worker.tomcat2.host=localhost  
worker.tomcat2.type=ajp13  
worker.tomcat2.lbfactor=1  
#worker.tomcat2.connection_pool_size=10  
#worker.tomcat2.connection_pool_timeout=600  
#worker.tomcat2.socket_connect_timeout=300  

# Load-balancing behaviour  
worker.dispatcher.type=lb  
worker.dispatcher.balance_workers=tomcat1, tomcat2
#sticky_session session亲和的设置
worker.dispatcher.sticky_session=0
worker.dispatcher.sticky_session_force=1
#loadbalancer
worker.status.type=status

uriworkermap.properties 内容:
#指定请求交给tomcat处理,”dispatcher”为在workers.propertise里指定的负载分配控制器
/*.jsp=dispatcher
/jkstatus=status
!/*.gif=dispatcher
!/*.jpg=dispatcher
!/*.png=dispatcher
!/*.css=dispatcher
!/*.js=dispatcher
!/*.htm=dispatcher
!/*.html=dispatcher

 

Tomcat设置:

准备两个tomcat,将它们的router分别设成tomcat1和tomcat2,配置它们的connector为ajp,端口分别为8019和8029。

配置完成后,启动apache和tomcat,访问
可以查看集群状态(前提是配置了status类型的worker)

 

有可以看看其他人写的,很详细:

 

注意:如果希望apache与tomcat通信使用 HTTP 协议则需要使用 HTTP_Proxy:

http_proxy

这是利用 Apache 自带的 mod_proxy 模块使用代理技术来连接
Tomcat。在配置之前请确保是否使用的是 2.2.x 版本的 Apache 服务器。因为
2.2.x 版本对这个模块进行了重写,大大的增强了其功能和稳定性。

http_proxy 模式是基于 HTTP 协议的代理,因此它要求 Tomcat 必须提供 HTTP
服务,也就是说必须启用 Tomcat 的 HTTP Connector。

我用的linux源码编译的apache,mod_proxy.so和mod_proxy_http.so已经自带了,其他版本的apache应该也有,如果没有就单独安装
库 文件

############## http_proxy 方式需要的mod_proxy.so
##############
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
############## http_proxy 方式需要的mod_proxy_http.so
##############
LoadModule proxy_http_module modules/mod_proxy_http.so
上面的内容在 apache配置文件 httpd.conf 中,放开其中的注释就可以使用
库了,

还需要在httpd.conf文件的最后加上:

############## http_proxy 方式
##############
#http_proxy方式需要加载 mod_proxy.so 和 mod_proxy_http.so,将上面的
两行对应的 LoadModule  放开注释
ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
ProxyPass /

在这个配置中,我们把所有 的请求代理到
,这也就是 Tomcat 的访问地址,除了
images、css、js 几个目录除外。我们同样可以利用 mod_proxy
来做负载均衡,再看看下面这个配置

ProxyPass /images !

ProxyPass /css !

ProxyPass /js !

 

ProxyPass / balancer://example/

<Proxy balancer://example/>

BalancerMember

BalancerMember

BalancerMember

</Proxy>

启动apache和tomcat就可以测试了。

查看评论

+Tomcat负载均衡配置,tomcat负载均衡 Apache
Tomcat负载均衡能保证较高的可用性和系统性能,这些是通过Apache与Tomcat之间的通讯来完成的。…

一、前言

      1.
Apache是Web服务器,它支持静态页面,有很好的静态页面处理能力;Tomcat是应用(Java)服务器,它支持动态页面(例如Servlet,JSP)。一般在使用Apache
+
Tomcat的配置下,Apache都是实现对JSP的转发,交给Tomcat来处理,两者搭配可以支持静态和动态页面。

        2.
Tomcat,它只是一个servlet容器,是Apache的扩展,但可以独立于Apache运行;如果以独立方式运行,功能与Apache等效,但对静态页面的处理不太理想。

      3.
为了提高整个系统的可用性和性能,常常会用到负载均衡,而Apache和Tomcat经常联合在一起来实现负载均衡技术。

         
 ①.保证多台Tomcat服务器之间会话的同步,确保任何一台当机都不会影响系统的运行,从而提高系统的可用性。

            ②.在负责负载平衡的Apache主机上记录每个请求的Session
ID(这个ID是由Tomcat分配的)及回应Session的Tomcat
Server对应关系,在下一个请求到来时先判断每个Session
ID,如果有标识连接已经建立,那么转到对应服务器;负责就是新的连接,根据每个后台Tomcat服务器的状态分配一个服务器并记录Session
ID.

二、Apache + Tomcat 组合配置

      1. 通讯方式

         
 Apache和Tomcat之间的通讯基本有三种方式(Mod_Jk、HTTP_Proxy和AJP_Proxy),由于当前流行方式且官方文档非常全的为Mod_Jk,所以本文中采用的为Mod_Jk方式(具体介绍可自行百度,本文不做具体介绍)

    2.配置步骤安装

          ①. 安装Apache
HTTP服务器,从Apache官方网站下载,我安装的是apache_httpd-2.4.18

          ②. 安装Apache
Tomcat,可以安装在Apache同一个机器,也可以在其他的机器

          ③. Mod_Jk配置

              Ⅰ.下载Mod_Jk.so将其放置到目录Apache/Modules下

              Ⅱ.修改httpd.conf,增加一行:Include conf/mod_jk.conf

              Ⅲ.在conf目录下新建Mod_jk.conf文件,内容为:

#Load mod_jk module.

LoadModule jk_module modules/mod_jk.so

#Where to find workers.properties

JkWorkersFile conf/workersOne.properties

JkMountFile conf/workersTwo.properties

#Where to put jk logs

JkLogFile logs/mod_jk.log

#Set the jk log level[debug/error/info]

JkLogLevel info

#Select the log format

JkLogStampFormat “[%a %b %d %H:%M:%S %Y]”

#JkRequestLogFormat set the request format

JkRequestLogFormat “%w %V %T”

JkMount /* loadbalancer 

                Ⅳ.  在conf目录下新建workersOne.properties文件,内容为:

#worker.list=loadbalancer

worker.list=loadbalancer,tomcat1,tomcat2  #server列表

#define the first node

worker.tomcat1.port=8009

worker.tomcat1.host=127.0.0.1

worker.tomcat1.type=ajp13

worker.tomcat1.lbfactor=1

#define the first node

worker.tomcat2.port=8009

worker.tomcat2.host=127.0.0.1**

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1

#Now we define the load-balancing behavior

worker.loadbalancer.type=lb

worker.loadbalancer.balance_workers=tomcat1, tomcat2

worker.loadbalancer.sticky_session=true

worker.loadbalancer.sticky_session_force=true

                Ⅴ.在conf目录下新建workersTwo.properties文件,内容为:

!/*.htm=loadbalancer