Nginx + Memcached 实现Session共享的负载均衡
来源:互联网 发布:手机绘画的软件 编辑:程序博客网 时间:2024/06/06 10:41
session共享
我们在做站点的试试,通常需要保存用户的一些基本信息,比如登录就会用到Session;当使用Nginx做负载均衡的时候,用户浏览站点的时候会被分配到不同的服务器上,此时如果登录后Session就在不同发服务器上,A记住了用户的登录状态,可是下一次用户请求被分配到B去了怎么办?不可能让用户再登陆一次,所以要让session在不同的服务器上都能获取到相同的内容。
方法
1.ip_hash,这是Nginx的轮询方法,用户登录站点时,就会一直在这台服务器上就不存在Session的问题
优点:不需要采用任何处理;
缺点:当某台服务器访问的量大时,负载均衡就相当于没用了
2.用Memcached或者redis缓存的方式
3.使用数据库存储,当某台服务器访问的量大时这个会对数据压力大
4.用Memcached或者redis + DB异步存储;
Nginx + Memcached 实现Session共享的负载均衡,我采用的第二种方法;
自己搞一台服务器,Nginx和Memcached 在一台服务器;
在服务器我部署了相同的两个站点,代码相同,一个端口为8080;另一个为8090;
1 private static readonly IMemcachedManager _memcachedManager = new MemcachedManager(); 2 3 public ActionResult Index() 4 { 5 Random rd = new Random(); 6 Session["Session"] = rd.Next(1, 100000); 7 8 if (!_memcachedManager.IsExit("Session")) 9 {10 _memcachedManager.SetValue("Session", Session["Session"]); 11 }12 13 ViewBag.Message = "当前站点为:8080;Session为:" + _memcachedManager.GetValue<string>("Session") + "";14 15 return View();16 }
运行结果:
实现了我的目的,达到了均衡负载同时session共享的目的。
Nginx除了Session共享的问题,还有一个共享资源的问题,比如上传文件,这需要负载均衡需要解决的一个问题;
总结
不管是安装Nginx还是Memcached,在这个过程中,并没有遇到比较深的坑,当然Memcached在网上也有很多的例子,一些基本的安装都能够很快的实现,部署起来相对于简单毕竟只是一个Demo,不知道在实际的项目中将会是如何的,也会会有很大的不同;
这只是自己学习的一个地方,当然这里面还有更多东西需要去研究;
共勉
- Nginx + Memcached 实现Session共享的负载均衡
- Nginx + Memcached 实现Session共享的负载均衡
- Nginx + Memcached 实现Session共享的负载均衡
- Nginx+Tomcat+memcached负载均衡实现session共享
- nginx+memcached+tomcat实现负载均衡和session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- tomcat7+nginx+memcached实现负载均衡和session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- nginx+tomcat+memcached 实现负载均衡 。动静分离。session共享
- nginx+tomcat+memcached实现负载均衡与session共享
- 【 Nginx+Apache-Tomcat7+Memcached搭建负载均衡实现Session共享】
- tomcat7+nginx+memcached实现负载均衡和session共享(windows)
- nginx+memcached+tomcat实现负载均衡和session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- 整数去重问题
- 【python】Python中的logging模块
- java开发规范
- java.lang.NoClassDefFoundError: ch/qos/logback/classic/LoggerContext
- Go实战--golang中使用markdown(russross/blackfriday)
- Nginx + Memcached 实现Session共享的负载均衡
- Qual_C:树上的三角形
- springcloud client poi mail
- bootstrap 分页控件,实现直接转到某页
- EasyDSS流媒体解决方案之视频多清晰度解决(1)
- c语言字符串操作
- python中文注释报错的解决方法
- leetcode题目例题解析
- 工具分享之GitforWindows国内下载站