Web应用优化之nginx+tomcat集群配置+redis管理session

1.nginx的安装

从官网下载一个nginx事务tar.gz版本,centos系统,安装好jdk

第一步解压

第二步:解压完成进入解压目录,执行./configure命令

需要安装gcc编译和pcre库,zlib库

yum -y install gcc

yum install pcre-devel

yum install zlib-devel

./configure完成后执行make install即可安装成功

2.集群配置流程

一、克隆2台CentOS虚拟机,并安装jdk+tomcat

二、安装1台CentOS虚拟机,并安装nginx(过程参见nginx安装流程.png) nginx的默认安装位置:/usr/local/nginx

1 启动nginx:    ./nginx  使用默认配置文件(/usr/local/nginx/conf/nginx.conf)        或    ./nginx -c /x/xx/xxx/nginx.conf  

2 测试    http://ip:80  或  http://ip   (nginx的默认端口80)

3 关闭    ./nginx -s stop

4 重启    ./nginx -s reload

5 查看线程    ps -ef | grep nginx   (查询主进程号)    kill -9 主进程号      (强制关闭)

三、配置集群环境 1 修改nginx的配置文件(默认位置:/usr/local/nginx/conf/nginx.conf)

1> 配置tomcat集群节点 在http节点内部,server节点外部 upstream tomcat-servers { server 192.168.1.103:8080; server 192.168.1.104:8080; }

2> 配置反向代理 在server节点内部:

1 修改nginx的配置文件(默认位置:/usr/local/nginx/conf/nginx.conf)
        1> 配置tomcat集群节点
            在http节点内部,server节点外部
            upstream tomcat-servers {
                server 192.168.1.103:8080;
                server 192.168.1.104:8080;
            }
        2> 配置反向代理
            在server节点内部:
            location / {
                proxy_pass http://tomcat-servers;
                proxy_redirect    off;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $http_host;
                proxy_next_upstream http_502 http_504 error timeout invalid_header;
            }
    2 启动所有tomcat节点,启动nginx,测试

1 默认:轮循
        upstream tomcat-servers {
            server 192.168.1.103:8080;
            server 192.168.1.104:8080;
        }
    2 iphash:基于ip   
        upstream tomcat-servers {
            ip_hash;
            server 192.168.1.103:8080;
            server 192.168.1.104:8080;
        }
    3 weight:权重轮询
        upstream tomcat-servers {
            server 192.168.1.103:8080 weight=1;
            server 192.168.1.104:8080 weight=2;
        }

ip_hash方式,一定程度上解决了负载均衡情况下session不一致,此时访问session会发生黏着,基于Tomcat ip的黏着状态;但如果此ip的Tomcat发生宕机,则负载均衡继续进行,seever切换后导致session会话再次丢失

session复制 造成空间浪费,也不合适

redis提供session共享 √

思路:redis的key是sessionid 值为session序列化的String

准备:jar包:commons-pool2-2.2.jar, jedis 2.8.jar,tomcat-redis-session-manage-tomcat7.jar

1.在tomcat的lib中引入:
    tomcat-redis-session-manage-tomcat7.jar
    jedis-2.8.1.jar
    commons-pool2-2.2.jar
    
2.在tomcat的context.xml中添加:
    <!--  配置session由redis管理,并指定redis的ip和port -->
    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>
    <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
        host = "192.168.0.203"  #redis服务器ip
        port="7000"  
        database="0"/>#redis的库

原文地址:https://www.cnblogs.com/lhc-hhh/p/10284819.html

时间: 2024-08-28 02:25:04

Web应用优化之nginx+tomcat集群配置+redis管理session的相关文章

Nginx+tomcat集群使用redis共享session

一 :nginx负载均衡 当Tomcat当做独立的Servlet容器来运行时,可看做是能运行Java Servlet的独立Web服务器. 此外 Tomcat还可以作为其他Web服务器进程内或者进程外的Servlet容器,从而与其他Web服务器集成(Apache Nginx IIS 等) 集成的意义在于:对于不支持运行java Servlet的其他Web服务器,可以通过集成Tomcat来提供运行Servlet的功能. ----------Tomcat与JavaWeb开发技术详解(孙卫琴的一本书)

nginx+tomcat集群配置(1)---根目录设定和多后端分发配置

