`
Netpet_11
  • 浏览: 4014 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat集群

 
阅读更多

配置Tomcat集群

多台服务器中,如何实现Session共享?现以Tomcat集群为例,学习一下。

 

软件环境:apache-tomcat-6.0.14 + apache_2.2.4-win32-x86-no_ssl.msi

 

以下是我在动手之前及动手之后总结的问题一览:

 

1、如何实现负载均衡。

 

2、如何实现Session共享。

 

3、如何对外提供服务,即可以通过局域网IP访问。

 

一、安装apache_2.2.4-win32-x86-no_ssl.msi。自行选择安装目录,如:J:\Apache2.2。Windows安装后,Apache会变成系统自启动服务,任务栏右下角显示Apache Monitor图标。

 

二、复制四份apache-tomcat-6.0.14,分别命名为:apache-tomcat-6.0.14-A,apache-tomcat-6.0.14-B,apache-tomcat-6.0.14-C,apache-tomcat-6.0.14-D。

 

 

三、修改配置文件:

 

1) 修改J:\Apache2.2\httpd.conf

首先,将以下Module的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用了代理的方法,就这么简单。

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

其次,找到<IfModule dir_module></IfModule>加上index.jsp修改成 

<IfModule dir_module> 
DirectoryIndex index.html index.jsp 
</IfModule> 

再次,找到【# Virtual hosts】,取消后续注释:

Include conf/extra/httpd-vhosts.conf

最后,在httpd.conf最末尾添加:

ProxyRequests Off 

ProxyPass / balancer://cluster/

<proxy balancer://cluster> 

BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1

BalancerMember ajp://127.0.0.1:8019 loadfactor=1 route=jvm2 

BalancerMember ajp://127.0.0.1:8029 loadfactor=1 route=jvm3

BalancerMember ajp://127.0.0.1:8039 loadfactor=1 route=jvm4 

 

</proxy>

 

2) 修改conf/extra/httpd-vhosts.conf,在文件最后添加:

<VirtualHost *:80> 

 ServerAdmin yourserver

 ServerName localhost 

 ServerAlias localhost 

 ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On lbmethod=bytraffic

 ProxyPassReverse / balancer://cluster/ 

</VirtualHost>

 

3) 修改Tomcat的server.xml

Tomcat-A:修改的最少,其中:

a、Engine选择【<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">】,注释【<Engine name="Catalina" defaultHost="localhost">】

b、Cluster选择【<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>】,取消注释即可,可以根据网上具体配置实现Cluster的不同方式,此处使用简单方式,没有其他配置。

Tomcat-B:改为

a、<Server port="8015" shutdown="SHUTDOWN">

b、<Connector port="8180" protocol="HTTP/1.1" 

c、<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />

d、<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2">类比Tomcat-A

e、<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>类比Tomcat-A

Tomcat-C:

a、<Server port="8025" shutdown="SHUTDOWN">

b、<Connector port="8280" protocol="HTTP/1.1" 

c、<Connector port="8029" protocol="AJP/1.3" redirectPort="8443" />

d、<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm3">类比Tomcat-A

e、<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>类比Tomcat-A

Tomcat-D:

a、<Server port="8035" shutdown="SHUTDOWN">

b、<Connector port="8380" protocol="HTTP/1.1" 

c、<Connector port="8039" protocol="AJP/1.3" redirectPort="8443" />

d、<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm4">类比Tomcat-A

e、<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>类比Tomcat-A

 

四、测试Apache负载均衡

a) 修改Tomcat中webapps\Root\index.jsp文件,根据不同Tomcat分别添加以下内容(在</table>和</body>之间,红色部分可变):

<% 

      System.out.println("tomcat6.0-A deal with request"); 

%>

b) 通过浏览器访问http://localhost/ 不停刷新,可以看到不同Tomcat的console都有输出。则说明:Apache服务器根据配置实现集群的负载均衡。

 

五、实现Session共享

a) 在Tomcat中webapps中添加test目录,并创建test.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.println("<b>Session 列表</b><br>");

  System.out.println("============================");

  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="test.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>

b) 为test项目添加WEB-INF文件夹,web.xml文件,内容如下:

<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"> 

       <display-name>TomcatDemo</display-name> 

       <distributable/> 

</web-app>

 

六、测试Tomcat集群Session共享

使用浏览器访问:http://localhost/test/test.jsp



 

 

 

  发现SessionId及每次提交到Session中内容在4台服务中得到共享。

 

七、对外提供服务,局域网内可访问

如果局域网内其他IP主机无法访问该服务,只能通过本地localhost 或者 127.0.0.1访问,请从以下找原因

a) 是否关闭防火墙,或者添加对该服务访问的入网规则,简单直白的方式是关闭防火墙。

b) httpd.conf中【Listen 80】不要【Listen 127.0.0.1】

c) httpd-vhosts.conf中【<VirtualHost *:80>】不要【<VirtualHost 127.0.0.1:80> 】

 

以上内容参考了以下内容:

1、http://www.iteye.com/topic/1017961

2、http://jiajun.iteye.com/blog/278586

3、http://itemdetail.iteye.com/blog/792671

 

PS:

个人总结:一般分布式系统的session管理分为三种:1.复制;上述样例即属于此种情况,弊端是存在明显瓶颈,多台主机之间相互复制session信息,急剧增加网络压力。2.设置专门session主机,其他主机通过网络连接共享session。3.将session信息通过cookie由用户浏览器本地管理,淘宝即采用此模式。

  • 大小: 65.9 KB
  • 大小: 59.4 KB
  • 大小: 63 KB
  • 大小: 72.3 KB
分享到:
评论

相关推荐

    tomcat集群配置

    【标题】:“Tomcat集群配置” 在Web应用的高可用性和可扩展性需求日益增长的今天,Tomcat集群成为了一个重要的解决方案。Tomcat集群能够通过负载均衡和故障转移来提高服务的稳定性和性能。以下是对Tomcat集群配置...

    tomcat集群部署.

    当我们需要处理高并发、负载均衡等需求时,单个Tomcat服务器可能无法满足,这时就需要进行Tomcat集群部署。下面将详细介绍Tomcat集群部署的相关知识点。 1. **集群的概念**: 集群是一种通过多台服务器协同工作来...

    tomcat集群配置 程序以及文档

    本资料包包含了“tomcat集群配置”的程序及文档,提供了现成的例子,帮助我们理解和实践Tomcat集群的搭建与管理。 首先,我们需要了解Tomcat集群的基本概念。集群是指多个Tomcat实例协同工作,它们共享相同的会话...

    Tomcat集群-负载平衡

    【标题】:Tomcat集群-负载平衡 在Java Web应用开发中,Apache Tomcat作为一款广泛应用的开源Servlet容器,常被用于部署和运行Java EE应用。然而,单一的Tomcat服务器可能无法满足高并发、高可用性和高可扩展性的...

    apache+tomcat集群配置

    Apache + Tomcat 集群配置 Apache + Tomcat 集群配置是指将 Apache 服务器与 Tomcat 服务器集成,以提高服务器的性能和可扩展性。本文将详细介绍如何配置 Apache + Tomcat 集群,包括安装 Apache 和 Tomcat 服务器...

    tomcat集群jar包

    在本场景中,我们关注的是“tomcat集群jar包”,这通常涉及到在多个Tomcat实例间分配工作负载以实现高可用性和可扩展性的技术。 集群的概念在分布式系统中非常重要,特别是对于像Tomcat这样的Web服务器。当单个...

    tomcat集群实现session复制

    在IT领域,特别是Web应用服务器的管理与优化中,Tomcat集群实现Session复制是一个关键的技术点,它确保了高可用性和负载均衡,特别是在处理大量并发请求的场景下。本文将深入探讨这一主题,涵盖其原理、配置方法以及...

    linux配置Tomcat集群

    ### Linux配置Tomcat集群知识点详解 #### 一、概述与目标 在Linux环境下配置Tomcat集群,主要目的是构建一个能够实现水平扩展、具备高可用性、支持负载均衡以及错误恢复能力的服务架构。通过集群的方式,可以提高...

    Tomcat集群与负载均衡

    ### Apache Tomcat 集群与负载均衡 #### 1. 集群相关简介 ##### 1.1 集群 集群是一组通过高速网络互相连接的计算机,它们作为一个整体协同工作,对外呈现出单一系统的特性。客户端与集群交互时,会感觉像在与一个...

    tomcat集群优化详细配置

    【Tomcat集群优化详细配置】 在IT行业中,服务器性能优化是一项关键任务,特别是在高并发、大规模用户访问的场景下。Tomcat,作为广泛使用的Java应用服务器,常常需要通过集群部署来提升系统的可用性和可伸缩性。...

    Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式-课程章节1

    【Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式】 这门课程是针对Java开发者设计的,旨在提升他们的企业级项目架构能力,特别是聚焦于Tomcat集群和Redis分布式缓存的应用。课程内容丰富,适合希望晋升...

    tomcat集群搭建详细步骤

    【Tomcat集群搭建详解】 Tomcat集群是一种将多个Tomcat服务器组织起来,共同提供服务的架构,以实现更高的可用性和可扩展性。集群的主要目的是在负载均衡和错误恢复的基础上,确保服务的连续性和性能。 **1. 集群...

    tomcat集群session共享解决方案

    在分布式系统中,Tomcat集群是一种常见的架构模式,用于提高应用程序的可用性和可扩展性。然而,当多个Tomcat实例组成一个集群时,session(用户会话)共享成为一个挑战,因为每个实例都有自己的内存空间,无法直接...

    Tomcat集群部署方案

    【Tomcat集群部署方案】 Apache Tomcat集群部署是提高Web应用程序可伸缩性和高可用性的常见策略。在集群环境中,多个Tomcat实例协同工作,共同处理来自客户端的请求,从而实现负载均衡和故障转移。本方案将详细介绍...

    tomcat集群配置文件

    当我们谈论“tomcat集群配置文件”时,我们指的是将多个Tomcat实例组织成一个集群,以提高应用程序的可用性和可伸缩性。在集群环境中,负载均衡、故障转移和资源共享是关键特性。 首先,要配置Tomcat集群,你需要...

    轻松配置linux Tomcat集群 PDF

    本篇内容将详细探讨如何在Linux环境中配置Tomcat集群,以提高系统的可用性和性能。 一、Linux基础 在开始配置之前,需要对Linux操作系统有一定的了解。熟悉基本的命令行操作,如文件管理、用户权限、网络设置等,这...

    tomcat集群部署方案

    ### Tomcat集群部署方案知识点详解 #### 一、集群概念及特性 **1.1 什么是集群** 集群是由多台独立的计算机通过网络连接组成的集合体,这些计算机共同协作完成任务,对外表现为单一的服务实体。集群的主要目的是...

Global site tag (gtag.js) - Google Analytics