lab-bill-sys_ApacheTomcatLoadbalance

Apache负载均衡+Tomcat集群

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

目标:

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

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

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

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

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

原理:

apache和tomcat的3种不同方式集成

1、jk方式集成

下载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#这里在的worker2、worker3为需要与上边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,检查是否能正常访问。

2、ajp_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.so,mod_proxy_balancer.so,mod_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,检查是否能正常访问。

3、http_proxy

http_proxy的配置与ajp_proxy类似,修改方法2的httpd.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

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

[[email protected] test]# tar -zxfapr-1.4.5.tar.gz

[[email protected] apr-1.4.5]# ./configure--prefix=/usr/local/apr

[[email protected] apr-1.4.5]# make

[[email protected] apr-1.4.5]# make install

2.解决APR-util

[[email protected] test]# tar -zxfapr-util-1.3.12.tar.gz

[[email protected] apr-util-1.3.12]# ./configure--prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config

[[email protected] apr-util-1.3.12]# make

[[email protected] 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

三、配置

1、Apache配置

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>

上面的2个BalancerMember成员是我们配置的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、测试apache和tomcat协作。

先在每个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:8080,http://10.0.0.52:8080它们访问的内容和上面的http:// 10.0.0.31是一样的。

这样就说明apache和TOMCAT整合成功!

2、测试均衡器

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

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

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

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

时间: 2024-08-11 05:43:39

lab-bill-sys_ApacheTomcatLoadbalance的相关文章

Simulation.Lab.Software.SimLab.Composer.2015.v6.1.MACOSX 1CD

CA Spectrum Linux VM 10.01.00.00.103 Linux 2DVD  Tahoe Design HYDROFLO v3.0.0.4 1CD  CA Spectrum Windows VM 10.01.00.00.103 Win64 2DVD  Delcam Exchange 2016 R2 CR 8.3.1005 Win64 1CD  Delcam PowerSHAPE 2016 SP2 Update only 1CD  ESI Group VA One 2015.0

x01.Lab.StoreApp: XP 停服,微软变脸

变脸,川剧的一种表演形式,除了哄哄小孩,似乎别无用处.而川剧变脸从业者何其多也,存在时间何其长也.以如此多的从业者,如此长的时间,来进行科研,其成果一定是斐然吧.推而广之,试问天下谁能敌! 微软变脸,足以改变世界.这次变脸,不仅是形式上的,而且是骨子里的.为适应手机.平板的性能苛求,其应用商店程序是建立在 WinRT 的基础上,而 WinRT 是建立在 COM 基础上.即面向对象,又拥抱底层,可谓鱼与熊掌兼得.不仅如此,其开发者许可,应用商店成立,无一不在显示微软的掌控能力."天下英雄,尽入毂中

Citrix Provisioning Services LAB時出現Unable to contact th database Server

今天在執行PVS LAB時出現下圖 後來發現為SQL連入的要調整如下圖1.Machine Account2.對應DB3.DB權限 如果是用SA帳戶作為本機的SQL,就是調這組帳戶 調完後對應就可以使用PVS 感謝

Lab颜色空间进行颜色提取 及其实现

这段时间在做车灯检测,晚上有些尾灯偏黄色亮度偏弱,仅用灰度度是不够的,经比较了在RGB.HSV.Lab颜色空间下进行颜色提取,发现Lab颜色模型的效果是最好的.下面介绍Lab的原理及其代码实现. Lab颜色模型由三个要素组成,一个要素是亮度(L),a 和b是两个颜色通道.a包括的颜色是从深绿色(低亮度值)到灰色(中亮度值)再到亮粉红色(高亮度值):b是从亮蓝色(低亮度值)到灰色(中亮度值)再到黄色(高亮度值).因此,这种颜色混合后将产生具有明亮效果的色彩.(这段百度的,哈哈 ) RGB转换到La

Lab - Hot Standby Router Protocol

Topology Objective Configure inter-VLAN routing with HSRP to provide redundant, fault-tolerant routing to the internal network. Background Hot Standby Router Protocol (HSRP) is a Cisco-proprietary redundancy protocol for establishing a fault-tolerant

YTU 2887: D--机器人Bill

Description 最近,Dr. Jiang 新设计一个机器人Bill.Bill很聪明,会做许多事情.唯独对质数的理解与人类不一样,它是从右往左读数.比如,它看到113时,会理解成311.让它比较23与19哪一个大,它说19大.原因是它的大脑会以为是32与91在进行比较.再比如,让它比较29与31,它说29大. 给Bill 两个自然数A和B,让它将 [A,B] 区间中的所有质数按从小到大排序出来.你会认为它如何排序? Input 第一行:N 表示有多少组测试数据. (2<=N<=5 ) 接

MIT OS lab Makefile 分析

lab1 中的Makefile主要是根目录下的GNUMakefile, kern/Makefrag, boot/Makefrag, 后两者通过include直接包含到GNUMakefile中. 1 # 2 # This makefile system follows the structuring conventions 3 # recommended by Peter Miller in his excellent paper: 4 # 5 # Recursive Make Considere

CSAPP 3e : Data lab

/* * CS:APP Data Lab * * <Please put your name and userid here> * * bits.c - Source file with your solutions to the Lab. * This is the file you will hand in to your instructor. * * WARNING: Do not include the <stdio.h> header; it confuses the

CSAPP 3e: Bomb lab (phase_1)

这一个lab拖了好久才开始慢慢完成,花的时间比较多,我也是没想到会需要这么多时间来折腾.考虑到如果把所有关卡的内容都一次发出来,太长了.所以分开操作吧. 然后,有一点是,在开始解题前的确该好好认识一下GDB,因为要使用这个工具.虽然我也感觉有些东西是可以等需要的时候再查的,但是后来找到了一篇介绍gdb命令的,写的比较详细,就下载了打印出来,占用了几节课的时间好好看了一下,就感觉特别有用,比之前更加熟悉了GDB.大概是在网页上看的时候比较急躁,所以吸收不好吧23333.还有,在解题过程中参考了不少

CSAPP 3e: Bomb lab (phase_2) + lab中的GDB 使用

这里是第二关,在这里分享一些在解题过程中用到的GDB功能. 首先,要进行断点,比如,在第二关中,断点操作有: 81: input = read_line(); 82: phase_2(input); 83: phase_defused(); break 81; break 82; break 83; 分别在read_line,phase_2,phase_defused,三个函数入口进行了断点. 另外,还有一个地方需要断点,那就是explode_bomb:操作:break explode_bomb