Apache+Tomcat 整合及负载均衡 二 (原创)
2013-07-25 12:19
330 查看
如果转载,请表明出处,谢谢!
在上一篇里面实现了Apache和Tomcat的整合,在这一篇里记录他们的更高级的应用——负载均衡。
由于条件有限,我这次的实验室在一台机子上用一个apache当代理跑两个tomcat。所以两个tomcat的端口都需要更改以避免冲突,以下是步骤:
PS:开始前,一定记得完成上一篇里面的复制两份tomcat的操作
1.打开C:\apache-tomcat-5.5.25Server1 重命名 webapps和temp文件夹。因为tomcat默认会加载这里面的应用,而我们这里是把应用放到C:\Project\目录下去,并设置为tomcat开启时默认进行编译的应用文件夹。为了进行测试,我们在C:\Project下面建立ROOT文件夹,写入index.html:
注:xplanner这个超链接是指向C:\Project目录下的xplanner文件夹的web应用。
2. 在C:\apache-tomcat-5.5.25Server1 \conf\Catalina\localhost\下添加ROOT.xml:
注:
这里有一个属性 distributable="true"是为了实现集群session共享。
另外,在tomcat\conf\Catalina\localhost下面建立这个ROOT.xml是为了让tomcat的默认根目录是打开我的工程项目文件夹:C:\Project ,这样我这个文件夹下所有的文件都可以被TOMCAT编译。
要注意!这里的文件名不能随便取,文件名对应的是Context的path,即URL里面的虚拟路径,如我设置的文件名不叫ROOT.xml,而叫ROOT1.xml,那么当你输入"http://localhost的时候,出来的就不是自己设置的根目录!!一定要把文件名和path一致!!比如我URL路径为/test那么对应的文件名是test.xml,那么找的就是C:\Project\test!!
3. 对另外一份tomcat的进行同样的修改,然后修改...\conf\下的server.xml文件:
注: 这里一定要注意 jvmRoute !! 这里的名字一定要和下面的workers.properties里面的worker名字一致!!否则,即使实现了负载均衡,但是无法进行session绑定,那么,同一用户会在两台server上跳来跳去!
4. 修改apache目录下的conf\workers.properties (在上一篇里面创建的):
注:
worker.list=bls,status 这里把上一篇里面的tomcat改为bls是为了实现负载均衡,这里没有必要把所有的tomcat都写上,因为httpd.conf里面其实用不到他们
worker.tomcat1.lbfactor=3 这个是server的加权比重,值越高,分得的请求越多.如果两个的lbfactor设置为一样,那么收到的请求会一人一半。这里设置为3:1开,那么四个请求1号处理三个。如果不设置这条语句,那么默认为永远不跳,即一个session永远在一个server上。
worker.bls.type=lb 这里申明bls是一个负载均衡类型
worker.bls.balanced_workers 指出均衡服务器
其他的请参看第一篇
5. 修改apache/conf/httpd.conf:
其他请参见上一篇。
这里值得一提的是 DocumentRoot文件夹,我发现一个很让人郁闷的地方,当利用apache作为代理时,用户去访问http://localhost:80时,apache实际上是去找DocumentRoot下面的ROOT文件夹,如果文件夹下没东西甚至没有这个文件夹,或者你给它指定另外的文件夹,比如“C:\Project\test”,只要test下面没有ROOT文件夹,都会返回找不到网页!!
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/15/a62a4885f567c00bdf166b9aa5647249.gif)
所以这里一定要注意,在C:\Project下面一定要有一个ROOT来存放默认项目。之前在写ROOT.xml时也有叙述!
好,现在我们进行第一次测试。在C:\Project\ROOT下面建立文件test.jsp:
然后分别启动两个tomcat和apache,打开IE键入http://localhost,可以看到之前写的
说明整合依然有效。
然后再键入http://localhost/test.jsp 看到
去tomcat的运行命令行窗口,可以看到出现 Jump@Jump@Jump@!
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/15/59411524d184ee4d454800068fce6600.gif)
回到IE,刷新页面,可以看到这句话分别在两个tomcat的窗口出现!!
这就是session没有绑定的后果……
![](https://oscdn.geek-share.com/Uploads/Images/Content/201307/beb9429b5d3f20f0039547c9e361fe68.gif)
如何修改呢?
再次回到tomcat/conf/server.xml
找到<Cluster .... > 把这句的注释去掉。记住!两个tomcat都要改!
OK,再次运行。这次你不停的刷新只会发现只在一个tomcat下面显示Jump@Jump@Jump@!
大功告成!!
在上一篇里面实现了Apache和Tomcat的整合,在这一篇里记录他们的更高级的应用——负载均衡。
由于条件有限,我这次的实验室在一台机子上用一个apache当代理跑两个tomcat。所以两个tomcat的端口都需要更改以避免冲突,以下是步骤:
PS:开始前,一定记得完成上一篇里面的复制两份tomcat的操作
1.打开C:\apache-tomcat-5.5.25Server1 重命名 webapps和temp文件夹。因为tomcat默认会加载这里面的应用,而我们这里是把应用放到C:\Project\目录下去,并设置为tomcat开启时默认进行编译的应用文件夹。为了进行测试,我们在C:\Project下面建立ROOT文件夹,写入index.html:
Hello! <A HREF="\xplanner" >xplanner</A> |
2. 在C:\apache-tomcat-5.5.25Server1 \conf\Catalina\localhost\下添加ROOT.xml:
<?xml version="1.0" encoding="utf-8"?> <Context path="" docBase="C:\Project" distributable="true" displayName="tomcat1" debug="0" privileged="true" antiResourceLocking="false" antiJARLocking="false"> <!—Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context> |
这里有一个属性 distributable="true"是为了实现集群session共享。
另外,在tomcat\conf\Catalina\localhost下面建立这个ROOT.xml是为了让tomcat的默认根目录是打开我的工程项目文件夹:C:\Project ,这样我这个文件夹下所有的文件都可以被TOMCAT编译。
要注意!这里的文件名不能随便取,文件名对应的是Context的path,即URL里面的虚拟路径,如我设置的文件名不叫ROOT.xml,而叫ROOT1.xml,那么当你输入"http://localhost的时候,出来的就不是自己设置的根目录!!一定要把文件名和path一致!!比如我URL路径为/test那么对应的文件名是test.xml,那么找的就是C:\Project\test!!
3. 对另外一份tomcat的进行同样的修改,然后修改...\conf\下的server.xml文件:
操作 | 默认 | tomcat1 | tomcat2 |
Server port | 8005 | 10005 | 20005 |
AJP1.3 port | 8009 | 10009 | 20009 |
Http connector port | 8080 | 10001 | 20001 |
Redirect port | 8443 | 10043 | 20043 |
TcpListenport | 4001 | 10011 | 20011 |
jvmRoute | jvm1 | tomcat1 | tomcat2 |
4. 修改apache目录下的conf\workers.properties (在上一篇里面创建的):
worker.list=bls,status worker.tomcat1.port=10009 worker.tomcat1.host=localhost worker.tomcat1.type=ajp13 #worker.tomcat1.lbfactor = 3 worker.tomcat2.port=20009 worker.tomcat2.host=localhost worker.tomcat2.type=ajp13 #worker.tomcat2.lbfactor = 1 worker.bls.type=lb worker.retries=3 worker.bls.balanced_workers=tomcat1,tomcat2 worker.bls.sticky_session=1 worker.status.type=status |
worker.list=bls,status 这里把上一篇里面的tomcat改为bls是为了实现负载均衡,这里没有必要把所有的tomcat都写上,因为httpd.conf里面其实用不到他们
worker.tomcat1.lbfactor=3 这个是server的加权比重,值越高,分得的请求越多.如果两个的lbfactor设置为一样,那么收到的请求会一人一半。这里设置为3:1开,那么四个请求1号处理三个。如果不设置这条语句,那么默认为永远不跳,即一个session永远在一个server上。
worker.bls.type=lb 这里申明bls是一个负载均衡类型
worker.bls.balanced_workers 指出均衡服务器
其他的请参看第一篇
5. 修改apache/conf/httpd.conf:
<VirtualHost *:80> ServerAdmin admin@localhost DocumentRoot "C:\Project" ServerName localhost ErrorLog logs/localhost-error_log CustomLog logs/localhost-access_log common </VirtualHost> |
这里值得一提的是 DocumentRoot文件夹,我发现一个很让人郁闷的地方,当利用apache作为代理时,用户去访问http://localhost:80时,apache实际上是去找DocumentRoot下面的ROOT文件夹,如果文件夹下没东西甚至没有这个文件夹,或者你给它指定另外的文件夹,比如“C:\Project\test”,只要test下面没有ROOT文件夹,都会返回找不到网页!!
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/15/a62a4885f567c00bdf166b9aa5647249.gif)
所以这里一定要注意,在C:\Project下面一定要有一个ROOT来存放默认项目。之前在写ROOT.xml时也有叙述!
好,现在我们进行第一次测试。在C:\Project\ROOT下面建立文件test.jsp:
Check the CMD,dude! And you will found "Jump@Jump@Jump@!" <% System.out.println("Jump@Jump@Jump@!"); %> |
Hello! xplanner |
然后再键入http://localhost/test.jsp 看到
Check the CMD,dude! And you will found "Jump@Jump@Jump@!" |
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/15/59411524d184ee4d454800068fce6600.gif)
回到IE,刷新页面,可以看到这句话分别在两个tomcat的窗口出现!!
这就是session没有绑定的后果……
![](https://oscdn.geek-share.com/Uploads/Images/Content/201307/beb9429b5d3f20f0039547c9e361fe68.gif)
如何修改呢?
再次回到tomcat/conf/server.xml
找到<Cluster .... > 把这句的注释去掉。记住!两个tomcat都要改!
OK,再次运行。这次你不停的刷新只会发现只在一个tomcat下面显示Jump@Jump@Jump@!
大功告成!!
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/15/25d53e2af0551a428804ce35b7a1b381.gif)
相关文章推荐
- Apache与Tomcat整合实现动静分离与负载均衡的配置实践
- apache+tomcat+memcached实现负载均衡,session共享(摘抄+整合)
- apache与tomcat及整合实现负载均衡及集群(转)
- Apache与Tomcat整合实现动静分离与负载均衡的配置实践
- windows 下Apache和tomcat安装整合全过程 负载均衡session共享
- apache tomcat jk整合群集负载均衡
- 负载均衡软件之Apache以及和tomcat整合
- apache与tomcat及整合实现负载均衡及集群(转)
- apache下jk_mod负载均衡的实现整合tomcat
- Apache与Tomcat整合实现动静分离与负载均衡的配置实践
- Apache与Tomcat整合实现动静分离与负载均衡的配置实践
- 使用Apache + mod_jk + tomcat来实现tomcat集群的负载均衡出现的无法加载mod_jk.conf文件的问题
- Tomcat与Apache或Nginx的集群负载均衡设置及Sersync同步应用(3)
- Apache + tomcat实现高并发负载均衡方案(三)----实现session复制的集群
- 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置 Peter Wei
- 阿里云linux下Nginx整合Tomcat实现负载均衡集群
- Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程
- apache+tomcat 实现负载均衡方案
- apache+tomcat集群的负载均衡配置方式
- Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(2)使用mod_proxy