Apache +Tomcat的负载均衡与集群配置
实验拓扑图:

一.搭配环境
(1)。Tomcat的安装和配置
Tomcat_a的ip:192.168.55.229
Tomcat_b的ip:192.168.55.231
Tomcat的需要安装jdk和tomcat包(例如apache-tomcat-6.0.30.zip和jdk-6u5-linux-x64.bin)
tomcat的安装和配置可以参考我的博客:
http://blog.csdn.net/zhuying_linux/article/details/6583096
测试:分别访问http://192.168.55.229:8080和http://192.168.55.231:8080
如果出现tom猫说明已经成功
(2)。Apache 的安装:(采用源码编译安装的方式)
Apache的地址为:192.168.50.50
#tar xzvf httpd-2.2.17.tar.gz
#cd httpd-2.2.17
# ./configure --with-ldap --enable-mods-shared="all ssl ldap cache proxy authn_alias mem_cache file_cache authnz_ldap charset_lite dav_lock disk_cache"【此选项为编译所有的模块】
1. 测试
/usr/local/apache2/conf/httpd.conf 中设置
ServerName localhost
#cd /usr/local/apache2/bin
#./apachectl start
将出现类似httpd (pid 17040) already running的输出
访问地址:http://192.168.50.50
It works!hehe...
说明已经成功~\(≧▽≦)/~啦啦啦,(~ o ~)~zZ
二.(1)mod_proxy负载均衡配置
1.加载proxy模块
所有需要加载的代理模块为mod_proxy.so,mod_proxy.ajp.so,mod_proxy.http.so,mod_proxy.ftp.so,mod_proxy.connect.so,mod_proxy.balancer.so
由于已经将所有模块加载,所以不用在配置中做修改,即为/usr/local/apache2/conf/httpd.conf文件中的如下指令:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
2.配置虚拟主机proxyblancer
在/usr/local/apache2/conf/httpd.conf尾部添加Include conf/app1.conf
在conf/app1.conf 中添加以下内容:
Listen 8051
<VirtualHost *:8051>
ServerAdmin angel.zhu@99bill.com# 指定服务器管理员的E-MAIL地址,服务器自动将错误报告给该地址
ServerName localhost # web客户端搜索的主机名
ErrorLog "/opt/apache_log/app1_error.log"
CustomLog "/opt/apache_log/app1_access.log" common
ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On lbmethod=byrequests timeout=5 maxattempts=3
# balancer: 复制会话的方式,包括JSESSIONID或PHPSESSIONID ;nofailover:on 表示会话在worker出错或停掉时会中断,当后端服务器不支持会话复制时设为on ; lbmethod:选择负载的调度算法,默认byrequests表示轮询调度(就是1:1),bytraffic表示加权重的调度,需加loadfactor指定权重值。
ProxyPassReverse / balancer://cluster/ #此指令使Apache调整HTTP重定向应答中Location, Content-Location, URI头里的URL。这样可以避免在Apache作为反向代理使用时,后端服务器的HTTP重定向造成的绕过反向代理的问题。
#The ProxyRequests directive should usually be set off when using ProxyPass.
ProxyRequests Off# 不允许作为正向代理
ProxyPreserveHost On# 当启用时,此选项将把传入请求的"Host:"行传递给被代理的主机,而不是传递在ProxyPass中指定的主机名。
<proxy balancer://cluster>
BalancerMember ajp://192.168.55.229:8009 route=tomcat_a
BalancerMember ajp://192.168.55.231:8009 route=tomcat_b
# rout 值附加在session ID 后面
</proxy>
</VirtualHost>
此时访问http://192.168.50.50:8051,就出现了tom猫,说明apache已经来自8051端口的访问定向到tomcat服务器上。可是现在并看不出来是哪一台tomcat服务器,下面在两台tomcat中加入测试页面使效果更明显
2.在tomcat_a上面添加文件/usr/local/apache-tomcat-6.0.30/webapps/ROOT/test.jsp,内容为<font color=red>aaaaaaaaaaaaaaaaaa</font><b>
另一台tomcat_b上面添加文件:
/usr/local/apache-tomcat-6.0.30/webapps/ROOT/test.jsp,内容为
<font color=blue>bbbbbbbbbbbbbbbbb</font><b>
3.分别修改server.xml文件 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_a">
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_b">
另: 如果是jetty应用的话,就修改$jetty_home/etc/jetty.xml
<!-- =========================================================== -->
<Set name="sessionIdManager">
<New class="org.mortbay.jetty.servlet.HashSessionIdManager">
<Set name="workerName"> tomcat_a </Set>
</New>
</Set>
此时在问http://192.168.50.50:8080 /test.jsp,就会交替出现aaaaaaaaaaaaaaaaaa和bbbbbbbbbbbbbbbbb ,则表明测试成功。
二(2):mod_jk负载均衡配置
1. 由于mod_jk 为第三方模块,需要到tomcat官网下载,url为http://mirror.bjtu.edu.cn/apache//tomcat/tomcat-connectors/jk/source/jk-1.2.31/tomcat-connectors-1.2.31-src.tar.gz 。
2. 在Apache Server 上将jk 模块编译进apache中:
# tar xvfz tomcat-connectors-1.2.31-src.tar.gz
# cd tomcat-connectors-1.2.31-src/native/
./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/jdk
make && make install
此时在/usr/local/apache2/modules 下会出现一个mod_jk.so,则已编译成功。
3. 配置apache 的配置文件
1 vi vi /usr/local/apache2/conf/httpd.conf 添加以下内容:
LoadModule jk_module modules/mod_jk.so
<IfModule jk_module>
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn
</IfModule>
Include conf/app2.conf
2 创建并配置app2.conf文件
Listen 8052
<VirtualHost *:8052>
DocumentRoot "/usr/local/apache2/htdocs"
ServerName localhost
ServerAdmin app2.Admin@99bill.com
ErrorLog "/usr/local/apache2/logs/app2 error_log”
TransferLog "/usr/local/apache2/logs/app2 access_log"
JkMount /* tomcatbalancer
</VirtualHost>
3 创建并配置workers.properties文件
worker 是一个Tomcat 实例 ,用来处理从web server 来的servlet 请求,可以一个worker 或 多个worker,来实现加载平衡或网站分区。 每个worker 都向web server 注册其主机的ip 地址,端口号和通信协议。
vi /usr/local/apache2/conf/workers.properties,添加以下内容:
worker.list=tomcattest1
worker.tomcattest1.port=8009
worker.tomcattest1.host=192.168.55.229
worker.tomcattest1.type=ajp13
worker.tomcattest1.lbfactor=2
worker.list=tomcattest2
worker.tomcattest2.port=8009
worker.tomcattest2.host=192.168.55.231
worker.tomcattest2.type=ajp13
worker.tomcattest2.lbfactor=1
worker.list=tomcatbalancer
worker.tomcatbalancer.type=lb
worker.tomcatbalancer.balance_workers=tomcattest1,tomcattest2
1. 分别修改server.xml文件 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_a">
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_b">
另: 如果是jetty应用的话,就修改$jetty_home/etc/jetty.xml
<!-- =========================================================== -->
<Set name="sessionIdManager">
<New class="org.mortbay.jetty.servlet.HashSessionIdManager">
<Set name="workerName"> tomcat_a </Set>
</New>
</Set>
5 测试:
此时在问http://192.168.50.50:8052/test.jsp,就会交替出现aaaaaaaaaaaaaaaaaa和bbbbbbbbbbbbbbbbb ,并且bbbbbbbbbbbbbbbbb出现的平均次数是的2倍,这是因为worker.tomcattest2.lbfactor=1
worker.tomcattest1.lbfactor=2 权重的设置
Apache +Tomcat的负载均衡与集群配置的更多相关文章
- apache的tomcat负载均衡和集群配置 "
略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务 ...
- 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
第一章. 背景简介 对于大多数企业应用,都希望能做到7*24小时不间断运行.要保持如此高的可用性并非易事,比较常见的做法是将系统部署到多台机器上,每台机器都对外提供同样的功能,这就是集群.系统变为集群 ...
- 使用apache和nginx代理实现tomcat负载均衡及集群配置详解
实验环境: 1.nginx的代理功能 nginx proxy: eth0: 192.168.8.48 vmnet2 eth1: 192.168.10.10 tomcat server1: vmnet2 ...
- apache + tomcat 负载均衡分布式集群配置
Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...
- 基于apache的tomcat负载均衡和集群配置
最近不是很忙,用零碎时间做点小小的实验. 以前公司采用F5负载均衡交换机,F5将请求转发给多台服务器,每台服务器有多个webserver实例,每个webserver分布在多台服务器,交叉式的分布集群. ...
- 基于apache的tomcat负载均衡和集群配置session共享
接上面的话题接着继续完善.为什么没接到上篇呢?原因很简单太长的文章不爱看!就像有人写了上千行的方法一样,不是逼得没办法谁爱看谁看,反正我不看. 期间我没有一次配置成功,从失败的开始说起, 1.准备ja ...
- 基于nginx的tomcat负载均衡和集群
要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...
- Apache+Tomcat部署负载均衡(或集群)
本来只打算写Tomcat集群部署,简化Apache和Tomcat整合过程的.后来想了想,这样不便于没有用过Apache的朋友来学习本文内容.于是干脆加大篇幅,让对Apache不了解的朋友能对Apach ...
- 基于Apache的Tomcat负载均衡和集群(2)
反向代理负载均衡 (Apache+JK+Tomcat) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的.这种代理方式 ...
随机推荐
- android混合开发,webview的java与js互操作
android原生应用,用webview加载应用中的网页,并且java代码与js代码可以互相操作. 这是混合开发的基石,最基本也最重要的东西,实验代码在这里. 概括说说—— java调js:调用web ...
- 给NIOS II CPU增加看门狗定时器并使用
给NIOS II CPU增加看门狗定时器并使用 配置看门狗定时器: 设置计时溢出时间为1秒 计数器位宽为32位 勾选No Start/Stop control bits 勾选Fixed perio ...
- Tiny Rss简明安装与配置笔记
对于某些自己喜欢的却没有RSS订阅功能的网站,可以通过Feed43定制抓取规则来获取所需信息.但由于其服务器在国外,抓取时常失败,且免费账户抓取频率太低,遂仿造他自行实现了一个并挂到服务器上,然后通过 ...
- [课程设计]Scrum 2.1 多鱼点餐系统开发进度(下单列表布局)
[课程设计]Scrum 2.1 多鱼点餐系统开发进度(下单列表布局) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店 ...
- 编写一个JSP程序实现用户登录
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Windows计划任务执行时不显示窗口的问题
最近开发了工具,带界面的,需要定时执行的,为了方便直接用Windows计划任务做定时了.跑了一段时间发现,进程中也有,就是看不到程序的界面,进程的执行貌似也阻塞了. 从网上查了下,发现时启动方式的问题 ...
- [Python正则表达式] 字符串中xml标签的匹配
现在有一个需求,比如给定如下数据: 0-0-0 0:0:0 #### the 68th annual golden globe awards #### the king s speech earns ...
- HTML表格与列表
HTML表格 表格其实就是很多的小单元格,而这些小单元格很有次序的排列着,它们有很多行,很多列.这些很多行列组成的东西,就叫表格,表格是<table>标签来定义的.而<table&g ...
- php : 匿名函数(闭包) [二]
摘自: http://www.cnblogs.com/yjf512/archive/2012/10/29/2744702.html php的闭包(Closure)也就是匿名函数.是PHP5.3引入的. ...
- onethink使用经验
1 建议随时从oschina上下载onethink的最新版本,如果你遇到了怎么都解决不了的问题,比如菜单管理自定义菜单,左侧二级菜单不显示的问题,好像有一个历史版本就是有bug,好像是1.1开始的一个 ...