好早前配置了负载均衡和session复制,今天写出来备忘。 方案: 一、基于request的负载均衡 该种方式下,负载均衡器 (load balancer)会根据各个node的情况,把每一个 http request进行分发。使用这样的均衡策略,就必须在多个node之间复制用户的session,实时保持整个cluster的用户状态同步,这种操做被称为session复制(session replication)。Jboss的实现原理是使用拦截器(interceptor),根据用户的同步策略拦截request,作同步处理后再交给server产生响应。 优势是客户不会被绑定都具体的node,只要还有一个node存活,用户状态都不会丢失,cluster都可以继续工做。 缺点是node之间通讯频繁,响应速度有影响,多并发、高频操做的状况下性能降低比较厉害。 二、 基于用户的负载均衡 该种方式下,当用户发出第一个request后,负载均衡器动态的把该用户分配到某个节点,并记录该节点的jvm路由,之后该用户的全部request都会被绑定这个jvm路由,用户只会与该server发生交互,这种策略被称为粘性session(session sticky)。 优势是响应速度快,多个节点之间无须通讯。 缺点也很明显,某个node死掉之后,它负责的全部用户都会丢失session。 采起方案: 目前采用第二种,也就是session stiky (1小时) 文件服务器的配置 (1天) Tomcat参数优化 (1天) 集群的配置 首先在apache 的conf目录下找到httpd.conf(apache 的配置文件)文件 在该文件里找到 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so 而且把上面的#号去掉 而后找到 Include conf/extra/httpd-vhosts.conf 把上面的#号去掉 在最后一行加上 ProxyRequests Off BalancerMember ajp://127.0.0.1:8010 loadfactor=1 route=tomcat3(与该tomcat里德jvmRote名字同样) BalancerMember ajp://127.0.0.1:8020 loadfactor=1 route=tomcat2 第二步找到\conf\extra包下面的httpd-vhosts.conf 在下面加上 ServerAdmin yancheng100088@163.com ServerName localhost ServerAlias localhost ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ ErrorLog "logs/dummy-host2.163.com-error.log" CustomLog "logs/dummy-host2.163.com-access.log" common 第三步找到解压后的tomcat在不一样的tomcat里修改server.xml里的端口参数使之不重复 (你们都知道就不详细说了) 这里改几个比较重要的参数 一个是 改为 另外一个后面改为tomcat3 而后加上 这个是session复制用的不须要session复制的能够不用 最后一步 在须要session复制的程序里面的web.xml里加上 Session粘性,通常用到粘性就不用sesssion复制了 只须要在httpd.conf里最后一段加上 ProxyRequests Off ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3 ProxyPassReverse / balancer://cluster/ BalancerMember ajp://127.0.0.1:8010 loadfactor=1 route=tomcat3 BalancerMember ajp://127.0.0.1:8020 loadfactor=1 route=tomcat2 就好了。node