Tomcat集群+Nginx+Redis服務搭建


由於公司新業務突然上來了,單個Tomcat實例已經不能滿足業務發展的需要了,只能通過搭建集群來解決問題了。所以就出現了下面的內容:

 

1.Redis保存Session信息

   為了保存Session信息在集群中可用,所以session信息不能保存Tomcat中,因為如果是這樣的話要想實現Session信息的共享就必須通過Session復制的方式來同步Tomcat之間的Session信息,這樣比較費力費力而且性能消耗比較大,所以選擇通過redis來實現Session信息的保存和共享。

1.1Redis的安裝

  教程很多,不做贅述。(http://www.redis.cn/)

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

  下面只考慮一個Redis的情況,如果需要配置Redis的主從和集群還需要其他處理。

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中倉庫中獲取到。

1.2.2server.xml修改(位於conf目錄下面)

修改服務監聽和關閉端口。

1.3所需要的相關Jar包文件(放在Tomcat下面的lib目錄中)

  通過上面的Github地址可以知道,還需要tomcat-redis-session-manager、redis的客戶端操作工具jedis以及commons-pool2的支持,但是實際的操作過程中發現還需要commons-logging-1.2\commons-pool-1.6、tomcat-juli-7.0.69的支持。注意注意相應的版本信息問題,如果jedis的版本信息過高就會出錯,下面是我的相應的jar包列表。

 

2.Tomcat集群部署

 2.1可以首先簡單測試一下上面的Tomcat信息是否完成了Session信息保存在Redis中。很簡單,寫一個頁面訪問成功后,打印出相應的Session信息,關閉Tomcat后重啟在此訪問,判斷Session信息是否一致即可,一致說明Session信息成功保存在了redis中,否則沒有

2.2將上面的tomcat復制多個即可,注意修改相應的服務端口號信息

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集群的簡單的思路和實現,還有很多完善的地方,針對服務的高可用和穩定性還需要做很多的工作,以后會把服務慢慢的加上去。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM