nginx-tomcat負載平衡redis-session共用,靜態資源分離

來源:互聯網
上載者:User

標籤:tomcat nginx redis

基本環境:

redis-2.8

apache-tomcat-6.0.41

nginx1.6.2

1.redis配置1.1配置redis訪問密碼

到redis的目錄下找的redis.conf,解開requirepass注釋(此屬性用於設定密碼)。

如:

requirepass root

1.2啟動redis

到redis的目錄以後台啟動並執行方式啟動redis

 redis-server /root/redis-2.8.9/redis.conf &


2,tomcat準備工作2.1準備tomcat應用伺服器

部署一個應用到tomcat,將裡面的需要靜態處理的檔案,例如img,單獨存放在一個檔案夾下,如static下面。將使用者產生的媒體檔案存放到一個共用的目錄下,如/data/media下。後面用nginx配置處理。

2.2添加tomcat和redis做session共用的jar包

在tomcat自己的lib下添加session共用所需的jar包,需要注意tomcat的版本對應。

 

commons-pool-1.6.jar

jedis-2.1.0.jar

tomcat-redis-session-manager-1.2-tomcat-6.jar

2.3修改tomcat的context.xml配置

到tomcat的conf目錄下找到context.xml設定檔,在標籤<Context>下添加:

 

 <!-- 利用redis 進行session 共用 -->     <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />     <Manager className="com.radiadesign.catalina.session.RedisSessionManager"     host="127.0.0.1"     port="6379"     password="root"     database="0"     maxInactiveInterval="3600"/>

  

提供的配置中預設沒有password屬性,我們可以查看tomcat-redis-session-manager-1.2-tomcat-6.jar的源碼,可以在RedisSessionManager.class中找的password屬性。擷取【】  springmvc整合mybatis架構源碼 bootstrap

2.4複製tomcat修改各個tomcat的連接埠

配置完了tomcat和redis共用的配置之後,我們就可以將此tomcat複製多份,然後修改tomcat的連接埠,如:

tomcat1:Server port="8005",Connector port="8080",ajp Connector port="8009"

tomcat2:Server port="8006",Connector port="8081",ajp Connector port="8010"

tomcat3:Server port="8007",Connector port="8082",ajp Connector port="8011"

3 nginx配置3.1注釋預設訪問

在ngix的nginx/conf.d/下有個default.conf,將裡面的listen 80 default_server改為:

listen 80;

3.2在添加需要負載的應用伺服器

在ngix的nginx/conf.d/的建立一個conf,如test.conf。在裡面添加upstream pool配置段,將各個需要負載伺服器的地址填到下面:

 upstream pool{        server 127.0.0.1:8080;        server 127.0.0.1:8081;        server 127.0.0.1:8082;   }
3.3配置訪問網域名稱

繼續在test.conf中添加:

 

server {      listen 80 default_server;      server_name www.test.cn;      gzip on;      gzip_min_length  1k;      gzip_buffers     4 16k;      gzip_http_version 1.0;      gzip_comp_level 2;      gzip_types  text/plain application/x-javascript text/css application/xml;      gzip_vary on;       location / {        proxy_set_header Host $host;        proxy_set_header X-Forwarded-For $remote_addr;        proxy_connect_timeout   3;        proxy_send_timeout      30;        proxy_read_timeout      30;        proxy_pass http://pool;    }    error_page 500 502 503 504 /50x.html;    location = /50x.html{        root /home/workspace/server/apache-tomcat-6.0.41-8080/webapps/test;    }    if ($host != ‘www.test.cn‘ ){      rewrite ^/(.*)$ http://www.test.cn/$1 permanent;    }     }
3.4配置靜態資源訪問
  server {          listen 80;          server_name static.test.cn;          location /static {            root /home/workspace/server/apache-tomcat-6.0.41-8080/webapps/test;       }       location /media {             root /home/workspace/file;       }   }

 

3.5修改請求體的大小

在http {}裡增加 client_max_body_size屬性,此屬性會影響很多的地方,例如上傳。

client_max_body_size 100m;

4 啟動nginx和tomcat,測試

測試負載平衡:

啟動nginx和所有tomcat,然後到網頁登入,然後啟動另一個tomcat,關閉上一個。查看是否還能訪問。開啟所有tomcat用工具發起大量請求,查看請求是否被分發到各個tomcat。

測試session共用:

啟動nginx和一個tomcat,然後到網頁登入,然後啟動另一個tomcat,關閉上一個。查看是否還在登入狀態。


nginx-tomcat負載平衡redis-session共用,靜態資源分離

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.