摘要:零:前言 1、单是从软件层面做负载,只能单主nginx服务器,主服务器挂了,系统就挂了 2、实现多台主nginx服务器,可采用DNS负载均衡,即同一个域名绑定多个IP(nginx服务器),按顺序分发 3、实现多台主nginx服务器,可采用负载均衡硬件设备,分发到多个IP(nginx服务器) 4、综合上述三点 Session 实现共享的方法分为多种 对于WEB应用集群的技术实现而言,最大的难点就是
1、单是从软件层面做负载,只能单主nginx服务器,主服务器挂了,系统就挂了
2、实现多台主nginx服务器,可采用DNS负载均衡,即同一个域名绑定多个IP(nginx服务器),按顺序分发
3、实现多台主nginx服务器,可采用负载均衡硬件设备,分发到多个IP(nginx服务器)
4、综合上述三点
Session 实现共享的方法分为多种对于WEB应用集群的技术实现而言,最大的难点就是如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一块。要实现这一点,大体上有两种方式,
一种是把所有Session数据放到一台服务器上或者数据库中,集群中的所有节点通过访问这台Session服务器来获取数据;
另一种就是在集群中的所有节点间进行Session数据的同步拷贝,任何一个节点均保存了所有的Session数据。
Tomcat集群session同步方案有以下几种方式:
使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单。但这个方案的效率比较低,在大并发下表现并不好。原理:http://zyycaesar.iteye.com/blog/296606
利用nginx的基于访问ip的hash路由策略,保证访问的ip始终被路由到同一个tomcat上,这个配置更简单。但如果应用是某一个局域网大量用户同时登录,这样负载均衡就没什么作用了。
利用nginx插件实现tomcat集群和session同步,nginx-upstream-jvm-route-0.1.tar.gz,是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能,可通过http://code.google.com/p/nginx-upstream-jvm-route/downloads/list获取。
利用memcached把多个tomcat的session集中管理,前端在利用nginx负载均衡和动静态资源分离,在兼顾系统水平扩展的同时又能保证较高的性能。
Nginx
Memcached(memcached-1.2.6-win32-bin)
Tomcat7
二:Memcached配置 1、 Memcached的安装
将安装包memcached-1.2.6-win32-bin解压到X:/目录下面,重命名为memcached。
打开命令提示符,进入X: /memcached的目录,输入安装命令“memcached.exe –d install”,安装memcached的windows服务,
然后输入“memcached -d start”,以后memcached将作为windows的一个服务每次开机时自动启动。
默认端口:11211。
下面插入介绍一些memcached的常用命名,也是最基本的命令,
(1) 查看memcached的服务是否已经启动:tasklist /fi "imagename eq memcached.exe"
(2) memcached参数使用介绍
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
例如:C:memcachedmemcached.exe -h
三:tomcat配置 1.添加tomcat
解压并复制Tomcat,分别为apache-tomcat-7.0.55-01和apache-tomcat-7.0.55-02
2.添加.所需jar包
如下列表:
memcached-session-manager-1.6.1,
memcached-session-manager-tc7-1.6.1(因为Tomcat版本为7.0)
javolution-5.4.3.1,
msm-javolution-serializer-1.6.1(准备使用javolution序列化方式)
spymemcached-2.7.3(依赖包)
添加以上jar到tomcat lib中
2.Tomcat的配置安装
修改server.xml文件,同时添加HTTPS支持和Tomcat双开的配置
修改文件Tomcat/conf/context.xml,在Context标签中加入如下代码:
<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:localhost:11211" requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization="false"/>
3.启动Tomcat的测试
四:Nginx的安装和配置 1、Nginx的安装
将安装包nginx-1.3.0.zip解压到X:/目录
启动Nginx:进入X:/nginx目录,执行命令:start nginx.exe,弹出屏会一闪而逝。
接着输入tasklist /fi "imagename eq nginx.exe",出现如下内容,表示nginx已正常启动啦!
在浏览器输入http://localhost,可以看到Nginx的欢迎页。
更多Nginx常用命令:
停止Nginx:nginx.exe -s stop|quit
重启Nginx:nginx.exe -s reload
查看Nginx版本:nginx.exe -v
修改文件$NGINX_HOME/conf/nginx.conf。
#设定负载均衡的服务器列表
upstreamtomcat_server{ serverlocalhost:18080weight=1;#第一台机器 serverlocalhost:28080weight=1;#第二台机器 }
server{ listen8080; server_namelocalhost; #charsetkoi8-r; #access_loglogs/host.access.logmain; location/{ roothtml; indexindex.htmlindex.htm; proxy_passhttp://tomcat_server; } }
以上部分是需要在nginx.conf中的http {}
proxy_pass表示代理主机
upstream tomcat_server{……}配置中配置了代理主机处理请求的两个服务。
上述配置表示:Nginx监听到http://locahost:8080的请求之后,转发到代理tomcat_server中的两个服务中的一个,有它们来处理请求。weight表示被分配到权重,weight值越大,处理请求的机会越多。
至此,Nginx的安装与配置结束。
五:测试
测试代码放入tomcat1,2下test/index.jsp中,启动各个服务
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%> <html> <body> SessionID:<%=session.getId()%> <BR> SessionIP:<%=request.getServerName()%> <BR> SessionPort:<%=request.getServerPort()%> <% out.println("apache-tomcat-7.0.55-02"); %> <%=(String)session.getAttribute("user")%> </body> </html>
结果
相关文章推荐
樱桃cherry.com域名价格或达7位数美元2022-09-06
紫燕食品上市,卤味市场域名哪家强?2022-09-27
新一期域名交易排行榜,国别域名MA.ca成无冕之王2022-09-27
威瑞信发布2022年Q2行业简报:.com注册量下降2022-09-27
域名Keys.xyz被元宇宙游戏终端收购2022-09-20