Tomcat集群+Nginx+Redis服务搭建

因为公司新业务忽然上来了,单个Tomcat实例已经不能知足业务发展的须要了,只能经过搭建集群来解决问题了。因此就出现了下面的内容:html

 

1.Redis保存Session信息

   为了保存Session信息在集群中可用,因此session信息不能保存Tomcat中,由于若是是这样的话要想实现Session信息的共享就必须经过Session复制的方式来同步Tomcat之间的Session信息,这样比较费力费力并且性能消耗比较大,因此选择经过redis来实现Session信息的保存和共享。nginx

1.1Redis的安装

  教程不少,不作赘述。(http://www.redis.cn/)c++

1.2Tomcat 使用Redis保存Session信息的配置修改

  下面只考虑一个Redis的状况,若是须要配置Redis的主从和集群还须要其余处理。git

1.2.1context.xml修改(位于conf目录下面)

<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

1.2.2server.xml修改(位于conf目录下面)

修改服务监听和关闭端口。redis

1.3所须要的相关Jar包文件(放在Tomcat下面的lib目录中)

  经过上面的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

3.Nginx

     由于有多个Tomcat实例,为了是每个实例均可以正常的对外服务,因此须要一个统一的请求处理入口,而后经过请求分发来实现对服务的处理,也就是负载均衡和转发 。由于有些其余的特殊需求,要保证每个服务和IP的关系,经过IP_HASH做为负载均衡的策略处理。

3.1Nginx的安装(centos)

    第一步:下载稳定版本的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)

3.2Nginx负责均衡的配置

  3.2.1 找到Nginx的安装路径(默认):/usr/local/nginx

  3.2.2 修改配置文件conf/nginx.conf

   #设定负载均衡的服务器列表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.提供服务

4.1 启动Redis服务

4.2放入服务逐个启动Tomcat

4.3启动Nginx服务

4.4能够正常提供服务了。

5.改进与说明

这只是提供了构建一个Tomcat集群的简单的思路和实现,还有不少完善的地方,针对服务的高可用和稳定性还须要作不少的工做,之后会把服务慢慢的加上去。

相关文章
相关标签/搜索