关于 Nginx+Tomcat+Memcached做负载均衡加共享session

4 篇文章 0 订阅
2 篇文章 0 订阅
首先,确保在机器上已经安装了 nginx、tomcat、memcached,并且都可以成功启动服务  

nginx可以正常启动了,我们就可以通过 域+端口号来访问nginx的80端口了  
以本地举例  
localhost  

nginx可以访问,我们就开始配置nginx的配置文件,来做与Tomcat的映射  

Xml代码    收藏代码
  1. location / {  
  2.             root   html;  
  3.             index  index.html index.htm;  
  4.             proxy_pass    http://tomcat_115;  
  5.  }  


这里面是配置了nginx默认解析仅截取了一段代码,并不代表全部意思  
其中proxy_pass则配置了相当于是代理转向  



那么我们还需要在nginx的配置文件里面添加  
Java代码    收藏代码
  1. upstream tomcat_115 {  
  2.           server 192.168.1.110:8080 weight=1;    
  3.           server 192.168.1.111:8080 weight=2;    
  4.           server 192.168.1.112:8080 weight=3;    
  5. }  

这段代码就是配置的本地tomcat的映射,后面的weight则配置了权重,权重越高,则被分配到的几率越高  

以上代码就是nginx负责对发来的请求做分配处理  
配置好后,可以通过nginx -t来验证配置文件是否正确  

接下来配置memcached  
如下是官网的安装说明,可以参看  
https://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration  
官方文档里面说,首先要把memcached的jar包下载下来,并且添加到tomcat里面,官网给的路径是 $CATALINA_HOME/lib/,放到TOMCAT_HOME/lib/应该也可以  
需要注意的是  
jar包里面有tomcat的版本对应的jar  
另外  
如果你使用memcached,还需要下载spymemcached-2.8.12.jar and couchbase-client-1.1.4.jar.这两个jar包  
如果用到couchbase,则还需要下载***jar包,这里不过多说明了  

然后配置tomcat的配置文件,可以添加到server.xml里面,也可以添加到context.xml里面,  
具体代码如下  

Xml代码    收藏代码
  1. <Context>  
  2.   ...  
  3.   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  4.     memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211"  
  5.     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
  6.     />  
  7. </Context>  

这是官网给的代码,另外还有两种写法,可参考官网,另外,其中的配置说明在官网里面也有,这里只简单介绍能跑通  
memcachedNodes 的意思是指向memcached的节点,如果有多台机器安装了memcached,则需要全部加到这个配置里面,其中的格式为 域+端口号,这里面的域和端口号均指的是安装memcached的域和端口,memcached的默认端口号为11211  

至于前面的n1,和n2,可以理解为编程语言里面的命名空间,可以在添加其他配置的时候用到  
官网上面说,如果只有单个指向,可以不用写前边的n1等。  

配置好这些,重启若干tomcat,重新加载nginx,就可以试试访问nginx的80端口啦,多访问若干次,被分配到访问的tomcat是随机的。  
然后可以去看tomcat的访问日志,如果每个tomcat均有被访问到的记录,说明成功啦  

可以通过简答的jsp代码来获取sessionId,确认session已经被共享,当刷新页面的时候sessionId是不变的  

Html代码    收藏代码
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html>  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10. <h1>sessionID:<%=session.getId() %></h1>    
  11. </body>  
  12. </html>  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值