本文转自
( http://blog.csdn.net/quqi99 )
一. 环境说明
1. 服务器3 台,一台安装apache 服务,两台安装tomcat
2. 使用到的各个组件及下载地址:
apache_2.2.11-win32-x86-no_ssl.msi
http://httpd.apache.org/download.cgi
tomcat 6 压缩版
http://tomcat.apache.org/download-60.cgi
apache 的JK 连接器(Windows 版本),作为apache 的一个module ,网站同时提供了配置文件的使用方法
mod_jk-1.2.28-httpd-2.2.3.so
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.28/
3.ip 配置
一台安装apache 的ip 为192.168.1.50 ,两台安装tomcat 的ip 分别为192.168.1.24 和192.168.1.52 (根据各自情况分配)
二.安装过程
1. 在两台安装tomcat 的机器上安装jdk6 (至少jdk5 )
2. 配置jdk 的安装路径, 在环境变量path 中加入jdk 的bin 路径, 新建环境变量JAVA_HOME 指向jdk 的安装路径
3. 安装tomcat ,并测试tomcat 的启动是否正常
http://192.168.1.24:8080
http://192.168.1.50:8080
三.负载均衡配置过程
1. 在192.168.1.50 机器上安装apache 服务,我的安装路径默认为:D:/Program Files/Apache Software Foundation/Apache2.2
2. 安装完成后测试能否正常启动,http://192.168.1.50 ,如图所示:
3. 将mod_jk-1.2.28-httpd-2.2.3.so 拷贝到apache 的modules 目录下
2. 修改apache 的配置文件 httpd.cof ,在最后加上下面这段话:
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so # 载入jk 连接器
JkWorkersFile conf/workers.properties # 设置负载均衡的配置文件,即定义均衡规则
JkLogFile logs/mod_jk.log # 指定日志文件
JkLogLevel debug # 指定日志级别
# 配置apache 将哪些请求转发给JK 进行均衡
JkMount /*.jsp loadbalancer
JkMount /test/* loadbalancer
3. 分别修改两个tomcat 的配置文件conf/server.xml 文件
修改前:
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host).
Documentation at /docs/config/engine.html -->
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
修改后:
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host).
Documentation at /docs/config/engine.html -->
<!-- You should set jvmRoute to support load-balancing via AJP ie : -->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">
<Engine name="Catalina" defaultHost="localhost" >
将其中的jvmRoute="jvm1" 分别修改为jvmRoute="node1" 和jvmRoute="node2"
4. 在apache 的conf 目录下创建workers.property 文件,输入以下内容:
# fine the communication channel
# 定义负载均衡的所有主机名,和前面tomcat 配置文件的JVMroute 属性相对应
# 其中的loadbalancer 是虚拟的主机,负责负载均衡,姑且当成是apache 本身
worker.list=node1,node2,loadbalancer
# node1 使用AJP 与JK 通讯
worker.node1.port=8009 # 工作端口,若没占用则不用修改
worker.node1.host=192.168.1.24 # node1 的地址为localhost ,如果tomcat 在其他服务器则输入该服务器的地址
worker.node1.type=ajp13 # 类型
worker.node1.lbfactor=100 # 负载平衡因数
worker.node2.port=9009 # 工作端口,若没占用则不用修改
worker.node2.host=192.168.1.52 #node2 服务器的地址
worker.node2.type=ajp13 # 类型
worker.node2.lbfactor=100 # 负载因子,值越大则JK 分发到此tomcat 的负荷越多
# 定义loadbalancer 类型为“负载均衡器(lb )”
worker.loadbalancer.type=lb
# 定义loadbalancer 进行负载均衡的对象
worker.loadbalancer.balanced_workers=node1,node2
worker.loadbalancer.sticky_session=false
worker.loadbalancer.sticky_session_force=false
5. 在两个tomcat 的安装目录中的webapps 建立相同的应用,我的应用名为test ,在两个应用目录中建立相同 WEB-INF 目录和页面test.jsp 的页面内容如下
<%@ page language = "java" contentType = "text/html; charset=ISO-8859-1"
pageEncoding = "GBK" %>
<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=ISO-8859-1" >
< title > helloapp </ title >
</ head >
< body >
<%
System.out.println( "call test.jsp" ); // 在Tomcat 控制台上打印一些跟踪数据
%>
SessionID: <%= session.getId() %>
</ body >
</ html >
6. 重启 apache 服务器和两个 tomcat 服务器,到此负载均衡已经配置完成,测试负载均衡: http://192.168.1.50/test/test.jsp , 运行正常则已建立负载均衡
四.集群配置
1. 负载均衡的条件下配置tomcat 集群
2 .分别修改两个tomcat 的配置文件conf/server.xml, 修改内容如下
修改前:
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
修改后:
< Cluster className = "org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions = "8" >
< Manager className = "org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown = "false" notifyListenersOnReplication = "true" />
< Channel className = "org.apache.catalina.tribes.group.GroupChannel" >
< Membership
className = "org.apache.catalina.tribes.membership.McastService"
bind = "192.168.1.100" address = "228.0.0.4" port = "45564" frequency = "500"
dropTime = "3000" />
< Receiver
className = "org.apache.catalina.tribes.transport.nio.NioReceiver"
address = "auto" port = "4000" autoBind = "100" selectorTimeout = "5000"
maxThreads = "6" />
< Sender
className = "org.apache.catalina.tribes.transport.ReplicationTransmitter" >
< Transport
className = "org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
</ Sender >
< Interceptor
className = "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />
< Interceptor
className = "org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />
</ Channel >
< Valve className = "org.apache.catalina.ha.tcp.ReplicationValve" filter = "" />
< Valve className = "org.apache.catalina.ha.session.JvmRouteBinderValve" />
< Deployer className = "org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir = "/tmp/war-temp/" deployDir = "/tmp/war-deploy/"
watchDir = "/tmp/war-listen/" watchEnabled = "false" />
< ClusterListener
className = "org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" />
< ClusterListener
className = "org.apache.catalina.ha.session.ClusterSessionListener" />
</ Cluster >
注意:bind 是tomcat 服务器所在的机器的ip 地址
3. 重启两个tomcat ,到此tomcat 的集群配置完成
五.应用配置
对于要进行负载和集群的的tomcat 目录下的webapps 中的应用中的WEB-INF 中的web.xml 文件要添加如下一句配置
<distributable/>
配置前:
<? xml version = "1.0" encoding = "UTF-8" ?>
< web-app id = "WebApp_ID" version = "2.4"
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" >
< display-name > test </ display-name >
< distributable />
< welcome-file-list >
< welcome-file > index. html </ welcome-file >
< welcome-file > index. htm </ welcome-file >
< welcome-file > index. jsp </ welcome-file >
< welcome-file > default. html </ welcome-file >
< welcome-file > default. htm </ welcome-file >
< welcome-file > default. jsp </ welcome-file >
</ welcome-file-list >
</ web-app >
六.测试集群
重新启动apache 服务器和两个tomcat 服务器,输入地址:http://192.168.1.50/test/test.jsp
运行结果如下:
如果同一个浏览器的sessionID 不变,则集群配置成功
分享到:
相关推荐
《Tomcat学习笔记》 Tomcat是一款开源的Java Servlet容器,是Apache软件基金会下的Jakarta项目中的核心项目,主要用于运行Java ...后续的学习可以扩展到Tomcat的性能优化、集群配置以及与其他应用服务器的集成等方面。
**方法二:使用Tomcat集群配置Session共享** 1. 在`server.xml`中取消注释`<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>`行。 2. 配置集群内的实例能够互相通信。 **方法三:使用Redis实现...
Tomcat实战笔记详细介绍了Apache Tomcat服务器,这是一个由Apache软件基金会管理的Jakarta项目核心产品。Tomcat作为一个开源Web应用服务器,常用于中小型系统中,特别是在并发访问用户数量不是很多的情况下,它是一...
在Linux环境下配置Tomcat集群以实现负载均衡是提高Web应用性能和可用性的重要步骤。Tomcat作为Apache软件基金会的开源Java Servlet容器,广泛应用于各种规模的企业级应用部署。本教程将详细阐述如何在Linux系统中...
### Tomcat 6 学习笔记 #### 一、Tomcat 6 平台搭建与配置 ##### 1. 下载与安装 Tomcat 6 是一个免费且开源的Servlet容器,由Apache软件基金会下的Jakarta项目开发。可以通过官方网站进行下载:...
【标题】:Tomcat学习笔记 【正文】: Tomcat是一款广泛应用的开源Web服务器和Java Servlet容器,由Apache软件基金会的Jakarta项目开发。它实现了Java Servlet和JavaServer Pages(JSP)规范,并且作为轻量级应用...
本文将详细介绍如何在CentOS 6.5系统上搭建一个基于Nginx、Tomcat和Memcached的负载均衡集群,以实现高效的Session共享和服务器间的负载分配。 首先,Nginx作为一个反向代理服务器和负载均衡器,其主要职责是接收...
4. **Cluster**:如果配置了集群,Tomcat可以处理负载均衡和故障转移,确保高可用性和可扩展性。 5. **Naming and Directory**:Tomcat支持JNDI(Java Naming and Directory Interface),允许应用查找和绑定资源,...
2. 高可用性:Redis支持主从复制和集群模式,可以提供高可用的会话存储。 3. 性能提升:与基于硬盘的会话存储相比,Redis作为内存数据库能提供更快的会话读取速度。 4. 数据持久化:Redis支持多种数据持久化策略,...
### Redis入门到集群部署知识点详解 #### 一、Redis简介及优势 **Redis**(Remote Dictionary Server)是一种开源的键值存储系统,以其高性能、低延迟的特点被广泛应用于多种场景,尤其是在缓存、消息队列等领域...
SpringBoot是Spring框架的一个扩展,它旨在简化Spring应用程序的开发过程,通过内嵌的Servlet容器如Tomcat或Jetty,可以快速构建出可独立运行的应用程序。在SpringBoot 2.1.6这个学习版本中,其主要特性包括: 1. *...
本章可能涉及Tomcat的安装、部署Web应用、性能优化,以及通过Nginx或其他工具实现Tomcat集群的负载均衡,以提高服务的并发处理能力和稳定性。 第六章 LVS负载均衡群集:Linux Virtual Server (LVS) 是一种高性能的...
为了适配分布式环境,需要对Tomcat的server.xml文件进行一系列修改,包括调整监听端口、设置AJP connector参数、以及配置engine元素的jvmRoute属性,确保每个Tomcat实例能够被唯一标识,以便于负载均衡器正确地分配...
9. **集群与负载均衡**:理解如何配置Tomcat集群,实现负载均衡,提高服务的可用性和可扩展性。 10. **故障排查**:学习查看和解析日志,定位和解决问题,以及使用JMX进行远程监控。 【标签】"系统开源"表明Tomcat...
Nginx 可以与 Tomcat 集成,实现高性能的负载均衡集群。Nginx 作为反向代理服务器,Tomcat 作为应用服务器。 Nginx 与 Spring Boot 集成 Nginx 可以与 Spring Boot 集成,实现高性能的反向代理和负载均衡。Nginx ...
solr 学习笔记主要涵盖了 Solr 的基本安装与配置,以及 Solr 服务器复制的配置,这些都是初学者需要掌握的基础知识。 Solr 是一款基于 Lucene 的全文搜索引擎,广泛应用于大数据检索和文本分析。在安装 Solr 时,...
这个压缩包中的笔记可能涵盖了这些内容的详细讲解,包括代码示例、配置示例以及实践经验分享。对于想要深入理解和使用SpringBoot的开发者来说,这是一份非常宝贵的资源。通过阅读和学习这些笔记,你可以更好地掌握...
12. **测试与部署**:包括单元测试、集成测试,以及应用的部署配置,如WAR或EAR文件的发布,负载均衡和集群配置等。 以上知识点构成了Java Web开发的基本脉络,通过深入学习和实践,可以构建出功能完备、性能良好的...
而Solr是一个完整的服务器解决方案,它在Lucene的基础上封装了许多功能,如配置管理、集群支持、分布式搜索等,使得部署和使用更加便捷。 四、Solr的安装与配置 安装Solr通常包括以下步骤: 1. 下载相应版本的...