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

基本环境:

redis-2.8

apache-tomcat-6.0.41

nginx1.6.2

1,redis配置

1,配置redis访问密码

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

如:

requirepass root

2,启动redis

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

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

2,tomcat准备工作

1,准备tomcat应用服务器

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

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>下添加:

  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"

获取【下载地址】  springmvc+mybatis+spring 整合 bootstrap html5 mysql oracle SSM

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配置段,将各个需要负载服务器的地址填到下面:

  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中添加:

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

4,配置静态资源访问

  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,关闭上一个。查看是否还在登录状态。

时间: 2024-12-18 04:13:22

nginx-tomcat负载均衡redis-session共享,静态资源分离的相关文章

Nginx做负载均衡时session共享问题详解

用nginx做负载均衡时,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 再者Nginx连接Memcached集群时,Nignx的请求从memcached服务器中根据key获得了value则直接返回value,如果没有获得到value则去MySQL中查询再返回. location / { set $memcached_key "$request_uri"; #设置请求memcached服务器的key memca

linux+nginx+tomcat负载均衡,实现session同步

第一部分:nginx反向代理tomcat 一.软件及环境 软件 系统 角色 用途 安装的软件 ip地址 Centos6.5x86_64 nginx 反向代理用户请求 nginx 172.16.249.210 Centos6.5x86_64 tomcat1 处理jsp请求  jdk+tomcat 172.16.249.101 Centos6.5x86_64 tomcat2 172.16.249.100 Centos6.5x86_64 mog(ilefs/store) 分布式存储静态数据 mogil

Nginx+MVC负载均衡实现Session共享

了解了Nginx之后,也对Nginx实践了,但是Nginx的理论,我只能记得一丢丢: Nginx是一款高性能的反向代理服务器,类似的服务器还有Apatch,Tomcat, 目前我只使用过Nginx,自己也实践了一下:这是使用Nginx代理的 网站 有兴趣的可以了解下 ( 但是,求你们别搞它,好嘛???有什么事情咱们留言说,不要对我的服务器过不起,行吧,大哥     ) 网站  Cgrain的网站 据我了解 Nginx 可实现的几大功能 1: 反向代理 2:动静分离 3:负载均衡 1反向代理 我们

Nginx+Tomcat负载均衡之session问题

Nginx与Tomcat做负载均衡的时候有一个重要的问题必须考虑,那就是Session. 试想一下,假设Nginx采用轮询策略,应用被部署到tomcat1和tomcat2上,用户访问tomcat1时被要求先登录,于是用户登录.接下来用户再次发起应用的请求时,会由tocmat2进行处理(因为轮询,请求被依次交替转发到tomcat1和tomcat2上),这次tomcat2发现用户没登录,于是要求用户登录,这是用户就很疑惑呀,我刚才登录成功了呀,怎样还要登录.造成这个现象的原因是用户session保存

nginx tomcat负载均衡 使用redis session共享

环境准备 1.准备一台nginx服务器 ip192.168.1.133 端口81 安装过程: #首先安装依赖: yum -y install gcc-c++ yum -y install pcre pcre-devel yum -y install zlib zlib-devel yum -y install openssl openssl-devel #注意 : 安装nginx必须使用 root 用户安装 #创建一个nginx目录 mkdir /usr/local/src/nginx #进入到

nginx+tomcat+redis负载均衡及session共享

概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.org/download/nginx-1.6.0.tar.gz 负载均衡 commons-pool-2-2.4.2.jar http://mirrors.hust.edu.cn/apache//commons/pool/binaries/commons-pool2-2.4.2-bin.tar.gz j

haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)

一.安装HAProxy 1.进入home目录,下载最新haproxy安装包. cd /home wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz 2.解压: tar -zxvf haproxy-1.4.24.tar.gz 重命名为haproxy mv haproxy-1.4.24.tar.gz haproxy 创建目录/usr/local/haproxy mkdir /usr/local/haproxy 3.安装

linux+nginx+tomcat负载均衡,实现session同步

linux+nginx+tomcat负载均衡,实现session同步 花了一个上午的时间研究nginx+tomcat的负载均衡测试,集群环境搭建比较顺利,但是session同步的问题折腾了几个小时才搞定,现把我的过程贴上来,以备用.软件及环境是:虚拟机上装centos 5.5IP为:192.168.0.51 装上nginx和tomcat  6.0.32 命名为 Tomcat1一台win7上装tomcat  6.0.32  IP为:192.168.0.50  命名为 Tomcat2 首先装ngin

Nginx+Tomcat+Memcached集群Session共享

提供给大家整合实例: http://download.csdn.net/detail/zld1987/9577962 cookie是怎样工作的? 例如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是"Michael Jordan",同时还对所创建的Cookie的属性如path.domain.expires等进行了指定. Set-Cookie:login=Michael Jordan;path

【转】Nginx+Tomcat+Memcached集群Session共享

cookie是怎样工作的? 例 如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名 是“Michael Jordan”,同时还对所创建的Cookie的属性如path.domain.expires等进行了指定. Set-Cookie:login=Michael Jordan;path=/;domain=msn.com; expires=Monday,01-Mar-99 00:00:01 GMT 上面这个H