实验拓扑图:

一.搭配环境

(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: 复制会话的方式,包括JSESSIONIDPHPSESSIONID 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的负载均衡与集群配置的更多相关文章

  1. apache的tomcat负载均衡和集群配置 "

    略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务 ...

  2. 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置

    第一章. 背景简介 对于大多数企业应用,都希望能做到7*24小时不间断运行.要保持如此高的可用性并非易事,比较常见的做法是将系统部署到多台机器上,每台机器都对外提供同样的功能,这就是集群.系统变为集群 ...

  3. 使用apache和nginx代理实现tomcat负载均衡及集群配置详解

    实验环境: 1.nginx的代理功能 nginx proxy: eth0: 192.168.8.48 vmnet2 eth1: 192.168.10.10 tomcat server1: vmnet2 ...

  4. apache + tomcat 负载均衡分布式集群配置

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  5. 基于apache的tomcat负载均衡和集群配置

    最近不是很忙,用零碎时间做点小小的实验. 以前公司采用F5负载均衡交换机,F5将请求转发给多台服务器,每台服务器有多个webserver实例,每个webserver分布在多台服务器,交叉式的分布集群. ...

  6. 基于apache的tomcat负载均衡和集群配置session共享

    接上面的话题接着继续完善.为什么没接到上篇呢?原因很简单太长的文章不爱看!就像有人写了上千行的方法一样,不是逼得没办法谁爱看谁看,反正我不看. 期间我没有一次配置成功,从失败的开始说起, 1.准备ja ...

  7. 基于nginx的tomcat负载均衡和集群

    要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...

  8. Apache+Tomcat部署负载均衡(或集群)

    本来只打算写Tomcat集群部署,简化Apache和Tomcat整合过程的.后来想了想,这样不便于没有用过Apache的朋友来学习本文内容.于是干脆加大篇幅,让对Apache不了解的朋友能对Apach ...

  9. 基于Apache的Tomcat负载均衡和集群(2)

    反向代理负载均衡 (Apache+JK+Tomcat) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的.这种代理方式 ...

随机推荐

  1. configure.ac:32: error: possibly undefined macro: AC_DEFINE

    在ubuntu 下编译snappy时,在检查依赖关系时,处理autoconf的包时,在相关依赖包都已经安装的情况下,报如下错误,死活不过. configure.ac:32: error: possib ...

  2. Servlet-cookies机制

    通过cookies,可以保存用户的使用习惯,优化用户体验,同时能减轻服务端压力.下面说下在Servlet中cookies机制的使用 就用保存用户登录数据来举例子: 打开网页的处理Servlet: pa ...

  3. 假如 Micromedia 没被收购,会不会早于 Apple 推动 H5、CSS3 的发展

    看着如今大行其道的 H5.CSS3,想想当年的“网页三剑客”,不禁感慨:假如 Micromedia 没被收购,会不会早于 Apple 推动 H5.CSS3 的发展? 当时 Apple 先是询问 Ado ...

  4. dr.wondr博士随笔之三星某古董智能机GTXXXX 的取证恢复一例

    大家好!欢迎来到我dr.wonde博士的微博! 这是dr.wonde的第一篇微博,不足之处,还请见谅. 今天dr.wonde给你们带来不可能的数据恢复任务之三星非智能机古董机GT-E1088C 的恢复 ...

  5. linux线程的实现【转】

    转自:http://www.cnblogs.com/zhaoyl/p/3620204.html 首先从OS设计原理上阐明三种线程:内核线程.轻量级进程.用户线程 内核线程 内核线程就是内核的分身,一个 ...

  6. mac上安装Navicat Premium 破解版+汉化包

    Navicat是一款非常强大的sql分析管理工具.以前一直在windows上面使用. 由于工作的需要,我也是折腾出了这不易的mac破解版.下了好多网上的版本,亲测这个可用. 俗话说:工欲善其事,必先利 ...

  7. jQuery判断元素是否存在方法

    1.使用javascript判断元素是否存在 if(document.getElementById('div')) { } else { } 2.使用jquery判断元素是否存在 if ($(&quo ...

  8. [转载]win32 计时器使用

    在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位机定时向下位机发送命令和传送数据等.特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要精 ...

  9. CRM系统简析

    寄语: 简单阐述一下对CRM系统应用的理解,此内容参考网上资料所整理. CRM是Customer Relationship Management的缩写,简称客户关系管理. CRM系统可以从三个方面来分 ...

  10. UI设计的分类

    软件UI设计(界面设计包括硬件界面设计和软件界面设计,我们这里探讨的是软件界面设计)包括用户研究.交互设计.与界面设计三部分.   1,用户研究 我们再产品开发的前期,通过调查研究,了解用户的工作性质 ...