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 admin@yoursite.com.cn
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+Linux集群和负载均衡 在IT领域,Apache+Tomcat+Linux集群与负载均衡技术是实现高可用性、高性能Web服务的重要手段之一。本文将围绕这一主题展开详细讨论,涵盖关键技术概念、配置流程及注意事项...
通过以上步骤,我们完成了在 Red Hat Linux 9.0 上安装 Apache、Tomcat 和 Mod_jk 的过程,并进行了简单的负载均衡配置。这些配置能够帮助我们更好地管理应用服务器集群,提高系统的稳定性和性能。当然,实际部署时...
这里有两个Tomcat实例,`tomcat1`和`tomcat2`,它们都通过AJP13协议与Apache通信,并由`loadbalancer`进行负载均衡。 最后,确保Tomcat的`service.xml`文件中每个实例的`jvmRoute`属性与`workers.properties`中的...
通过以上内容,我们可以了解到如何在Apache和Tomcat之间搭建负载均衡集群,理解Tomcat的工作原理,掌握配置Tomcat的技巧,并了解如何优化服务器性能,提升用户体验。这些知识对于运维人员和开发人员在构建高效、稳定...
通过以上分析,我们了解到在LVS环境下实现session共享的关键在于正确配置负载均衡器和后端服务器之间的关系,并且需要在后端的应用服务器(如Tomcat)上做出相应的调整。正确的session共享配置不仅可以提升用户体验...
Apache2.2+JBOSS 5 集群配置主要涉及在Linux环境下构建高可用性和负载均衡的服务器集群,以提升应用服务的稳定性和处理能力。以下是详细的知识点: 1. **JBoss集群架构**: JBoss 集群可以采用两种架构:客户端...
对于大型应用,Tomcat6支持集群配置,通过复制session和负载均衡,可以实现高可用性和扩展性。这需要了解Cluster和Load Balancer的相关配置。 9. **集成及其他** Tomcat6可与其他服务器如Apache HTTP Server进行...
通过配置`cluster`和`LoadBalancer`模块,可以实现Tomcat实例间的通信和负载分发,提高系统可用性和容错性。 10. **JNDI资源**: Tomcat6支持JNDI(Java Naming and Directory Interface),允许在全局环境中定义...
Web负载均衡器可以是专门的硬件设备,如F5 Load Balancer,也可以是带有负载均衡插件的服务器,甚至是一些嵌入式Linux设备。HTTPSession失败接管则需要服务器定期保存session数据,并在故障发生时快速恢复,通常采用...
8. **集群与负载均衡**:对于大型项目,可能需要配置Tomcat集群以实现负载均衡和故障转移。这需要在`server.xml`中配置Cluster和Load Balancer元素,并使用适当的通信机制如JGroups。 9. **国际化与多语言支持**:...
阿里云提供了丰富的云产品,如ECS(Elastic Compute Service,弹性计算服务)用于搭建服务器,RDS(Relational Database Service,关系型数据库服务)用于数据库管理,以及SLB(Server Load Balancer,负载均衡服务...