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集羣的簡單的思路和實現,還有不少完善的地方,針對服務的高可用和穩定性還須要作不少的工做,之後會把服務慢慢的加上去。

相關文章
相關標籤/搜索