码迷,mamicode.com
首页 > 其他好文 > 详细

nginx-tomcat负载均衡redis-session共享,静态资源分离

时间:2014-12-21 16:40:39      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:负载均衡   tomcat   nginx   redis   session   

 

nginx-tomcat负载均衡redis-session共享,静态资源分离

 

基本环境:

redis-2.8

apache-tomcat-6.0.41

nginx1.6.2

1redis配置

1,配置redis访问密码

redis的目录下找的redis.conf,解开requirepass注释(此属性用于设置密码)。

如:

requirepass root

2,启动redis

redis的目录以后台运行的方式启动redis

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

2tomcat准备工作

1,准备tomcat应用服务器

部署一个应用到tomcat,将里面的需要静态处理的文件,例如img,单独存放在一个文件夹下,如static下面。将用户产生的媒体文件存放到一个共用的目录下,如/data/media下。后面用nginx配置处理。

2,添加tomcatredissession共享的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,修改tomcatcontext.xml配置

tomcatconf目录下找到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属性。

 技术分享

 

4,复制tomcat修改各个tomcat的端口

配置完了tomcatredis共享的配置之后,我们就可以将此tomcat复制多份,然后修改tomcat的端口,如:

tomcat1Server port="8005"Connector port="8080"ajp Connector port="8009"

tomcat2Server port="8006"Connector port="8081"ajp Connector port="8010"

tomcat3Server port="8007"Connector port="8082"ajp Connector port="8011"

 

3nginx配置

1,注释默认访问

ngixnginx/conf.d/下有个default.conf,将里面的listen 80 default_server改为:

listen 80;

2,在添加需要负载的应用服务器

ngixnginx/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,配置访问域名

继续在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;
  }
 
}


 

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;
     }
}


 

5,修改请求体的大小

http {}里增加 client_max_body_size属性,此属性会影响很多的地方,例如上传。

client_max_body_size 100m;

 

 

4,启动nginxtomcat,测试

测试负载均衡:

启动nginx和所有tomcat,然后到网页登录,然后启动另一个tomcat,关闭上一个。查看是否还能访问。开启所有tomcat用工具发起大量请求,查看请求是否被分发到各个tomcat

 

测试session共享:

启动nginx和一个tomcat,然后到网页登录,然后启动另一个tomcat,关闭上一个。查看是否还在登录状态。

 

 

nginx-tomcat负载均衡redis-session共享,静态资源分离

标签:负载均衡   tomcat   nginx   redis   session   

原文地址:http://blog.csdn.net/soilove7/article/details/42061281

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!