loadbalancer linux下tomcat负载均衡配置

loadbalancer linux下tomcat负载均衡配置:
(转:出处:http://blog.csdn.net/hanzhibo/archive/2008/04/11/2282959.aspx)

一. 所需要的硬件环境
1.2台或是3台linux服务器,
  如果是2台服务器的话,每台服务器各安装一个tomcat应用服务器,再在其中任一台服务器上安装apache做负载均衡中间件。
  如果是3台服务器的话那就更方便了,2台服务器安装tomcat,另外一台安装apache。

二. 所需要的软件环境
1.apache: httpd-2.2.6.tar.gz
2.tomcat: apache-tomcat-5.5.26.zip
3.jk:mod_jk-1.2.23-apache-2.2.x-linux-i686.so

三. 安装过程实现
1.apache安装:
  <1> 把httpd-2.2.6.tar.gz 拷贝到 /usr/local 目录下
  <2> 执行解压及安装命令
       1)tar xvzf httpd-2.2.6.tar.gz
       2)cd httpd-2.2.6
       3)./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared="proxy proxy_http proxy_ftp proxy_connect headers"
       4)make
       5)make install
       6)cd /usr/local/apache/bin/
       7)./apachectl configtest                         ##若显示Syntax ok则表明安装成功
       8)./apachectl start  或是 httpd -k start         ##启动apache 默认是占用端口80
       9)./apachectl stop   或是 httpd -k stop          ##停止apache 默认是占用端口80
      10)访问apache是否成功:http://199.5.211.252:80 或是 http://199.5.211.252/ 页面输出 IT WORK!说明apache配置成功了。

2.安装tomcat
  <1> tomcat的安装比较简单,最简单的方式是先在windows下解压缩apache-tomcat-5.5.26.zip为apache-tomcat-5.5.26。
  <2> 解压缩后把apache-tomcat-5.5.26改名tomcat1,并拷贝完整一份tomcat1后改名为tomcat2.然后分别上传至两台linux服务器上去,目录是/usr/local/。
  <3> 分别测试tomcat安装是否正常。
      分别进入/usr/local/tomcat1/bin 和 /usr/local/tomcat2/bin 目录下,
      用命令启动tomcat: ./startup.sh 默认tomcat占用的是8080端口,测试是否启动成功: http://199.5.211.253:8080 如果输出tomcat的console页面说明启动成功。
      停止tomcat的命令是:./shutdown.sh
 
3.安装jk
  <1>安装jk非常的简单,只需要把 mod_jk-1.2.23-apache-2.2.x-linux-i686.so 拷贝到 /usr/local/apache/modules 目录下即可。

三. 所需要修改的配置文件
1.apache配置文件的修改
  <1> 打开/usr/local/apache/conf/httpd.conf 在最下面添加如下几行代码:
        # added by sam 20080410 加入指定mod_jk配置文件路径
#Load mod_jk
LoadModule jk_module modules/mod_jk-1.2.23-apache-2.2.x-linux-i686.so    #加载jk软件
#Configure mod_jk
JkWorkersFile conf/workers.properties                                    #加载workers.properties文件,这个文件是新增的。

NameVirtualHost 199.5.211.252:80                                         #设置apache所在的机器的IP地址及占用的端口号
<VirtualHost 199.5.211.252:80>                                           #设置apache所在的机器的IP地址及占用的端口号
  ServerAdmin [email protected]
  ServerName 199.5.211.252:80                                      #设置apache所在的机器的ServerName及占用的端口号 填写IP地址即可。
  ServerAlias 199.5.211.252                                        #设置apache所在的机器的别名
  JkLogFile logs/mod_jk.log                                        #设置apache所在的机器中用到的JK的log存放路径及文件名称
  JkLogLevel error        
