Nginx + tomcate + memcache实现session共享.docx
- 文档编号:3293311
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:16
- 大小:172.93KB
Nginx + tomcate + memcache实现session共享.docx
《Nginx + tomcate + memcache实现session共享.docx》由会员分享,可在线阅读,更多相关《Nginx + tomcate + memcache实现session共享.docx(16页珍藏版)》请在冰豆网上搜索。
Nginx+tomcate+memcache实现session共享
Nginx+Tomcat8集群实现session共享
场景:
10.10.2.19:
8080Nginx
10.10.2.16:
8080tomcte1memcached1
10.10.2.21:
8080tomcate2memcached2
Nginx:
(安装不在赘述)
Nginx.conf的配置:
注意黄色部分
#usernobody;
worker_processes4;
#error_loglogs/error.log;
#error_loglogs/error.lognotice;
#error_loglogs/error.loginfo;
#pidlogs/nginx.pid;
events{
worker_connections1024;
}
http{
includemime.types;
default_typeapplication/octet-stream;
#log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'
#'$status$body_bytes_sent"$http_referer"'
#'"$http_user_agent""$http_x_forwarded_for"';
#access_loglogs/access.logmain;
sendfileon;
#tcp_nopushon;
#keepalive_timeout0;
keepalive_timeout300;
gzipon;
#服务器集群
upstreammycluster{
#集群有几台服务器即可配置几台,weight表示权重,权重越大被访问到的几率越大
#这里添加的是上面启动好的两台Tomcat服务器
server10.10.2.16:
8080;
server10.10.2.21:
8080;
#ip_hash;
}
server{
listen8080;
server_name10.10.2.19;
#charsetkoi8-r;
#access_loglogs/host.access.logmain;
location/{
#将访问请求转向至服务器集群,mycluster和上面upstreammycluster对应
proxy_passhttp:
//mycluster;
#真实的客户端IP
proxy_set_headerX-Real-IP$remote_addr;
#请求头中Host信息
proxy_set_headerHost$host;
#代理路由信息,此处取IP有安全隐患
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
#真实的用户访问协议
proxy_set_headerX-Forwarded-Proto$scheme;
}
#error_page404/404.html;
#redirectservererrorpagestothestaticpage/50x.html
#
error_page500502503504/50x.html;
location=/50x.html{
roothtml;
}
#proxythePHPscriptstoApachelisteningon127.0.0.1:
80
#
#location~\.php${
#proxy_passhttp:
//127.0.0.1;
#}
#passthePHPscriptstoFastCGIserverlisteningon127.0.0.1:
9000
#
#location~\.php${
#roothtml;
#fastcgi_pass127.0.0.1:
9000;
#fastcgi_indexindex.php;
#fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
#includefastcgi_params;
#}
#denyaccessto.htaccessfiles,ifApache'sdocumentroot
#concurswithnginx'sone
#
#location~/\.ht{
#denyall;
#}
}
#anothervirtualhostusingmixofIP-,name-,andport-basedconfiguration
#
#server{
#listen8000;
#listensomename:
8080;
#server_namesomenamealiasanother.alias;
#location/{
#roothtml;
#indexindex.htmlindex.htm;
#}
#}
#HTTPSserver
#
#server{
#listen443ssl;
#server_namelocalhost;
#ssl_certificatecert.pem;
#ssl_certificate_keycert.key;
#ssl_session_cacheshared:
SSL:
1m;
#ssl_session_timeout5m;
#ssl_ciphersHIGH:
!
aNULL:
!
MD5;
#ssl_prefer_server_cipherson;
#location/{
#roothtml;
#indexindex.htmlindex.htm;
#}
#}
}
Tomcate:
1.修改tomcat/conf/context.xml
非黏性session管理的配置
粘性session就是指,apache服务器会把某个用户的请求,交给tomcat集群中的一个节点,以后此节点就负责该保存该用户的session,如果此节点挂掉,那么该用户的session也会消失。
非粘性session:
这种方式下,通过负载均衡器会根据节点的情况,把用户的请求进行分发,也就是会复制多份session分发给多个节点,这样,如果节点中其中一个session挂掉的话,其它的还能继续工作,也就是只要有一个节点没有挂掉,该用户的信息就不会消失
加入配置:
如下如果memcached是多节点只需要修改如下标签:
memcachedNodes="n1:
10.10.2.21:
11211,n2:
10.10.2.22:
11211"
10.10.2.16: 11211,n2: 10.10.2.21: 11211"className="de.javakaffee.web.msm.MemcachedBackupSessionManager"/> 2.也可以在web.xml中加入 - schemaLocation="http: //xmlns.jcp.org/xml/ns/javaeehttp: //xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance"xmlns="http: //xmlns.jcp.org/xml/ns/javaee"> 3.或者在项目的web.xml和Tomcat的Root的web.xml也加上 加入依赖的jar包: 注意版本号: 包里面有tomcate7,8,9的依赖 4.测试用页面: 放在root下可直接访问 <%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http: //www.w3.org/TR/html4/loose.dtd">
<%
out.println(request.getLocalAddr()+":
"+request.getLocalPort()+"");%>
<%
out.println("ID"+session.getId()+"");
%>
<%session.setAttribute("abc","abc");%>
5.复制一份tomcate到第二台服务器.
2.修改tomcat/conf/context.xml配置端口ip:
10.10.2.16: 11211,n2: 10.10.2.21: 11211"className="de.javakaffee.web.msm.MemcachedBackupSessionManager"/> 6.安装查看memcache: (每个tomcate各配一个) 1.root123123 2.安装memcached yum-yinstallmemcached 正在解决依赖关系 -->正在检查事务 --->软件包memcached.x86_64.0.1.4.15-10.el7_3.1将被安装 -->解决依赖关系完成 依赖关系解决 ========================================================================================================================== Package架构版本源大小 ========================================================================================================================== 正在安装: memcachedx86_641.4.15-10.el7_3.1ol7_latest85k 事务概要 ========================================================================================================================== 安装1软件包 总下载量: 85k 安装大小: 176k Downloadingpackages: memcached-1.4.15-10.el7_3.1.x86_64.rpm|85kB00: 00: 00 Runningtransactioncheck Runningtransactiontest Transactiontestsucceeded Runningtransaction 正在安装: memcached-1.4.15-10.el7_3.1.x86_641/1 验证中: memcached-1.4.15-10.el7_3.1.x86_641/1 已安装: memcached.x86_640: 1.4.15-10.el7_3.1 完毕! [root@BO-3/]# [root@BO-3/]# [root@BO-3/]#memcached-uroot-h memcached1.4.15 -p 11211) -U 11211,0isoff) -s -a 0700) -l INADDR_ANY,alladdresses) port.Ifyoudon'tspecify aportnumber,thevalueyouspecifiedwith-por-Uis used.Youmayspecifymultipleaddressesseparatedbycomma orbyusing-lmultipletimes -drunasadaemon -rmaximizecorefilelimit ....... 3. 验证安装memcached memcached–h 说明: 如果没有带-uroot的话就会报: can'trunasrootwithoutthe-uswitch 解决: 带-uroot就行! memcached-uroot-h memcached1.4.15 4.修改memcached配置文件 chkconfig--level2345memcachedon执行该命令将memcached加入linux服务。 添 加成功以后,你可以使用servicememcachedstart |stop |restart 等命令来启动、关闭、重启memcached服务。 memcached-umemcached-p11211-m64-c1024 vi/etc/sysconfig/memcached 5.重启memcached服务 修改上面的参数以后,需要重启memcached服务,不然参数是无法立即生效的。 重启服务,只需执行: servicememcachedrestart。 服务重启以后,即可使用memcached-tool来检测memcached服务状态。 使用memcached-tool检测memcached服务 执行memcached-tool10.10.2.19: 11211stats即可检测memcached的服务状态。 如果报错,连接不上,那么说明memcached没有正确安装或者没有启动。 执行正常, 内容如截图所示: 10.10.2.19: 11211FieldValue accepting_conns1 auth_cmds0 auth_errors0 bytes0 bytes_read7 bytes_written0 cas_badval0 cas_hits0 cas_misses0 cmd_flush0 cmd_get0 cmd_set0 cmd_touch0 conn_yields0 connection_structures11 curr_connections10 curr_items0 decr_hits0 decr_misses0 delete_hits0 delete_misses0 evicted_unfetched0 evictions0 expired_unfetched0 get_hits0 get_misses0 hash_bytes524288 hash_is_expanding0 hash_power_level16 incr_hits0 incr_misses0 libevent2.0.21-stable limit_maxbytes67108864 listen_disabled_num0 pid2439 pointer_size64 reclaimed0 reserved_fds20 rusage_system0.032519 rusage_user0.003251 threads4 time1498634983 total_connections11 total_items0 touch_hits0 touch_misses0 uptime367 version1.4.15 ------------------------------------------------------------------------------ 检查服务: 1、查看启动的memcache服务: netstat-lp|grepmemcached 2、查看memcache的进程号(根据进程号,可以结束memcache服务: “kill-9进程号”) ps-ef|grepmemcached 3.查看memcache的进程启动状态 [bobj@BO-3/]$servicememcachedstatus Redirectingto/bin/systemctlstatusmemcached.service ●memcached.service-Memcached Loaded: loaded(/usr/lib/systemd/system/memcached.service;disabled;vendorpreset: disabled) Active: active(running)since四2017-06-2914: 49: 50CST;46minago MainPID: 92834(memcached) CGroup: /system.slice/memcached.service └─92834/usr/bin/memcached-umemcached-p11211-m64-c1024 [bobj@BO-3/]$ 启动成功! -----------------------------------------------// 7.启动memcached1->memcached2->tomcate1->tomcat2->nginx-> memcached启动命令: 使用安装用户 [bobj@oraclelinux-8system]$suroot 密码: 123123 [root@oraclelinux-8/]#cdbin 停止: [root@oraclelinux-8bin]#systemctlstopmemcached.service 启动: [root@oraclelinux-8bin]#systemctlstartmemcached.service 查看启动状态: [root@oraclelinux-8bin]#servicememcachedstatus Redirectingto/bin/systemctlstatusmemcached.service ●memcached.service-Memcached Loaded: loaded(/usr/lib/systemd/system/memcached.service;disabled;vendorpreset: disabled) Active: active(running)since四2017-06-2916: 39: 48CST;28sago MainPID: 27632(memcached) CGroup: /system.slice/memcached.service └─27632/usr/bin/memcached-umemcached-p11211-m64-c1024 6月2916: 39: 48oraclelinux-8systemd[1]: StartedMemcached. 6月2916: 39: 48oraclelinux-8systemd[1]: StartingMemcached... 正确启动! Tomcate启动命令: [bobj@oraclelinux-8sap_bobj]$./tomcatshu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Nginx tomcate memcache实现session共享 memcache 实现 session 共享