最近时间学习了下以memcached作为缓存服务器,nginx和tomcat实现负载均衡,步骤如下:
1.在linux服务器上单独安装了memcached,(网上有很多安装方式).
2.在linux服务器上安装了nigix,conf/nginx.conf 主要配置如下:
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream xxx{
server 192.168.88.173:80 weight=8 max_fails=1 fail_timeout=10s;//安装在不同服务器上的tomcat
server 192.168.88.21:80 weight=10 max_fails=1 fail_timeout=10s;//安装在不同服务器上的tomcat
}
server {
listen 8888;//我修改了端口号
server_name xxx;//与上面的对应
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://xxx;//与上面的对应
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
}
.....//下面的就不拷贝了
}
3.用tomcat的缓存插件memcached-session-manager 管理session共享,需要将如下的几个包放在tomcat的
lib下:
memcached-session-manager.jar;
msm-javolution-serializer-jodatime-1.3.0.jar;
msm-javolution-serializer-cglib-1.3.0.jar;
memcached-2.4.2.jar;
javolution-5.4.3.1.jar
4.修改tomcat下conf/server.xml文件
<Context docBase="xxx" path="" debug="0" reloadable="false">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.77.160:11211" //这里是缓存服务器的地址
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"//这里是过滤的样式
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false" />
</Context>
5. 在java代码中可以如下操作缓存
import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.whalin.MemCached.MemCachedClient; import com.whalin.MemCached.SockIOPool; /** * 统一缓存管理中心 * @author H.Huang * Aug 30, 2013 * * 1.如果试用MemCachedClient.add(...)方法,若value值是一般的java对象,则值会丢失 * 2.如果要存,则需要对java对象进行序列化 */ public class MemCachedManager { private static Logger log = LoggerFactory.getLogger(MemCachedManager.class); // 创建全局的唯一实例 protected static MemCachedClient mcc = new MemCachedClient(); protected static MemCachedManager memCached = new MemCachedManager(); // 设置与缓存服务器的连接池 static { try{ log.info("开始连接MemCached 缓存服务器"); // 服务器列表和其权重 String[] servers = { "192.168.77.160:11211" }; Integer[] weights = { 10 }; // 获取socke连接池的实例对象 SockIOPool pool = SockIOPool.getInstance(); // 设置服务器信息 pool.setServers( servers ); pool.setWeights( weights ); // 设置初始连接数、最小和最大连接数以及最大处理时间 pool.setInitConn( 5 ); pool.setMinConn( 5 ); pool.setMaxConn( 250 ); pool.setMaxIdle( 1000 * 60 * 60 * 6 ); // 设置主线程的睡眠时间 pool.setMaintSleep( 30 ); // 设置TCP的参数,连接超时等 pool.setNagle( false ); pool.setSocketTO( 3000 ); pool.setSocketConnectTO( 0 ); // 初始化连接池 pool.initialize(); // mcc.setDefaultEncoding("UTF-8"); // 压缩设置,超过指定大小(单位为K)的数据都会被压缩 // mcc.setCompressEnable( true ); // mcc.setCompressThreshold( 64 * 1024 ); log.info("连接MemCached 缓存服务器成功"); }catch (Exception e) { e.printStackTrace(); log.error("连接MemCached 缓存服务器成功"); } } /** * 保护型构造方法,不允许实例化! * */ protected MemCachedManager() { } /** * 获取唯一实例. * @return */ public static MemCachedManager getInstance() { return memCached; } /** * 添加一个指定的值到缓存中. * @param key * @param value * @return */ public boolean add(String key, Object value) { if(mcc.keyExists(key)){ return mcc.replace(key, value); }else{ return mcc.add(key, value); } } public boolean add(String key, Object value, Date expiry) { if(mcc.keyExists(key)){ return mcc.replace(key, value, expiry); }else{ return mcc.add(key, value, expiry); } } public boolean replace(String key, Object value) { return mcc.replace(key, value); } public boolean replace(String key, Object value, Date expiry) { return mcc.replace(key, value, expiry); } /** * 根据指定的关键字获取对象. * @param key * @return */ public Object get(String key) { return mcc.get(key); } /** * 删除一个指定的值到缓存中. * * @param key * @param value * @return */ public boolean delete(String key) { return mcc.delete(key); } public static void main(String[] args) { MemCachedManager cache = MemCachedManager.getInstance(); long startDate=System.currentTimeMillis(); cache.add("zf", 18); cache.replace("zf", 19); cache.delete("zf"); long endDate=System.currentTimeMillis(); long nowDate=(endDate-startDate)/1000; System.out.println(nowDate); System.out.println( " get value : " + cache.get( "zf" )); } }
6.以上只是一个关键步骤,作为笔记之用!
相关推荐
Windows+Nginx+Memcached+Tomcat6负载均衡
总结来说,Tomcat+memcached+Nginx实现session共享是通过MSM中间件,配合Nginx的负载均衡,将session数据存储在memcached中,实现跨服务器的用户状态一致性。配置过程涉及到Tomcat、memcached和Nginx的安装、配置...
标题 "memcached+nginx+tomcat" 暗示了我们正在讨论一个使用 memcached 作为缓存系统,nginx 作为反向代理和负载均衡器,以及 tomcat 作为 Java 应用服务器的架构。这样的组合可以提升 web 应用性能,减少服务器压力...
【标题】"tomcat7+memcached+nginx 集群架包(无ngnix架包)"指的是一个用于构建高性能、可扩展的Web应用集群的解决方案,但不包括nginx配置部分。在这个架构中,Tomcat7作为Java应用服务器处理HTTP请求,Memcached...
本知识点聚焦于如何在Windows环境下,利用Nginx作为反向代理,Memcached进行session共享,以及Tomcat作为Java应用服务器来搭建这样一个集群。这个配置确保了用户在集群中的任何一台服务器上的操作都能被其他服务器...
nginx+memcached+tomcat 负载均衡+session共享实现所有代码 教程请看:https://blog.csdn.net/dayuang2009/article/details/80312249
《APMServ 5.2.6》:一键快速搭建Apache+PHP+MySQL+Nginx+Memcached+ASP平台的绿色软件 APMServ 5.2.6 绿色服务器 PHP服务器 ASP服务器 APMServ 5.2.6 是一款拥有图形界面的快速搭建Apache 2.2.9、PHP 5.2.6...
本主题将详细探讨如何在Windows7环境下,利用Nginx作为负载均衡器,Memcached作为session存储,以及Tomcat作为应用服务器,实现session共享。 **1. Nginx介绍与配置** Nginx是一款高性能的HTTP和反向代理服务器,它...
在windows系统上nginx+memcached+tomcat的负载均衡 相关配置过去请查看 http://blog.csdn.net/xu_xiao_ji/article/details/51682693
在这个场景中,我们关注的是如何在Tomcat 7集群中配置和使用memcached以及配合Nginx进行负载均衡。Memcached是一种分布式内存对象缓存系统,可以提高Web应用的性能,而Nginx则是一个高性能的HTTP和反向代理服务器,...
3. **负载均衡**:结合使用Nginx的负载均衡功能,可将请求分发到多个Memcached实例,提升系统整体处理能力。 通过合理配置和整合Memcached与Nginx,可以构建出一个高效、高可用的Web服务架构,有效提高响应速度,...
为适应企业对高端开发工程师的需求,整合了Linux系统的常见使用,包括文件操作、权限操作、常用shell命令,以及mysql、nginx、php环境的搭建,让童鞋们顺利掌握Linux下的开发,适应大公司的工作场景。另外的重头戏...
Nginx+Memcached+Tomcat集群需要的jar包
本文将详细介绍如何利用Nginx作为反向代理服务器,结合Memcached内存缓存系统,以及Tomcat应用服务器来实现这一目标。 首先,我们要理解负载均衡的概念。负载均衡是一种分布式系统架构技术,它的目的是将工作负载...
本文将详细探讨如何使用lvs(Linux Virtual Server)、keepalived、nginx、tomcat以及memcached来实现这一目标。 首先,lvs是Linux内核中的一个模块,它提供了四层负载均衡功能,能够将进来的网络请求分发到后端多...
Nginx-1.6.2+Memcached-1.2.6+Tomcat7负载均衡实现Session共享 搭建所需要的JAR包文件, 请复制到Tomcat Lib目录下, 搭建方法, 请查看博客:http://blog.csdn.net/army16/article/details/40585637
本文将介绍如何使用`nginx`、`memcached`和`tomcat`搭建一个高可用的集群环境,实现负载均衡和Session共享。 1. **Nginx环境搭建**: Nginx是一款高性能的HTTP和反向代理服务器,它能够处理静态文件、动态内容、...
6. **测试**:在Linux+nginx环境下,你可以部署多个Tomcat实例,并通过Nginx作为反向代理进行负载均衡。现在,当用户在任一服务器上登录并创建Session后,其他服务器也能访问到相同的Session数据,实现了Session的...
在构建高性能、高可用性的电子商务网站时,常常采用一种混合技术架构,如“nginx + memcached + tomcat + squid 集群”。这种架构旨在优化性能、提高可扩展性和提供负载均衡,确保即使在高流量情况下也能保持稳定的...
linux 服务器搭建工具java+memcached+mysql+redis+tomcat