前几天介绍了一下 memcached-session-filter 的改写
《让 memcached-session-filter 摆脱 spring 和 Java 序列化接口》
这次介绍一下实际应用其搭建一个 tomcat 集群的服务器,以测试为目的。
为了解决静态文件与动态请求分离和上传文件的访问问题,把 1 个 nginx 和 2 个 tomcat 服务器目录均放在 D:/web/ROOT
1、共享 session 的通过 filter 将 session 数据存储到 memcached 中。
修改自 memcached-session-filter ,项目地址:
http://code.google.com/p/memcached-session-filter/
设置 Java 项目的配置文件 web.xml
<filter>
<filter-name>sessionFilter</filter-name>
<filter-class>com.ezerg.memsession.MemcachedSessionFilter</filter-class>
<init-param>
<param-name>memcachedNodes</param-name>
<param-value>localhost:11211 localhost:11212</param-value>
</init-param>
<init-param>
<param-name>sessionTimeout</param-name>
<param-value>300</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
将项目文件复制到 D:/web/ROOT 目录。
2、启动 2 个 tomcat 服务器。
修改 server.xml ,修改一个即可,防止端口冲突不能启动
<!-- 修改port端口:10086 2 个 tomcat 不能重复-->
<Server port="10086" shutdown="SHUTDOWN">
<!-- port="8081" tomcat 监听端口-->
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- 配置 AJP 端口,直接注释-->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<!-- 服务器路径 -->
<Host name="localhost" appBase="d:/web" unpackWARs="false" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false">
修改完成后,分别启动 tomcat 。
3、启动 nginx 服务器。
修改 nginx.conf 文件,以下是一些主要的配置:
... //开启 gzip
gzip on;
... //负载的两台 tomcat
upstream tomcat {
ip_hash;
server 192.168.0.31:8081 max_fails=1 fail_timeout=60s;
server 192.168.0.31:8082 max_fails=1 fail_timeout=60s;
}
server {
..
// 静态文件根目录
location / {
root d:/web/ROOT;
index index.html index.htm index.do;
client_max_body_size 100m;
client_body_buffer_size 128k;
}
...
// .jsp 和 .do 的请求转发给 tomcat
location ~ (\.jsp)|(\.do)$ {
proxy_connect_timeout 4s;
proxy_read_timeout 2s;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://tomcat;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
// 禁止访问 WEB-INF
location ~ ^/(WEB-INF)/ {
deny all;
}
...
建议:
1、max_fails 参数在大型系统中建议设置为3,如果没有多个后端服务器的话保持默认即可。
2、proxy_read_timeout要根据自身程序而定。
修改完成后,启动 nginx 。修改配置文件后,可以动态加载配置文件:nginx -s reload
分享到:
相关推荐
总结起来,这个配置方案通过Nginx的会话保持功能配合Tomcat7与Memcached的集成,确保了用户会话在跨服务器环境下的连续性。同时,这种架构也具有良好的可扩展性和容错性,因为即使某台服务器宕机,其他服务器仍能...
Nginx+Tomcat7+Memcached集群Session共享 完整例子 主要是利用memcached-session-manager(下面简称msm)开源tomcat插件改变tomcat原始的session存储机制,将session的存储放到分布式缓存memcache中,从而实现对...
Nginx+Tomcat+Memcached实现tomcat集群和session共享 nginx配置
### Nginx+Tomcat+Memcached 共享 Session 集群配置 #### 一、概述 在大型分布式系统中,为了实现高可用性和负载均衡,常常会使用 Nginx 作为反向代理服务器来分发请求到后端多个 Tomcat 实例上。然而,传统的基于...
Nginx+Tomcat+Memcached集群Session共享实例,Nginx 1.81 + tomcat1 + tomcat2 + Memcached 完整可运行 访问根目录下 test.jsp 可看效果
这个配置主要是利用Nginx作为前端负载均衡器和静态资源服务器,Tomcat7作为后端Java应用服务器,而Memcached作为分布式缓存系统,以提升整体性能并减轻后端服务器的压力。 **Nginx** Nginx是一款高性能的HTTP和反向...
Nginx+Tomcat+Memcached实现tomcat集群和session共享 tomcat部分
标题 "Nginx+Tomcat+Memcached 集群配置" 涉及到的是一个常见的高性能 web 应用架构,它结合了 Nginx、Tomcat 和 Memcached 这三款强大的技术来实现高可用性和负载均衡。Nginx 是一款高效的静态资源服务器和反向代理...
文件"**Nginx+Tomcat+Memcached集群Session共享(tomcat7)**"可能包含了这些配置示例和必要的依赖库,如Tomcat的Memcached Session Manager (messaging)相关的jar包。 6. **性能优化**:在实际运行中,还需要关注...
nginx+tomcat+memcached集群和负载均衡所有资源包,具体集群方法请参见博文:http://blog.csdn.net/l1028386804/article/details/48289765
couchbase-client-1.2.2.jar ...memcached-session-manager-1.6.5.jar memcached-session-manager-tc6-1.6.5.jar minlog-1.2.jar msm-kryo-serializer-1.6.5.jar reflectasm-0.9.jar spymemcached-2.10.2.jar
本知识点聚焦于如何在Windows环境下,利用Nginx作为反向代理,Memcached进行session共享,以及Tomcat作为Java应用服务器来搭建这样一个集群。这个配置确保了用户在集群中的任何一台服务器上的操作都能被其他服务器...
标题 "Nginx+Tomcat+Memcached集群Session共享" 描述了在分布式环境中如何通过Nginx反向代理服务器、Tomcat应用服务器集群以及Memcached缓存系统来实现Session的共享。这是一个常见的高可用性和负载均衡解决方案。...
1. **Session复制**:默认情况下,Tomcat会在本地存储Session数据,但在集群环境下,需要配置每个实例之间进行Session复制,以保持会话一致性。 2. **Memcached Session Manager**:安装并配置Tomcat的Memcached ...
Tomcat要支持memcached管理Session,需要调用一些jar库文件如下(网上有的文章中可能所说的jar包不全,或者版本不样的会报错,但这里我已经经过验证了): 1) couchbase-client-1.2.2.jar 2) javolution-5.5.1....
通过这些jar包的集成,我们可以构建出一个高效的、基于Memcached的session管理解决方案,使得在nginx负载均衡下运行的Tomcat 7应用能充分利用Memcached进行session数据的存储和共享,从而提高系统的整体性能和可靠性...
兼容Tomcat7 与tomcat8 +memcached做session共享 , 解决了tomcat7与Tomcat8的 java.lang.NoSuchFieldError: attributes 错误。
### 集群Nginx+Tomcat+Memcached #### 一、Nginx介绍与特性 **Nginx** 是一款广泛使用的高性能HTTP服务器和反向代理服务器,最初由俄罗斯开发者Igor Sysoev编写,旨在为互联网提供一个稳定、支持高并发连接的平台...
在构建分布式系统时,Session共享是一个关键问题,特别是在使用多种服务器技术如Nginx、Tomcat和Memcached的环境中。本文将深入探讨如何利用这些组件实现跨服务器的Session共享,以确保用户在登录后能够在整个系统中...
在Nginx+Tomcat+Memcached的集群环境中,通常会有多台服务器分别运行Nginx、Tomcat和Memcached。Nginx通过负载均衡策略将请求分发到不同的Tomcat实例,以实现横向扩展和故障隔离。Memcached也可以部署为集群模式,...