# JkLogLevel info
  JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
  JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
  JkRequestLogFormat "%w %V %U %T"
  JkMount /* loadbalancer                                        
</VirtualHost>
  <2> 新增workers.properties文件
      内容如下:
        ps=\
# Define 4 workers, 3 real workers using ajp12, ajp13, jni, the last one being a loadbalancing worker
worker.list=loadbalancer
# Set properties for worker1 (ajp13)
worker.tomcat2.type=ajp13
worker.tomcat2.host=199.5.211.253       #设置负载均衡的tomcat的服务器的IP地址
worker.tomcat2.port=8009                #设置负载均衡的tomcat的服务器的监听端口
worker.tomcat2.lbfactor=1
worker.tomcat2.cachesize=100
worker.tomcat2.cache_timeout=1800
worker.tomcat2.socket_keepalive=1
worker.tomcat2.socket_timeout=60

worker.tomcat1.type=ajp13
worker.tomcat1.host=199.5.211.251      #设置负载均衡的另一台tomcat的服务器的IP地址
worker.tomcat1.port=8009               #设置负载均衡的另一台tomcat的服务器的监听端口
worker.tomcat1.lbfactor=1
worker.tomcat1.cachesize=100
worker.tomcat1.cache_timeout=1800
worker.tomcat1.socket_keepalive=1
worker.tomcat1.socket_timeout=60
#worker.worker1.prepost_timeout=9000

worker.loadbalancer.type=lb
#worker.loadbalancer.sticky_session_force=true
worker.loadbalancer.balance_workers=tomcat2,tomcat1  #设置负载均衡的tomcat的名称,与实际的几个tomcat的名称和个数要一致。

  <3> 上面的配置中有几点需要注意:
        1.
   1) worker.list中只能出现loadbalance的worker名字,不能出现属于loadbalance的成员的worker名字(如worker1)。
   2) 注意loadbalance所用worker的端口等。
   3) 这里worker1,worker2需要和相应的tomcat的conf目录中server.xml配置的jvmRoute一致。
2. 修改httpd.conf
    这里注意是修改虚拟主机部分JkMount 设置为loadbalance worker的名字。JkMount /* loadbalancer

  <4>  配置tomcat
打开负载均衡用的的/usr/local/tomcat/conf目录下的server.xml文件。为Engine配置对应worker.properties文件中的jvmRoute。
原来的Engine:
<Engine name="Catalina" defaultHost="localhost" debug="0" >
修改为:
<Engine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="tomcat1">
注意:需要修改每一个用到的tomcat server.xml对应的jvmRoute。
tomcat2修改为:
<Engine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="tomcat2">
同理:多个tomcat的配置如上所示,依次配置。


  <5> 到这里配置就完成了。首先启动tomcat,然后启动apache。如果没有错误,说明配置成功。

四. 测试
1.新建jsp测试页面:
  代码如下所示,另存为index.jsp
        <%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
   out.println("<br> ID " + session.getId()+"<br>");  // 如果有新的 Session 属性设置
   String dataName = request.getParameter("dataName");
   if (dataName != null && dataName.length() > 0) {
      String dataValue = request.getParameter("dataValue");
      session.setAttribute(dataName, dataValue);
   }  out.print("<b>Session 列表</b>");  Enumeration e = session.getAttributeNames();
   while (e.hasMoreElements()) {
      String name = (String)e.nextElement();
      String value = session.getAttribute(name).toString();
      out.println( name + " = " + value+"<br>");
   System.out.println( name + " = " + value);
    }
%>
   <form action="index.jsp" method="POST">
     名称:<input type=text size=20 name="dataName">
      <br>
     值:<input type=text size=20 name="dataValue">
      <br>
     <input type=submit>
    </form>
</body>
</html>

2.分别在两个tomcat目录下,即在/usr/local/tomcat/webapps 下新建test目录并分别把index.jsp放入test目录,并在test目录下新建WEB-INF目录,在WEB-INF目录下新建web.xml文件,内容如下所示:
        <?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
     version="2.4">
  
</web-app>

3.分别启动apache和2个tomcat服务器,进行测试访问,
  正确的效果是访问apache的http://199.5.211.252:80/test/index.jsp  或是 http://199.5.211.252/test/index.jsp   显示的应该是访问tomcat应用的页面,
  即与访问 http://199.5.211.251:8080/test/index.jsp 和 http://199.5.211.253:8080/test/index.jsp的效果是一样的,而不应该输出 IT WORK 页面。
  这样的话就形成了apache的代理的负载均衡的效果了。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hanzhibo/archive/2008/04/11/2282959.aspx

你可能感兴趣的:(apache,tomcat,应用服务器,jsp,linux)