前言: 对于javaer而言, nginx+tomcat集群配置, 已然成了web应用部署的主流. 大公司如此, 小公司亦然. 对于个人开发者而言, 资源有限, 往往多个web应用混部于一台服务器(云主机), 如何隔离访问这些服务资源? 彼此又不影响呢? nginx来为你排忧解难, ^_^. 本文将介绍tomcat的简单配置和部署, 以及nginx作为反向代理, 如何分流. 基础架构: 不成文的约定: 1). 一个tomcat容器部署一个webapp应用实例 2). url根目录访问webapp

nginx+tomcat集群配置(4)--rewrite规则和多应用根目录设定思路

前言: nginx中有一块很重要的概念, 就是rewrite规则. 它会对URL进行修改, 然后进行内部的重定向. rewrite授予了nginx更多的自由, 使得后级服务的接入更加地方便. 本文将简单讲述nginx的rewrite规则和原理, 同时讲解下如何借助rewrite实现单tomcat实例/多Web App服务 对应的多域名根目录访问. 案列目标: 首先来谈一下之前对于多Web App服务对应多域名根目录访问的方案. 注: 一个域名对应一个tomcat实例, 一个tomcat实例只包含

java集群优化——Nginx+tomcat集群配置-理论篇

我们了解一个道理,就是数据的增长是我们必然面对的问题,因为在技术日益变化的当下,我们收集数据的方式和存储及处理技术不断升级,迫使我们面对这一问题,并且,在数据挖掘日益火热的今天,我们也要对这样的问题加以重视,改变在所难免! 我们曾经想过,在极致优化的情况下,一台普通服务器,是可以挖掘出无穷的潜力的,我的们的确曾做到这一点,用一台2万元的设备,承载了同时1万余人的并发,但是随着技术的衍生,我们需要更灵活地处理应用,我们需要更及时的响应速度,我们需要实时地对数据进行分析和处理!这时,我们必然接触一个

nginx+tomcat集群负载均衡(实现session复制)

转自:http://talangniao.iteye.com/blog/341512 架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面(注:没做动静分离,静态动态全部都转给tomcat) 优点:实现了可弹性化的架构,在压力增大的时候可以临时添加tomcat服务器添加到这个架构里面去 一,配置nginx 1,  下载包 Wget http://sysoev.ru/nginx/nginx-0.6.32.tar.gz ftp://ftp.

Nginx+Tomcat负载平衡,Redis管理session存储

使用Nginx作为Tomcat的负载平衡器,Tomcat的会话Session数据存储在Redis,能够实现0当机的7x24运营效果.因为将会话存储在Redis中,因此Nginx就不必配置成stick粘粘某个Tomcat方式,这样才能真正实现后台多个Tomcat负载平衡,用户请求能够发往任何一个tomcat主机,当我们需要部署新应用代码时,只要停止任何一台tomcat,所有当前在线用户都会导向到运行中的tomcat实例,因为会话数据被序列化到Redis,在线用户不会受到影响,一旦停掉的tomcat

nginx+tomcat集群配置(3)---获取真实客户端IP

前言: 在初步构建的nginx+tomcat服务集群时, 发现webserver获取到的客户端ip都是同一个, 皆为作为反向代理服务的nginx所在的机器IP. 这不太符合我们的基本需求, 为将来的数据挖掘和分析带来了麻烦. 不过不用担心, 本文将简单介绍其背后的原因和原理, 以及具体的解决方案, ^_^. 原因分析: webserver在获取客户端ip时, 默认的方式是通过request.getRemoteAddr(), 这种方式本质是从直连的socket中获取到的. 因此客户端直连web s

nginx+tomcat集群配置(2)---静态和动态资源的分离

前言: 在web性能优化的领域, 经常能听到一个词, 就是静态/动态资源分离. 那静态/动态资源分离究竟是什么呢? 本文不讲文件系统服务, 云存储, 也不讲基于CDN的优化. 就简单讲讲基于nginx+tomcat的实现原理和部署方式. 体验: 我们先来看个例子, 比如访问百度首页. 其访问速度在各个资源的时间消耗比. html文件的获取很快, 时间消耗也少, 大部分时间都消耗在图片和javscript代码文件的下载中. 因此我们对网站访问速度的衡量评估, 有个较理性的定量标准. 基本原理: 动

window环境Nginx+Tomcat集群配置

一.下载地址 Nginx:http://nginx.org/en/download.html Tomcat:http://tomcat.apache.org/ 1.解压Nginx到:E:\server\nginx-1.2.9 命令行启动Nginx: 若果想停止nginx,dos环境运行命令:nginx -s stop 二.相关配置 2.Nginx配置: Nginx配置文件默认在conf目录,主要配置文件为nginx.conf,我们安装在E:\server\nginx-1.2.9.默认主配置文件为