服务器集群
nginx前段服务器,同时管理多个后端的服务器,可以使tomcat 或者weblogic等。 但是存在一些问题:
1.后端服务器之间的数据不能共享,如果一个客户机向一个tomcat发送登陆请求,再想另一个tomcat发送了看商品列表的请求,就会出现请求拒绝的情况,需要做到session共享 2.如果这里的nginx服务器挂了,整个服务器集群就会挂。HA:高可用,
3.这里的nginx会出现很多请求和响应都经过nginx,服务器集群会出现瓶颈的情况。 DR:直接路由
问题1解决方式:共享session
需要专门管理session的软件,memcached 缓存服务,可以和tomcat整合,帮助tomcat共享管理session。(就如同数据库连接池中的close方法,用户在调用close方法时不是真的将连接关掉,而是还给数据库连接池。)
memcached 缓存服务,可以和tomcat整合,帮助tomcat共享管理session。
设置多台服务器session共享: (特别注意,使用memcached需要使用高版本的tomcat7) 1.在一台服务器上安装memcached(内存数据库) 1、安装libevent 2、安装memcached 3、启动memcached
./memcached -d -m 128m -p 11211 -l 192.168.198.128 -u root -P /temp/ 4、拷贝jar到每个后端服务器tomcat的lib下 5、配置tomcat,每个tomcat里面的context.xml中加入 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.198.128:11211" //ip为mencached安装的服务器的ip,如果安装了多个memcached,需要配置多个ip sticky="false"
lockingMode="auto" sessionBackupAsync="false" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" /> 问题2,3: 使用Lvs(linux virtual server),使用ipvsadm管理 应用程序,Lvs的DR模式直接路由模式,给每一个服务器都配一个VIP(虚拟ip),后端服务器得到请求后直接向客户端响应,不再经过ngix。 (详见LVS的DR模式集群配置) 为了解决nginx服务器挂了,整个服务器集群就会挂的问题,需要使nginx高可用:keepalived(详见keepalived配置·)
|