设为首页 收藏本站
查看: 805|回复: 0

[经验分享] 关于 Nginx+Tomcat+Memcached做负载均衡加共享session

[复制链接]

尚未签到

发表于 2016-12-27 07:20:40 | 显示全部楼层 |阅读模式
首先,确保在机器上已经安装了 nginx、tomcat、memcached,并且都可以成功启动服务
nginx可以正常启动了,我们就可以通过 域+端口号来访问nginx的80端口了
以本地举例
localhost
nginx可以访问,我们就开始配置nginx的配置文件,来做与Tomcat的映射
location / {
root   html;
index  index.html index.htm;
proxy_pass    http://tomcat_115;
}

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

那么我们还需要在nginx的配置文件里面添加
upstream tomcat_115 {
server 192.168.1.110:8080 weight=1;  
server 192.168.1.111:8080 weight=2;  
server 192.168.1.112:8080 weight=3;  
}
这段代码就是配置的本地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里面,
具体代码如下
<Context>
...
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
/>
</Context>
这是官网给的代码,另外还有两种写法,可参考官网,另外,其中的配置说明在官网里面也有,这里只简单介绍能跑通
memcachedNodes 的意思是指向memcached的节点,如果有多台机器安装了memcached,则需要全部加到这个配置里面,其中的格式为 域+端口号,这里面的域和端口号均指的是安装memcached的域和端口,memcached的默认端口号为11211
至于前面的n1,和n2,可以理解为编程语言里面的命名空间,可以在添加其他配置的时候用到
官网上面说,如果只有单个指向,可以不用写前边的n1等。
配置好这些,重启若干tomcat,重新加载nginx,就可以试试访问nginx的80端口啦,多访问若干次,被分配到访问的tomcat是随机的。
然后可以去看tomcat的访问日志,如果每个tomcat均有被访问到的记录,说明成功啦
可以通过简答的jsp代码来获取sessionId,确认session已经被共享,当刷新页面的时候sessionId是不变的
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>sessionID:<%=session.getId() %></h1>  
</body>
</html>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-319840-1-1.html 上篇帖子: Nginx 502错误触发条件与解决办法汇总 下篇帖子: Nginx关于Rewrite执行顺序详解.docx
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表