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

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

 

基本環境:

redis-2.8javascript

Apache-tomcat-6.0.41css

nginx1.6.2html

1,redis配置

1,配置redis訪問密碼

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

如:nginx

requirepass rootweb

2,啓動redis

到redis的目錄之後臺運行的方式啓動redisredis

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

2,tomcat準備工做

1,準備tomcat應用服務器

部署一個應用到tomcat,將裏面的須要靜態處理的文件,例如img,單獨存放在一個文件夾下,如static下面。將用戶產生的媒體文件存放到一個共用的目錄下,如/data/media下。後面用nginx配置處理。tomcat

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

3,修改tomcat的context.xml配置

到tomcat的conf目錄下找到context.xml配置文件,在標籤<Context>下添加:

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. <!-- 利用redis 進行session 共享 -->  
  2. <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />  
  3. <Manager className="com.radiadesign.catalina.session.RedisSessionManager"  
  4. host="127.0.0.1"  
  5. port="6379"  
  6. password="root"  
  7. database="0"  
  8. maxInactiveInterval="3600"/>  


 

 

提供的配置中默認沒有password屬性,咱們能夠查看tomcat-redis-session-manager-1.2-tomcat-6.jar的源碼,能夠在RedisSessionManager.class中找的password屬性。

 

 

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配置

1,註釋默認訪問

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

listen 80;

2,在添加須要負載的應用服務器

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

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. upstream pool{  
  2.     server 127.0.0.1:8080;  
  3.     server 127.0.0.1:8081;  
  4.     server 127.0.0.1:8082;  
  5. }  


 

3,配置訪問域名

繼續在test.conf中添加:

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. server {  
  2.     listen 80 default_server;  
  3.     server_name www.test.cn;  
  4.     gzip on;  
  5.     gzip_min_length  1k;  
  6.     gzip_buffers     4 16k;  
  7.     gzip_http_version 1.0;  
  8.     gzip_comp_level 2;  
  9.     gzip_types  text/plain application/x-javascript text/css application/xml;  
  10.     gzip_vary on;  
  11.     location / {  
  12.       proxy_set_header Host $host;  
  13.       proxy_set_header X-Forwarded-For $remote_addr;  
  14.       proxy_connect_timeout   3;  
  15.       proxy_send_timeout      30;  
  16.       proxy_read_timeout      30;  
  17.       proxy_pass http://pool;  
  18.   }  
  19.   error_page 500 502 503 504 /50x.html;  
  20.   location = /50x.html{  
  21.       root /home/workspace/server/apache-tomcat-6.0.41-8080/webapps/test;  
  22.   }  
  23.   if ($host != 'www.test.cn' ){  
  24.     rewrite ^/(.*)$ http://www.test.cn/$1 permanent;  
  25.   }  
  26.    
  27. }  


 

 

4,配置靜態資源訪問

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. server {  
  2.      listen 80;  
  3.      server_name static.test.cn;  
  4.      location /static {  
  5.            root /home/workspace/server/apache-tomcat-6.0.41-8080/webapps/test;  
  6.      }  
  7.      location /media {  
  8.            root /home/workspace/file;  
  9.      }  
  10. }  


 

 

5,修改請求體的大小

在http {}裏增長 client_max_body_size屬性,此屬性會影響不少的地方,例如上傳。

client_max_body_size 100m;

 

 

4,啓動nginx和tomcat,測試

測試負載均衡:

啓動nginx和全部tomcat,而後到網頁登陸,而後啓動另外一個tomcat,關閉上一個。查看是否還能訪問。開啓全部tomcat用工具發起大量請求,查看請求是否被分發到各個tomcat。

 

測試session共享:

啓動nginx和一個tomcat,而後到網頁登陸,而後啓動另外一個tomcat,關閉上一個。查看是否還在登陸狀態。

相關文章
相關標籤/搜索