Apache +Tomcat的负载均衡与集群配置

标签: apache tomcat 负载均衡 | 发表时间:2014-12-03 23:46 | 作者:himo.zhang
出处:http://www.iteye.com



实验拓扑图:


 


一.搭配环境

(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 [email protected]# 指定服务器管理员的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 [email protected]

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 权重的设置













 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [apache tomcat 负载均衡] 推荐:

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

- - 研发管理 - ITeye博客
基于apache的tomcat负载均衡和集群配置. httpd-2.2.15-win32-x86-no_ssl.msi    网页服务器. mod_jk-1.2.30-httpd-2.2.3.so             Apache/IIS 用来连接后台Tomcat的模块,支持集群和负载均衡.        JK 分为两个版本 1,x 和 2.x ,其中 2.x 并不是最新的版本,它是 JK 的另外一个分支,后不知何因没有继续开发,因此2.x 版本已经废弃.

Apache +Tomcat的负载均衡与集群配置

- - 企业架构 - ITeye博客
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的安装和配置可以参考我的博客:.

Apache+Tomcat+keepalived的负载均衡session复制及HA

- - 开源软件 - ITeye博客
0、关闭防火墙(service iptables stop; chkconfig --level 35 iptables off),.    关闭selinux vi /etc/selinux/config   SELINUX=disabled. setenforce 0 生效. 1、将mod_jk-1.2.31-httpd-2.2.x.so上传至/etc/httpd/modules目录下.

Linux下Apache+Tomcat搭建负载均衡服务器集群

- - 极客521 | 极客521
这篇文章主要讲解关于如何在Linux下搭建Apache+tomcat 负载均衡服务器集群的过程. 负载均衡集群配置(1):Tomcat的配置. 修改“ tomcat/conf/server.xml ”文件. 编辑server.xml文件,找到“ ”元素节点,在server.xml文件里面未注释掉的有两个 元素节点.

采用ajp代理模式配置Apache+tomcat实现负载均衡

- - 研发管理 - ITeye博客
这一种方法,配置简单,性能也高. apache 必须是2.2.x以上版本.       AJP是Apache提供的完成与其它服务器通讯的一种协议. 在Apache中通过mod_proxy_ajp模块发送AJP数据,另外一端的服务器需要实现AJP协议,能够接受mod_proxy_ajp模块发送的AJP协议数据,在接受到AJP协议数据后做适当处理,并能够将处理结果以AJP协议方式发送回给mod_proxy_ajp模块.

Apache负载均衡实战-session共享

- - 企业架构 - ITeye博客
              含Session共享. 下载Apache、tomcat.     2个或者多个tomcat. 将此文件添加到目录F:\Apache24\modules. 1 修改Apache conf目录下的httpd.conf. 2 新建mod_jk.conf文件. 在目录F:\Apache24\conf下添加文件,内容如下:.

Nginx+keepalived做双机热备加tomcat负载均衡

- - 开心平淡对待每一天。热爱生活
   Nginx+keepalived做双机热备加tomcat负载均衡. 一.Nginx配置. 1.安装Nginx所需pcre库. 2.安装Nginx. ./configure: error: SSL modules require the OpenSSL library.Centos需要安装openssl-devel Ubuntu则需要安装:sudo apt-get install libssl-dev.

实现基于nginx的tomcat负载均衡和集群配置

- - 互联网 - ITeye博客
今天看到"基于apache的tomcat负载均衡和集群配置 "这篇文章成为javaEye热点. 略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了.

apache安装、简单配置负载均衡和会话保持

- - ITeye博客
首先安装apache依赖的apr和apr-util. 1.下载(apr.apache.org/download.cgi)源文件, 如apr-1.5.1.tar.gz. 2.解压 tar -xzvf apr-1.5.1.tar.gz. 3.进入解压目录,依次执行. 4.下载(apr.apache.org/download.cgi)源文件, 如apr-util-1.5.4.tar.gz.

nginx+tomcat集群负载均衡中的多虚拟主机配置

- - C++博客-牵着老婆满街逛
关键词:nginx tomcat 多虚拟主机 集群 负载均衡. 虽然夜深了,但是还是解决了这个困扰我一个晚上的问题,记录下来备查. 接着我前不久写的这一篇来的:Linux下nginx和tomcat的整合 http://hi.baidu.com/gnaiqeh/blog/item/2f43dac9e98d781a7f3e6fc7.html.