`
raymond.chen
  • 浏览: 1443666 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用Nginx实现Tomcat负载均衡,并使用Redis实现session共享

 
阅读更多

本文简单介绍如何使用Nginx来实现Tomcat的负载均衡,使用Nginx来作为静态资源服务器,使用Redis来实现session的共享。搭建环境如下:

操作系统: RedHat Enterprise Linux 7 64位

jdk: jdk-8u92-linux-x64

nginx: nginx-1.10.3

tomcat:apache-tomcat-8.5.31

redis: redis-3.2.9

 

部署图如下:


 

 Redis的安装配置(单节点)

    1、将安装包上传到/opt/study/redis目录下

    2、解压安装包

         cd /opt/study/redis

         tar -zxvf redis-3.2.9.tar.gz

     3、编译安装

         cd /opt/study/redis/redis-3.2.9

         make

         make PREFIX=/opt/software/redis install

      4、编辑配置文件

         将安装包的redis.conf配置文件复制到 /opt/software/redis/bin 目录下,并修改以下关键配置信息:

               #绑定本机IP地址

               bind 192.168.134.130

 

               #监听端口

               port 7001

 

               #是否作为守护进程运行

               daemonize yes

 

               pidfile /opt/software/redis/bin/redis.pid

               logfile /opt/software/redis/bin/redis.log

     5、启动Redis

           cd /opt/software/redis/bin

           ./redis-server ./redis.conf

 

 Tomcat的安装部署

     1、将安装包apache-tomcat-8.5.31.tar.gz上传到/opt/software/tomcat目录下

     2、解压安装包

          cd /opt/software/tomcat

          tar -zxvf apache-tomcat-8.5.31.tar.gz

      3、将测试用的web应用部署到tomcat的webapps目录下。测试程序自行开发

      4、启动tomcat

          cd /opt/software/tomcat/apache-tomcat-8.5.31/bin

          ./startup.sh

 

 springboot项目下使用spring-session实现session共享

     1、在pom.xml文件中添加依赖包

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.session</groupId>
	<artifactId>spring-session-data-redis</artifactId>
</dependency>

    

     2、创建配置类RedisSessionConfig.java

@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
public class RedisSessionConfig {
	
}

 

     3、在application.properties属性文件添加配置项

spring.redis.host=192.168.134.130
spring.redis.port=7001
spring.redis.timeout=30
spring.session.store-type=Redis
spring.session.redis.flushMode=IMMEDIATE

 

使用tomcat-cluster-redis-session-manager插件实现Tomcat的session共享

1、从 https://github.com/ran-jit/tomcat-cluster-redis-session-manager/wiki 下载插件的压缩包

2、将压缩包中的以下jar文件上传到tomcat的lib目录下,不同版本的插件对应不同的jar文件版本,本范例使用tomcat-cluster-redis-session-manager-2.0.zip版本的压缩包。

                commons-logging-1.2.jar

commons-pool2-2.4.2.jar

jedis-2.9.0.jar

tomcat-cluster-redis-session-manager-2.0.jar

3、将redis-data-cache.properties复制到TOMCAT的conf目录下,并修改里面的参数值

     redis.hosts=192.168.134.130:7001

4、编辑TOMCAT的conf/context.xml文件,在最后的</Context>前加入以下配置:

<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />

 

Nginx的安装配置

    1、将安装包上传到/opt/study目录下

    2、解压安装包

         cd /opt/study

         tar zxvf nginx-1.10.3.tar.gz

    3、编译安装

         cd /opt/study/nginx-1.10.3

         ./configure --prefix=/opt/software/nginx

         make

         make install

     4、编辑/opt/software/nginx/conf/nginx.conf配置文件

#user  nobody;
worker_processes  1;

error_log  logs/error.log  info;

pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log;

    sendfile        on;

    keepalive_timeout  65;

    #gzip  on;
	
	upstream tomcat_server{
		server 192.168.134.128:8080 weight=1;
		server 192.168.134.129:8080 weight=1;
	}

    server {
        listen       80;
        server_name  192.168.134.127;
		
		#处理静态资源
		location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { 
			root /opt/software/nginx/html;
			expires 30d; 
		} 
		
		#访问tomcat下的demo应用
		location ~* /demo/ {
            proxy_pass http://tomcat_server;
			proxy_redirect default;
        }
		
        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

     5、启动nginx

         cd /opt/software/nginx/sbin

         ./nginx

 

Nginx实现静态资源服务器

    可以将静态网页、图片、css样式文件、js脚本文件等静态资源文件部署到Nginx服务器中,当客户端请求这些静态资源时,Nginx将直接返回这些静态资源,无需经过后台的应用服务器。

 

假设demo/index.jsp文件的内容如下:

<%@ page session="true" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html>
<html lang="en">
    <head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<link rel="stylesheet" href="static/css/common.css" />
        <title>demo page</title>
    </head>
    <body>
		<img src="static/images/personal.png">
		<script type="text/javascript" src="static/js/common.js"></script>
    </body>
</html>

 

则静态资源文件在Nginx下的目录结构如下:

/opt/software/nginx/html/demo/static
	css
		common.css
	images
		personal.png
	js
		common.js

 

Nginx的配置文件需要添加以下配置信息:

location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { 
	root /opt/software/nginx/html;
	expires 30d; 
}

 

  • 大小: 22.8 KB
分享到:
评论

相关推荐

    nginx+redis负载均衡、session共享

    在构建高性能、高可用的Web服务时,"nginx+redis负载均衡、session共享"是一个常见的解决方案。这个方案结合了Nginx的反向代理和负载均衡能力,以及Redis的内存数据存储和分布式特性,用于处理高并发场景下的HTTP...

    Nginx+tomcat 实现负载均衡session共享demo

    本教程将详细讲解如何通过`Nginx`实现`Tomcat`集群的负载均衡,并实现`session`共享。 首先,我们要理解负载均衡的基本概念。负载均衡是通过将工作负载分散到多个计算资源,以优化资源使用、最大化吞吐量、最小化...

    nginx+tomcat实现负载均衡,共享session的两种方式

    nginx+tomcat实现负载均衡,共享session的两种方式: 1.使用Redis共享session 2.使用tomcat的组播功能。

    实现基于nginx的tomcat负载均衡和集群配置

    同时,可以使用共享的session存储(如Redis)来进一步提高效率和可靠性。 总结来说,通过Nginx实现基于Tomcat的负载均衡和集群配置,可以有效提高Web服务的可用性、响应速度和扩展性。这不仅降低了单点故障的风险,...

    nginx+tomcat7负载均衡+redis缓存session

    这种模式结合了Nginx的反向代理和负载均衡能力,Tomcat作为Java应用服务器处理业务逻辑,而Redis则用于高效地存储和共享用户会话(session)数据。下面我们将详细探讨这些技术组件及其相互作用。 **Nginx** Nginx...

    nginx+tomcat+redis完成session共享

    这个小例子"nginx+tomcat+redis完成session共享"旨在演示如何通过这三种技术实现跨服务器的用户会话共享,以提升用户体验并简化系统管理。以下是这些技术及其在会话共享中的作用: 1. **Nginx**:Nginx是一款高性能...

    Nginx+Tomcat+Redis实现负载均衡过程中session所需架包

    本篇将详细讲解如何在Nginx+Tomcat+Redis环境中实现负载均衡,并讨论session管理的关键知识点。 首先,Nginx是一个强大的HTTP和反向代理服务器,它能够通过分发请求到多个后端服务器来实现负载均衡。Nginx支持多种...

    CentOS7下Nginx+Tomcat负载均衡及Redis共享Session解决方案

    通过上述步骤,我们成功地在`CentOS7`上配置了`Nginx+Tomcat`的负载均衡,并使用`Redis`实现了跨服务器的Session共享。这样的架构可以有效地分发用户请求,提高系统整体的可用性和响应速度,同时保证了用户会话的...

    nginx+Redis+tomcat实现session共享jar

    包含的jar包如下: commons-pool2-2.0.jar jedis-2.5.2.jar tomcat-juli-adapters.jar tomcat-juli.jar tomcat-redis-session-manager1.2.jar

    nginx,tomcat,Redis,Session共享

    ### Nginx、Tomcat与Redis实现Session共享详解 #### 一、背景介绍 随着互联网技术的发展,越来越多的应用系统需要支持高并发访问。在这种场景下,单台服务器往往难以满足需求,因此通常会采用集群的方式来分担负载...

    Redis实现Nginx+Tomcat在windows平台上配置负载均衡的session共享(2)

    标题 "Redis实现Nginx+Tomcat在windows平台上配置负载均衡的session共享(2)" 指向的是一个关于如何在Windows环境下使用Redis来实现Nginx与Tomcat之间的session共享,从而达到负载均衡配置的技术实践。在这个过程中...

    Tomcat7+Redis+Session 负载之后session 共享 tomcat jar包

    标题 "Tomcat7+Redis+Session 负载之后session 共享 tomcat jar包" 涉及的是在使用Nginx做负载均衡时,如何通过集成Redis来实现Tomcat7服务器之间的Session共享,从而确保用户在不同服务器之间切换时仍然能够保持...

    nginx-tomcat-redis负载均衡,session共享依赖jar包

    确保这些jar包被正确地引入到项目中,并遵循相应的配置步骤,即可实现`nginx`、`Tomcat`和`Redis`的负载均衡和session共享。 总之,结合`nginx`的负载均衡能力、`Tomcat`的应用处理能力以及`Redis`的高效数据存储,...

    Windows+Nginx+Tomcat做负载均衡同时实现session共享Demo2

    这里我们关注的是如何在Windows环境下,利用Nginx作为反向代理服务器,与Tomcat应用服务器集群配合,实现负载均衡,并且确保Session数据在多个Tomcat实例之间共享。这个场景对于大型网站或高并发的应用尤其实用,...

    Nginx+tomcat负载均衡集群session复制 windos

    本文将详细介绍如何在Windows环境下,利用Nginx作为反向代理服务器,与Tomcat集群配合实现负载均衡,并进行session复制,确保用户会话在不同服务器之间的一致性。 首先,Nginx是一款轻量级、高性能的HTTP和反向代理...

    Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享

    Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享 Nginx、Tomcat和Redis是三大热门的开源软件,分别...通过使用Nginx、Tomcat和Redis,我们可以实现负载均衡、资源分离和session共享,提高网站的性能和可用性。

    tomcat nginx redis 负载均衡session 共享 所需jar 包

    这里我们将深入探讨如何使用Tomcat、Nginx和Redis实现这两大功能,并关注涉及的jar包。 首先,Tomcat是Apache软件基金会的一个开源Java Servlet容器,广泛用于部署Java Web应用程序。在多台Tomcat服务器上实现负载...

    nginx+tomcat集群+redis实现session共享

    目前只支持tomcat8.5,其它版本的tomcat还没测试,自己配置过很多nginx+tomcat集群+redis实现session共享的系统,经过仔细总结得出这些,可以说是知识的结晶,欢迎大家来下载,不好的地方可以多提,有问题看到的话会...

    linux下Tomcat+nginx+redis负载均衡配置

    Linux 下 Tomcat+nginx+redis 负载均衡配置是指在 Linux 操作系统下,使用 Tomcat、nginx 和 Redis 实现负载均衡和资源共享的配置方法。该配置主要通过 nginx 实现负载均衡,Tomcat 提供 Web 服务,Redis 提供 ...

    Nginx+Tomcat+Redis搭建高性能负载均衡集群Session共享

    超详细Nginx+Tomcat+Redis搭建高性能负载均衡集群Session共享搭建说明,按文档步骤可轻松搭建并实现session共享

Global site tag (gtag.js) - Google Analytics