搭建nginx+tomcat+memcached服务,验证session共享
来源:互联网 发布:淘宝网摩托车头盔 编辑:程序博客网 时间:2024/06/05 20:17
使用memcached 实现session共享:
session 会话:从打开网站开始到退出该网站的过程。
http协议是无状态连接协议 ,服务器不会记录终端访问过本服务器。第一次连接服务器时需要握手连接,同样的终端第二次连接服务器时不记得上一次的连接,还要握手连接。
web服务器往往多台使用集群技术,并使用第三方软件进行代理访问。由代理服务器决定每次访问哪一台web主机,也就会导致同一次session过程中,几次http请求会被分散到不同的web服务器。但是该session往往内部有很强的关联,这样被分散到不同的web服务器上后,容易数据丢失,产生错误。
例: 淘宝购物,选择完衣服,鞋子,书,最后去结账时,可能购物车只有衣服和书,鞋子在其他服务器上没找到。
http://www.taobao.com
cookies session_id 97
http://www.taobao.com
client 衣服 鞋子 书 去结账
|
nginx
taobao_1 taobao_2 memcached mem
使用session_id,第一次连接成功后回服务器生成记录session_id,并发给客户端,客户端将session_id存储在cookies文件中。客户端再次连接时,协议会携带cookies信息,memcached就识别出该连接 。web服务器虽然分发sessionID,但是web服务器并不记录sessionID
构建nginx+tomcat+memcached服务:
双tomcat网站服务,单memcached缓存服务,单nginx反向代理服务(默认不缓存数据)
client | 1.1.1.254 nginx 192.168.0.254 |tomcat_web_100 tomcat_web_101 主_mem_20 备_mem_30 200m 200m
网页文件时用java编写的时候,要搭建tomcat服务器:
service httpd stop#关闭其他版本的web服务chkconfig --level 35 httpd offyum -y install glibc.i686 glibc-devel.i686#库文件安装,系统预装x86版本glibc,安装i686版本glibcchmod +x jdk-6u27-linux-i586.bin#tomcat服务运行环境包,加执行权限即可使用./jdk-6u27-linux-i586.bin#执行安装,生成jdk1.6.0_27mv jdk1.6.0_27 /usr/local/jdk#将目录移动到系统目录cd /usr/local/jdk/[root@pc205 jdk]# bin/java -version#查看版本信息java version "1.6.0_27"Java(TM) SE Runtime Environment (build 1.6.0_27-b07)Java HotSpot(TM) Client VM (build 20.2-b06, mixed mode, sharing)
编辑系统配置文件指定jdk程序的安装位置,配置环境变量:
[root@www ~]# vim /etc/bashrcexport JRE_HOME=/usr/local/jdkexport JAVA_BIN=/usr/local/jdk/binexport PATH=$JRE_HOME/bin:$PATHexport CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jarexport JRE_HOME JAVA_BIN PATH CLASSPATH[root@www ~]# source /etc/bashrc#重新加载该文件[root@pc205 jdk]# echo $JRE_HOME#查看环境变量/usr/local/jdk
安装tomcat:
tar -zxvf apache-tomcat-6.0.32.tar.gz -C /usr/local/#提供tomcat服务的软件包,解压即可用,免安装cd /usr/local/mv apache-tomcat-6.0.32 tomcat#更改名字
cd tomcat
bin/startup.sh 启动服务命令
bin/shutdown.sh 停止服务命令
webapps/ROOT/ 网页目录
conf 配置文件存放目录,使用xml语言编写
[root@pc205 conf]# netstat -untnalp | grep :8080#tomcat默认监听8080端口,检查该端口[root@pc205 conf]# /usr/local/tomcat/bin/startup.sh #启动服务脚本Using CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /usr/local/jdkUsing CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar[root@pc205 conf]# netstat -untnalp | grep :8080#服务启动成功tcp 0 0 :::8080 :::* LISTEN 26140/java
http://localhost:8080报错401认证错误,默认有安全认证机制,需要添加登录管理页面认证用户才能登陆。
vim /usr/local/tomcat/conf/tomcat-users.xml<tomcat-users> <role rolename="manager-gui" />#角色类型,有四种角色 <user username="admin" password="123456" roles="manager-gui" /></tomcat-users>
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh#重新启动tomcat服务
登陆http://localhost:8080,输入用户名密码
建立测试页面:
vim /usr/local/tomcat/webapps/ROOT/test.jsp 1 <html> 2 <body bgcolor="green"> 3 <center> 4 <%= request.getSession().getId() %>#获取sessionID值 5 <h1>tomcat 192.168.0.100</h1> 6 </center> 7 </body> 8 </html>
配置nginx 做反向代理,把自己接收到的请求以轮询的方式分发给tomcat服务器。
sed -i '/^$/d' nginx.confsed -i '/^#/d' nginx.conf#清除空行和注释vim /usr/local/nginx/nginx.conf worker_processes 1;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream "tomcatweb" { server 192.168.0.100:8080; server 192.168.0.101:8080; } server { listen 80; server_name localhost; location / { proxy_pass http://tomcatweb; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
访问http://1.1.1.254/test.jsp
在20 和 30 服务器上运行memcached 服务器 使用200M物理内存做数据缓存 :
/usr/local/bin/memcached -u root -m 200M -d
给tomcat服务器安装连接memcahced服务器的连接工具 (msm)
cd sessioncp *.jar /usr/local/tomcat/lib/#将连接程序复制到tomcat的库中
tomcat编辑自己的配置文件,指定memcached服务器的ip地址:
vim /usr/local/tomcat/conf/context.xml<Context> <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="mem20:192.168.0.20:11211 mem30:192.168.0.30:11211" failoverNodes="mem30" #备用缓存服务器 requestUrilgnorePattern=".*\(ico|png|gif|jpg|css|js)$" #不缓存的文件类型transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" #连接memcached时调用的类 /></Context>
重新启动tomcat服务:
[root@pc205 conf]# /usr/local/tomcat/bin/shutdown.sh [root@pc205 conf]# /usr/local/tomcat/bin/startup.sh
实际结果,web服务还是一直轮询的,但是sessionID不会改变,除非memcached坏掉了。
- 搭建nginx+tomcat+memcached服务,验证session共享
- Nginx+Tomcat+Memcached负载均衡+session共享集群服务搭建(Linux)
- nginx+tomcat+memcached session共享
- nginx+tomcat+memcached session共享
- Windows7 + Nginx + Memcached + Tomcat 集群 session 共享
- Nginx + Memcached + Tomcat 集群 session 共享
- Nginx+Tomcat+Memcached集群Session共享
- Nginx+Tomcat+Memcached集群Session共享(windows)
- Nginx+Tomcat+Memcached集群Session共享
- Nginx+Tomcat+Memcached集群Session共享 .
- Nginx+Tomcat+Memcached集群Session共享
- Nginx+Tomcat+Memcached集群Session共享
- Nginx+Tomcat+Memcached集群Session共享
- Nginx+Tomcat+Memcached集群Session共享
- 【nginx+memcached+tomcat集群 session共享完整版】
- Nginx+Tomcat+Memcached集群Session共享
- nginx+memcached+tomcat集群 session共享完整版
- nginx+memcached+tomcat集群 session共享完整版
- [LeetCode] Evaluate Reverse Polish Notation
- 红黑树
- 道路识别demo
- sql语句使用case对过期时间进行排序
- java实现二维码生成的几个方法
- 搭建nginx+tomcat+memcached服务,验证session共享
- 判断单链表是否存在环及求环入口点
- CSS padding的属性和用法
- c# 多线程
- Java学习笔记—第二章
- Java List 初始化
- java实现二维码生成的几个方法
- Git 配置学习
- JDK在MAC OS X下的路径设置