因为公司新业务忽然上来了,单个Tomcat实例已经不能知足业务发展的须要了,只能经过搭建集群来解决问题了。因此就出现了下面的内容:html
为了保存Session信息在集群中可用,因此session信息不能保存Tomcat中,由于若是是这样的话要想实现Session信息的共享就必须经过Session复制的方式来同步Tomcat之间的Session信息,这样比较费力费力并且性能消耗比较大,因此选择经过redis来实现Session信息的保存和共享。nginx
教程不少,不作赘述。(http://www.redis.cn/)c++
下面只考虑一个Redis的状况,若是须要配置Redis的主从和集群还须要其余处理。git
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" /> <Manager className="com.radiadesign.catalina.session.RedisSessionManager" host="localhost" port="6379" database="0" maxInactiveInterval="60" />
上面的配置文件中className 须要和tomcat-redis-session-manager包的路径信息保持一致,这个能够jar包能够经过Github获取(https://github.com/jcoleman/tomcat-redis-session-manager),本身打包获取,没有从MAVEN中仓库中获取到。github
修改服务监听和关闭端口。redis
经过上面的Github地址能够知道,还须要tomcat-redis-session-manager、redis的客户端操做工具jedis以及commons-pool2的支持,可是实际的操做过程当中发现还须要commons-logging-1.2\commons-pool-1.六、tomcat-juli-7.0.69的支持。注意注意相应的版本信息问题,若是jedis的版本信息太高就会出错,下面是个人相应的jar包列表。centos
2.Tomcat集群部署tomcat
2.1能够首先简单测试一下上面的Tomcat信息是否完成了Session信息保存在Redis中。很简单,写一个页面访问成功后,打印出相应的Session信息,关闭Tomcat后重启在此访问,判断Session信息是否一致便可,一致说明Session信息成功保存在了redis中,不然没有服务器
2.2将上面的tomcat复制多个便可,注意修改相应的服务端口号信息session
由于有多个Tomcat实例,为了是每个实例均可以正常的对外服务,因此须要一个统一的请求处理入口,而后经过请求分发来实现对服务的处理,也就是负载均衡和转发 。由于有些其余的特殊需求,要保证每个服务和IP的关系,经过IP_HASH做为负载均衡的策略处理。
第一步:下载稳定版本的Nginx,解压
第二步:yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
第三步:进入解压目录 ./configure --with-http_ssl_module
第四步: make & make install
能够参考文章(http://www.cnblogs.com/skynet/p/4146083.html)
#设定负载均衡的服务器列表ip_hash
upstream backend {
server 127.0.0.1:8080 ;
server 127.0.0.1:8081 ;
server 127.0.0.1:8082 ;
server 127.0.0.1:8083 ;
ip_hash;
}
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://backend;
}
关于nginx的配置文件的使用在这里不作说明。第一个配置须要指明负载发服务器地址和使用负载均衡策略。
4.1 启动Redis服务
4.2放入服务逐个启动Tomcat
4.3启动Nginx服务
4.4能够正常提供服务了。
这只是提供了构建一个Tomcat集群的简单的思路和实现,还有不少完善的地方,针对服务的高可用和稳定性还须要作不少的工做,之后会把服务慢慢的加上去。