nginx-redis-tomcat8实现负载均衡,session共享

本文详细介绍了如何在Ubuntu环境下安装与配置Nginx负载均衡器和Redis服务器,包括Nginx的upstream配置、权重分配、ip_hash算法及Redis的密码设置等。同时,还介绍了如何使用两个Tomcat服务器模拟应用服务器并通过Redis实现session共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装nginx (这里我单独建了一个虚拟机192.168.10.12来安装nginx,redis服务)
     1)使用命令安装nginx :apt install nginx
     2)配置nginx,配置文件位置:/etc/nginx/nginx.conf
     3)本文配置文件/sites-enabled/default因为nginx.conf中引用了此文件,所以可在此文件内配置
     4)配置如下:
           添加server端口监听,proxy_pass后http://test的test名称为upstream的名称

upstream test {

server 192.168.10.13:8080;

server 192.168.10.18:8080;

}

server{

    listen 8081;

    location / {

        proxy_pass        http://test;

    }

}

                   

     5)目前nginx的upstream支持的分配算法:
                轮询-----轮流处理请求(默认)在按本文搭建过后访问页面并不断刷新能明显看到13与18应用服务器不断切换
                权重(weight)-----配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。 
                ip_哈希算法(ip_hash)---每个请求按访问iphash结果分配,这样每个访客固定访问一个应用服务器,理论上可以解决session共享的问题,实际上并不是个好办法
     6nginx其它配置

 

upstream test {

server 192.168.10.13:8080 weight=2;

server 192.168.10.18:8080;

}

       down
          表示单前的server暂时不参与负载
           Weight
           默认为1.weight越大,负载的权重就越大。
           max_fails
           允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
           fail_timeout
           max_fails 次失败后,暂停的时间。
           Backup 
     7)使用ip_hash配置    

 

upstream test {



ip_hash;



server 192.168.10.13:8080 ;



server 192.168.10.18:8080 ;



}

     

到此nginx配置完毕,当然如果没有安装多的虚拟机也可以使用一台机器进行测试,ip地址修改为localhost,两个tomcat使用不
一样的端口即可          
     启动与关闭nginx:
     停止:nginx -s stop;启动:nginx  ;重载:nginx -s reload
二、redis服务器安装
     1、安装命令:apt install redis
     2、配置文件 :/etc/redis/reids.conf  
           注释掉bind 127.0.0.1 即为本机所有网卡
     3、redis启动与关闭命令:
                      启动redis: /etc/init.d/redis-serverstart
           如果修改了redis端口,使用redis-cli客户端连接时,也需指定端口如:
                          redis-cli -p 6380
     4、配置requirepass为设置redis密码,配置后tomcat中配置相应增加:redispass="";
三、 使用两个虚拟机tomcat8模拟两台应用服务器tomcat端口号都为8080
     本次测试新建了一个web项目loadbalance并添加页面index.jsp内容如下:
 
     在13服务器上的内容:

 

<%@ page language="java" contentType="text/html;charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

    currentIP :192.168.10.13

    <h1style="color:red;">Tomcat A

    </h1>

    <tablealign="centre"border="1">

    <tr>

        <td>SessionID</td>

        <td><%=session.getId()%></td>

    </tr>

    <tr>

         <td>Createdon</td>

        <td><%=session.getCreationTime()%></td>

    </tr>

    </table>

</body>

</html>

sessionID:<%=session.getId()%>

<br>

SessionIP:<%=request.getServerName()%>

<br>

SessionPort:<%=request.getServerPort()%>

<%

    out.println("This is TomcatServer A");

%>

    

           在18服务器上内容如下:

 

为tomcat8配置redis session共享

     网上有很多都是tomcat8以下版本,需要为tomcat引入jar包:

           tomcat-redis-session-manager.jar

           jedis.jar

           tomcat-juli.jar

           tomact-juli-adapters.jar

           commons-pool2.jar

 

     但是这种配置并不支持tomcat8,要支持tomcat8需要修改tomcat-redis-session-manager原码,这里偷个懒,使用别人现成的已经改好的包。源码下载地址:https://github.com/chexagon/redis-session-manager   ,下载完成过后将项目引入到eclipse工程中,导出这个项目所需要的jar包,并将此项目导出为jar文件,最后将项目中jar文件除tomcat的jar文件全部及导出的这个jar文件包放入到tomcat的lib文件下。
     导出maven项目所有jar的方法如下:
          
     配置如下:mvndependency:copy-dependencies 弹出窗口中输入如下图所示
          

     点击run执行完成后,jar包文件位置及jar文件如下:

     将工程导出为redis-session-manager.jar包并将这个包引入到tomcat 的lib目录下
 
     tomcat文件配置 context.xml中添加如下内容:
<ManagerclassName="com.crimsonhexagon.rsm.redisson.SingleServerSessionManager"
      endpoint="redis://192.168.10.12:6379"/>

 

 

     全配置如下:

 

 

<Manager className="com.crimsonhexagon.rsm.redisson.ElasticacheSessionManager"
	nodes="redis://node1.cache.amazonaws.com:6379 redis://node2.cache.amazonaws.com:6379 ..."
	nodePollInterval="1000"
	sessionKeyPrefix="_rsm_"
	saveOnChange="false"
	forceSaveAfterRequest="false"
	dirtyOnMutation="false"
	ignorePattern=".*\\.(ico|png|gif|jpg|jpeg|swf|css|js)$"
	maxSessionAttributeSize="-1"
	maxSessionSize="-1"
	allowOversizedSessions="false"
	masterConnectionPoolSize="100"
	slaveConnectionPoolSize="100"
	database="0"
	password="<null>"
	timeout="60000"
	pingTimeout="1000"
	retryAttempts="20"
	retryInterval="1000"
/>

     到此tomcat配置完毕 
 
 
 

 

所有配置完成后访问:192.168.10.12:8081  应该能到tomcat的主页 ,输入192.168.10.12:8081/loadbalance可以看到显示的ip地址,sessionid等信息,不断刷新页面会发现sessionid不变,但是页面的ip地址在变化 ,到此配置成功

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值