{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
1、单是从软件层面做负载,只能单主nginx服务器,主服务器挂了,系统就挂了
2、实现多台主nginx服务器,可采用dns负载均衡,即同一个域名绑定多个ip(nginx服务器),按顺序分发
3、实现多台主nginx服务器,可采用负载均衡硬件设备,分发到多个ip(nginx服务器)
4、综合上述三点
对于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的sessionsticky的功能,可通过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.2.6-win32-bin解压到x:/目录下面,重命名为memcached。
打开命令提示符,进入x:/memcached的目录,输入安装命令“memcached.exe–dinstall”,安装memcached的windows服务,
然后输入“memcached-dstart”,以后memcached将作为windows的一个服务每次开机时自动启动。
默认端口:11211。
下面插入介绍一些memcached的常用命名,也是最基本的命令,
(1)查看memcached的服务是否已经启动:tasklist/fi"imagenameeqmemcached.exe"
(2)memcached参数使用介绍
-p监听的端口-l连接的ip地址,默认是本机-dstart启动memcached服务-drestart重起memcached服务-dstop|shutdown关闭正在运行的memcached服务-dinstall安装memcached服务-duninstall卸载memcached服务-u以的身份运行(仅在以root运行的时候有效)-m最大内存使用,单位mb。默认64mb-m内存耗尽时返回错误,而不是删除项-c最大同时连接数,默认是1024-f块大小增长因子,默认是1.25-n最小分配空间,key+value+flags默认是48-h显示帮助
例如:c:memcachedmemcached.exe-h
解压并复制tomcat,分别为apache-tomcat-7.0.55-01和apache-tomcat-7.0.55-02
如下列表:
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到tomcatlib中
修改server.xml文件,同时添加https支持和tomcat双开的配置
修改文件tomcat/conf/context.xml,在context标签中加入如下代码:
3.启动tomcat的测试
将安装包nginx-1.3.0.zip解压到x:/目录
启动nginx:进入x:/nginx目录,执行命令:startnginx.exe,弹出屏会一闪而逝。
接着输入tasklist/fi"imagenameeqnginx.exe",出现如下内容,表示nginx已正常启动啦!
在浏览器输入http://localhost,可以看到nginx的欢迎页。
更多nginx常用命令:
停止nginx:nginx.exe-sstop|quit
重启nginx:nginx.exe-sreload
查看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表示代理主机
upstreamtomcat_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"%>
sessionid:<%=session.getid()%>结果