网站的集群部署动态部分可以采用tomcat的session复制功能,事实表明,在并发量达到一定数量级的情况下,用session复制功能会引起性能问题,这几天研究了下MSM的一个开源项目,本部署方式也基与此,主要解决:
- tomcat的单点故障问题;
- tomcat集群;
- nginx负责均衡,采用默认IP分发方式;
- 一个简单的web程序测试
测试环境:Linux CentOS版
步骤如下:
- 安装nginx;
- 在Linux的/usr/local下放置两个tomcat6,并修改相应的端口;
- 在Linux上安装MemCached最新版,启动memcached;
- 一个最简单的登录程序部署到tomcat6上,模拟登录;
- 修改Tomcat的server.xml,如下(其中memLogin为工程名):
- <Context path="/memLogin" docBase="memLogin" reloadable="true" source="org.eclipse.jst.jee.server:memLogin">
-
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
-
memcachedNodes="n1:192.168.1.6:11211"
-
sticky="false"
-
lockingMode="auto"
-
requestUriIgnorePattern=".*\.(swf|ico|png|gif|jpg|css|js)$"
-
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
-
/>
-
</Context>
<Context path="/memLogin" docBase="memLogin" reloadable="true" source="org.eclipse.jst.jee.server:memLogin">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.6:11211"
sticky="false"
lockingMode="auto"
requestUriIgnorePattern=".*\.(swf|ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>
测试过程(修改hosts文件,将www.test.com到192.168.1.6):
输入:http://www.test.com/memLogin,如下图:
登录后:
可以发现,目前用的是tomcat1,现在在Linux上关闭tomcat1,通过负载均衡让其使用tomcat2,看session是否能保持,关闭后,在当前页面刷新,如下图:
可以看到,现在已经使用tomcat2了,但session仍然保持着。
以上的部署过程基于nginx+tomcat6!
分享到:
相关推荐
在构建分布式Web应用程序时,集群部署是常见的策略,它可以提高系统的可用性和可扩展性。然而,随着集群的建立,一个问题也随之出现:如何在不同的服务器之间共享用户会话(session)。`session共享`成为了多台...
Apache 和 Tomcat 集群配合 Session 复制是一种常见的高可用性和负载均衡解决方案,尤其适用于大型网站和企业级应用。以下将详细解释这个方案的关键点。 **整体方案策略** 1. **部署逻辑图** 部署逻辑通常包括...
2. **选择session复制策略**:Tomcat提供了几种session复制策略,包括基于内存的复制和基于JDBC的复制。在这个场景下,我们将采用基于第三方存储的策略,即使用`org.apache.catalina.session.PersistentManagerBase`...
- **实现方便**:大多数应用服务器如Tomcat、JBoss等已经内置了session复制功能。 - **高可用性**:通过session复制可以在多台服务器之间保持session的一致性。 **缺点**: - **性能瓶颈**:随着服务器数量的增加,...
【网站集群部署设计方案】 网站集群部署是一种为了提高网站性能、可用性和可扩展性的技术策略,其核心目标是通过多台服务器协同工作,分散系统压力,加快用户访问速度,实现自动备份,防止因单点故障导致整个系统...
本文将详细介绍如何在Windows环境下,利用Nginx作为反向代理服务器,与Tomcat集群配合实现负载均衡,并进行session复制,确保用户会话在不同服务器之间的一致性。 首先,Nginx是一款轻量级、高性能的HTTP和反向代理...
在分布式系统环境中,Web项目的集群部署能够提供高可用性和负载均衡,但同时也引入了一个问题:如何在多个服务器之间共享Session信息。"web项目集群时共享session方案实践"的主题旨在探讨和解决这一挑战。以下是关于...
### Nginx、Tomcat与MyBatis集群部署详解 #### 一、负载均衡与Session共享概述 在当今互联网时代,随着用户量的急剧增加,如何确保网站能够承受大规模并发访问成为了众多中小型网站亟需解决的关键问题之一。单一...
2. **配置Tomcat**:修改Tomcat的`context.xml`文件,引入一个session复制的实现,比如`JedisCluster`(Redis客户端)。设置session的存储策略为`org.apache.catalina.session.ManagerBase`,并配置Redis连接参数。 ...
2. **选择Session复制策略**:Tomcat提供了几种Session复制策略,如黏滞会话(Sticky Sessions)、基于网络的复制(Network-based Replication)等。黏滞会话将用户的请求始终定向到最初创建Session的节点,而基于...
会话保持简单但可能导致负载不均,会话复制可能在大型集群中不稳定,而会话共享则需要额外的存储资源。在实际部署时,应根据系统的负载情况、可扩展性需求和安全性考虑来综合选择最合适的策略。在某些情况下,可能还...
3. **Session复制问题** 在无共享的Tomcat集群中,每个服务器都有自己的内存来存储Session,当用户请求被路由到不同的服务器时,Session信息无法跨服务器共享。这可能导致用户登录状态丢失或者其他与Session相关的...
这种方式适用于大型集群,但配置复杂,且需要额外的JNDI服务支持。 要实现这些机制,Tomcat通常会依赖一些特定的jar包,例如: - **`tomcat-cluster.jar`**:包含了Tomcat集群相关的类和接口,用于实现session复制...
4. **配置Session复制策略**:在`web.xml`中,可以通过`<distributable/>`标签声明应用可分布式部署,这样Tomcat就会启动Session复制功能。 5. **测试和优化**:部署应用后,通过并发用户进行测试,确保Session在...
这表明用户将学习如何设置和操作集群环境,以及如何从头开始配置Tomcat以适应集群部署。同时,它也暗示了Tomcat6的集群版本可能在开发中,意味着Tomcat的集群技术在不断更新和发展。 首先,要理解Tomcat集群的基本...
2. **Session复制配置**:由于默认情况下,Tomcat集群并不共享Session,所以在使用Redis之前,需要对Tomcat进行一些配置。这包括在`$CATALINA_HOME/conf/context.xml`文件中添加对`org.apache.catalina.session....
- 对于大型电商网站,使用Redis存储Session可以避免单台服务器的压力,同时保持用户购物车信息的一致性。 - 在社交网络中,通过Redis存储Session,可以在用户切换设备或浏览器时保持登录状态。 - 在云服务中,...
例如,在大型集群中,这种方法可能会导致性能下降。同时,即使节点中没有应用部署,Session 也会被复制。 为了避免这种情况,可以使用 BackManager。该管理器只会将 Session 复制到备份节点中,并且只会复制到部署...
Tomcat8提供了多种实现Session共享的方式,其中包括使用数据库、专用的Session复制中间件以及我们的关键词"tomcat-cluster-redis-session-manager"提到的Redis作为缓存系统来共享Session。 Redis是一个高性能的键值...