lab-bill-sys_ApacheTomcatLoadbalance

Apache负载均衡+Tomcat集群

 

httpd-2.4.9 + apache-tomcat-7.0.47配置负载均衡

目标:

使用 apache tomcat 配置一个可以应用的 web 网站,要达到以下要求:

1Apache 做为 HttpServer,后面连接多个 tomcat 应用实例,并进行负载均衡。

2、为系统设定 Session 超时时间,包括Apache tomcat

3、为系统屏蔽文件列表,包括 Apache tomcat

注:本例程以3台机器为例子,即同一台机器上装apache和另外2Tomcat

 

原理:

apachetomcat3种不同方式集成

 

1jk方式集成

下载mod_jk-1.2.31-httpd-2.2.3.so,请下载合适的mod_jk版本,改名为mod_jk.so放进modules文件夹内

修改conf/httpd.conf配置

 

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkLogLevel debug

JkMount /*.do loadbalancer

JkMount /*.jsp loadbalancer

增加conf/workers.properties文件,添加内容

 

worker.list=loadbalancer

worker.worker2.port=9009 #ajp的监听端口

worker.worker2.host=10.0.0.51

worker.worker2.type=ajp13

worker.worker2.lbfactor=1

 

worker.worker3.port=9009

worker.worker3.host=10.0.0.52

worker.worker3.type=ajp13

worker.worker3.lbfactor=1

worker.loadbalancer.type=lb

worker.loadbalancer.balance_workers=worker2,worker3#这里在的worker2worker3为需要与上边tomcat设置的别名一致

worker.loadbalancer.sticky_session=1

配置完成

访问http://10.0.0.51:8080/test/test.jsp,检查是否能正常访问。

访问http://10.0.0.52:8080/test/test.jsp,检查是否能正常访问。

访问http://10.0.0.31:80/test/test.jsp,检查是否能正常访问。

 

 

2ajp_proxy

去掉httpd.conf文件中下面内容的注释(删掉#),开启下边的配置

 

Include conf/extra/httpd-vhosts.conf

LoadModule proxy_modulemodules/mod_proxy.so

LoadModule proxy_ajp_modulemodules/mod_proxy_ajp.so

LoadModule proxy_balancer_modulemodules/mod_proxy_balancer.so

LoadModule proxy_connect_modulemodules/mod_proxy_connect.so

LoadModule proxy_ftp_modulemodules/mod_proxy_ftp.so

LoadModule proxy_http_modulemodules/mod_proxy_http.so

注意:

除了mod_proxy.somod_proxy_balancer.somod_proxy_connect.so

如果是采用ajp_proxy,需要加载mod_proxy_ajp.so这个模块;

如果是采用http_proxy,需要加载mod_proxy_http.so这个模块;

 

ProxyRequests Off

<proxy balancer://loadbalancer>

BalancerMember ajp://10.0.0.51:9009loadfactor=1 route=jvm1

BalancerMember ajp://10.0.0.52:9009loadfactor=1 route=jvm1

</proxy>

 

修改conf/extra/httpd-vhosts.conf增加配置

<VirtualHost *:8081>

ServerAdmin [email protected]

ServerName localhost

ServerAlias localhost

ProxyPass / balancer://loadbalancer/stickysession=jsessionid nofailover=On

ProxyPassReverse / balancer://loadbalancer/

ErrorLog"logs/loadbalancer-error.log"

CustomLog"logs/loadbalancer-access.log" common

</VirtualHost>

 

配置完成任务,访问http://127.0.0.1:8081/test/test.jsp,检查是否能正常访问。

 

3http_proxy

http_proxy的配置与ajp_proxy类似,修改方法2httpd.conf配置如下,其它不变

 

ProxyRequests Off

<proxy balancer://loadbalancer>

BalancerMember http://10.0.0.51:9009loadfactor=1 route=jvm1

BalancerMember http://10.0.0.52:9009loadfactor=1 route=jvm1

</proxy>

配置完成任务,访问http://127.0.0.1:8081/test/test.jsp,检查是否能正常访问。

 

 

一、前期准备工作:安装用的程序(前提保证已安装了JDK1.7以上的版本)

 

二、安装过程

 

yum remove apr-util-devel aprapr-util-mysql apr-docs apr-devel apr-util apr-util-docs

yum install flex bison lynx

 

具体步骤如下:

 

1.解决apr

APRAPR-UTIL的下载地址:http://apr.apache.org/download.cgi

[root@yahoo test]# tar -zxfapr-1.4.5.tar.gz

[root@yahoo apr-1.4.5]# ./configure--prefix=/usr/local/apr

[root@yahoo apr-1.4.5]# make

[root@yahoo apr-1.4.5]# make install

 

2.解决APR-util

 

[root@yahoo test]# tar -zxfapr-util-1.3.12.tar.gz

[root@yahoo apr-util-1.3.12]# ./configure--prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config

[root@yahoo apr-util-1.3.12]# make

[root@yahoo apr-util-1.3.12]# make install

 

3解决pcre

 

下载:http://sourceforge.net/projects/pcre

下载地址二:http://ftp.exim.llorien.org/pcre/

#unzip -o pcre-8.10.zip

#cd pcre-8.10

#./configure --prefix=/usr/local/pcre

#make

#make install

 

 

cp -r apr-1.5.1 httpd-2.4.9/srclib/apr

cp -r apr-util-1.5.1httpd-2.4.9/srclib/apr-util

 

安装httpd

cd httpd-2.4.9

./configure --prefix=/local/apache2--enable-so --enable-mods-shared=all --enable-proxy --enable-proxy-connect--enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util--with-pcre=/usr/local/pcre --with-included-apr

make

make install

 

 

三、配置

1Apache配置

httpd.conf配置

 

 

再找到<IfModule dir_module></IfModule>加上index.jsp修改成

<IfModule dir_module>

DirectoryIndex index.html index.jsp

</IfModule>

 

在最下面加入

ProxyRequests Off

<proxy balancer://cluster>

BalancerMember ajp://10.0.0.51:8009loadfactor=1 route=jvm1

BalancerMember ajp://10.0.0.52:9009loadfactor=1 route=jvm1

</proxy>

上面的2BalancerMember成员是我们配置的tomcat集群。后面会说明的。

 

包含虚拟主机

Include conf/extra/httpd-vhosts.conf  #把注释去掉。

 

httpd-vhosts.conf设置

在文件(extra/httpd-vhosts.conf)最下面加入

<VirtualHost *:80>

        ServerAdmin [email protected]

        ServerName localhost

        ServerAlias localhost

        ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On

        ProxyPassReverse / balancer://cluster/

</VirtualHost>

 

2 tomcat配置

配置 Engine

把原来的配置注释掉,把下面一句去掉注释。

<Engine name="Standalone"defaultHost="localhost" jvmRoute="jvm1">       

 

配置 Connector

原来的默认配置。

<!-- Define an AJP 1.3 Connector on port8009 -->

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

 

 

配置Cluster(每个tomcat中都要修改)

原来的配置。

<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

修改为以下的代码:<Receiver port=XX/>port也要保证唯一性。

 

<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"  channelSendOptions="6">

<ManagerclassName="org.apache.catalina.ha.session.BackupManager"

expireSessionsOnShutdown="false"

notifyListenersOnReplication="true"

mapSendOptions="6"/>

<!--

<ManagerclassName="org.apache.catalina.ha.session.DeltaManager"

expireSessionsOnShutdown="false"

notifyListenersOnReplication="true"/>

-->

<ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">

<MembershipclassName="org.apache.catalina.tribes.membership.McastService"

address="228.0.0.4"

port="45564"

frequency="500"

dropTime="3000"/>

<ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"

address="auto"

port="5001"

selectorTimeout="100"

maxThreads="6"/>

<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

</Sender>

<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>

</Channel>

<ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve"

filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>

<DeployerclassName="org.apache.catalina.ha.deploy.FarmWarDeployer"

tempDir="/tmp/war-temp/"

deployDir="/tmp/war-deploy/"

watchDir="/tmp/war-listen/"

watchEnabled="false"/>

<ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>

这个设置是主要用以tomcat的集群。

 

四、启动服务,测试tomcat自带的例子

 

1、测试apachetomcat协作。

先在每个tomcat中的\webapps\ROOT下的index.jsp下面加上以下的测试代码部分:(X代表不同的tomcat的输出不同的信息),把index.html删除,以免影响测试效果。在最后面的加上.</table></body>之间。

<%

     System.out.println("tomcat6.0X deal  with  request");

%>

然后再通过http://10.0.0.31来访问一下,就会出现大家熟悉的猫猫。

然后再通过分别访问

http://10.0.0.51:8080http://10.0.0.52:8080它们访问的内容和上面的http:// 10.0.0.31是一样的。

这样就说明apacheTOMCAT整合成功!

 

2、测试均衡器

通过http:// 127.0.0.1多次访问,要想看到真正的效果,必须用一些压力测试工具,可用微软Microsoft Web Application Stress Tool进行简单压力测试,不然你靠不停刷新是体现不出来的,你只会在一个tomcat的控制台有输出结果。只用用压力测试工具模拟大量用户同时访问,你会发现四个tomcat控制台均有打出控制信息,说明均衡器工作正常。

 

很晚完成该文档,尽管每一天工作强度很大,还是愿意与大家一起进步。呵呵每天进步一点。

 

后续介绍其他模块,有什么问题敬请大家不要吝啬指出,一同改进。欢迎大家和大家的技术发烧友一起加入我们的qq262407268,共建我们的《云络智慧城市》

 

目前已经完成了三个比较小的模块:common、service、application其实要实现高性能里面还有很多内容要去学习积累,后续会做补充。接下来我们该分享 数据仓库部分了,先是关系数据库 oracle、mysql 然后非关系数据库 mogondb、redis、hbase,最后我们开启分布式计算hadoop之路,主要做数据分析和数据处理。在这里我们会提到一个收索引擎的制作:sphinx+ 中文分词coreseek,还会做一个日志分析的架构splunk产品。一起共建我们的《云络智慧城市》。
请大家自觉修改备注,谢谢。申明该群是一个公益性社区,我们愿意承接一些架构的设计,建设和咨询业务,为您和您的企业改善业务架


本文出自 “DavideyLee” 博客,请务必保留此出处http://davideylee.blog.51cto.com/8703117/1440442

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。