Apache与Tomcat负载均衡配置

Apache HTTP Server 与 Tomcat  负载均衡css

参考资料 https://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/html

 

环境以及所需软件node

window7(64),JDK1.7(64) apache

apache-tomcat-7.0.35-windows-x64.zipwindows

Apache 服务器 (httpd-2.2.25-win32-x86-no_ssl.msi )tomcat

JK插件 (tomcat-connectors-1.2.40-windows-i386-httpd-2.2.x.zip)服务器

其中须要注意的是JK插件的版本与Apache服务器的版本须要一致 其中红色标记session

 

1、配置apache的httpd.conf文件加载JK插件,该文件在软件安装目录的conf目录下面。负载均衡

配置以下:jvm

LoadModule jk_module modules/mod_jk.so
#
# Configure mod_jk
#
JkWorkersFile conf/workers.properties  
JkMountFile conf/uriworkermap.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn

 

2、在httpd.conf文件的同级目录新建俩个文件。workers.properties 和 uriworkermap.properties,这俩个文件的名字须要和上面配置里的名字一致。

配置以下: 官方文档 http://tomcat.apache.org/connectors-doc/reference/workers.html 

须要注意的是下面括号里的为说明 使用的时候须要拿掉。

workers.properties

 

worker.list=DLOG4J, status # localhost server 1 # ------------------------ worker.s1.port=8009 worker.s1.host=localhost worker.s1.type=ajp13 worker.s1.lbfactor = 1 # localhost server 2 # ------------------------ worker.s2.port=8009 (Tomcat的AJP/1.3端口 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/> 须要和tomcat的service.xml里配置的端口一致) worker.s2.host=192.168.1.213 (Tomcat所在机器的IP地址) worker.s2.type=ajp13 (worker的类型) worker.s2.lbfactor = 1 (负载均衡的权重,值越大被访问的次数越高) worker.DLOG4J.type=lb worker.retries=3 worker.DLOG4J.balanced_workers=s1,s2 worker.DLOG4J.sticky_session=True (粘结SESSION策略,即将同一个客户端的请求都转发到相同的Tomcat上面) worker.status.type=status (监控用的)

 

 

 

首先咱们配置了两个类型为 ajp13 的 worker 分别是 s1 和 s2,它们指向同在不一样服务器上运行在两个Tomcat 。接下来咱们配置了一个类型为 lb(也就是负载均衡的意思)的 worker,它的名字是 DLOG4J,这是一个逻辑的 worker,它用来管理前面配置的两个物理链接 s1 和 s2。最后还配置了一个类型为 status 的 worker,这是用来监控 JK 自己的模块。有了这三个 worker 还不够,咱们还须要告诉 JK,哪些 worker 是可用的,因此就有 worker.list = DLOG4J, status 这行配置。

 

uriworkermap.properties

接下来即是 URI 的映射配置了,咱们须要指定哪些连接是由 Tomcat 处理的,哪些是由 Apache 直接处理的,看看下面这个文件你就能明白其中配置的意义。

/*=DLOG4J
/jkstatus=status

!/*.gif=DLOG4J
!/*.jpg=DLOG4J
!/*.png=DLOG4J
!/*.css=DLOG4J
!/*.js=DLOG4J
!/*.htm=DLOG4J
!/*.html=DLOG4J

全部的请求都由 DLOG4J 这个 worker 进行处理,可是有几个例外,/jkstatus 请求由 status 这个 worker 处理(监控管理界面),另外这个配置中每一行数据前面的感叹号是什么意思呢?感叹号表示接下来的 URI 不要由 JK 进行处理,也就是 Apache 直接处理全部的图片、css 文件、js 文件以及静态 html 文本文件,其余的请求由JK处理,也就是咱们所说的动态资源,JK会把请求负载到配置好的tomcat,这样就完成了让Apache来处理静态资源,让JK负载tomcat来处理动态请求。

 

3、配置TOMCAT

<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">

分别配置每台Tomcat服务器的service.xml  jvmRoute="s1" 这里的"s1" 须要与 workers.properties 里面定义的名字一致。

 

上面的配置就完成了Apache与tomcat的负载均衡的配置,下面在介绍一些额外的配置。

 

Tomcat热备,顾名思义就是配置俩个tomcat,平时使用其中一个,另一个作备用,若是平时使用的这个tomcat挂了,那么会自动切换到另一个。

 

 # The advanced router LB worker worker.list=router worker.router.type=lb worker.router.balance_workers=worker1,worker2 # Define the first member worker worker.worker1.type=ajp13 worker.worker1.host=myhost1 worker.worker1.port=8009 # Define preferred failover node for worker1 worker.worker1.redirect=worker2 (配置当worker1挂机的时候 会使用worker2) # Define the second member worker worker.worker2.type=ajp13 worker.worker2.host=myhost2 worker.worker2.port=8009 # Disable worker2 for all requests except failover (worker2只接受worker1失败时转发过来的请求) worker.worker2.activation=disabled

 

 

 

 

worker.worker1.redirect=worker2的意思是告诉负载均衡器(load balancer)当worker1出现问题时把请求转发给worker2。

 

worker.worker2.activation=disabled的意思是在全部状况下worker2不接受任何请求,除了worker1出现问题时转发过来的请求。

 

 

以上的配置都是基于Session粘连的配置方式worker.DLOG4J.sticky_session=True 会将赞成客户端的请求始终绑定到同一个Tomcat上。

接下来咱们来配置第二种方式Session共享(参考 http://blog.csdn.net/extreme421/article/details/16113417)

1、tomcat的server.xml

 

启用<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>标签,注:tomcat01和tomcat02都要启用。

 

 

 

2、httpd.conf

 

修改Apache的httpd.conf配置 在最后面加上以下配置 注意要加到</IfModule>前面 ProxyRequests Off ProxyPass / balancer://abc/ stickysession=jsessionid nofailover=On <Proxy balancer://abc/> BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=s1 BalancerMember ajp://192.168.1.213:8009 loadfactor=1 route=s2 </Proxy> 

 

 

 

 3、workers.properties

 

worker.DLOG4J.sticky_session=False 修改 workers.properties 关闭粘连
相关文章
相关标签/搜索