nginx-redis-tomcat8实现负载均衡,session共享
2018-01-18 09:52
603 查看
一、安装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)---每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,理论上可以解决session共享的问题,实际上并不是个好办法
6)nginx其它配置
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服务器上内容如下:
<%@ 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> current IP:192.168.10.18 <h1style="color:red;">Tomcat B </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 BBBBBBB");%> 为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"/>
全配置如下:
所有配置完成后访问:192.168.10.12:8081 应该能到tomcat的主页 ,输入192.168.10.12:8081/loadbalance可以看到显示的ip地址,sessionid等信息,不断刷新页面会发现sessionid不变,但是页面的ip地址在变化 ,到此配置成功
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)---每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,理论上可以解决session共享的问题,实际上并不是个好办法
6)nginx其它配置
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服务器上内容如下:
<%@ 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> current IP:192.168.10.18 <h1style="color:red;">Tomcat B </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 BBBBBBB");%> 为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地址在变化 ,到此配置成功
相关文章推荐
- tomcat+nginx+redis实现均衡负载、session共享(一)
- tomcat+nginx+redis实现均衡负载、session共享
- tomcat+nginx+redis实现均衡负载、session共享(一)
- nginx+tomcat+redis(session共享)实现负载均衡,动静分离
- tomcat+nginx+redis实现均衡负载、session共享---项目默认路径找不到
- tomcat+nginx+redis实现均衡负载、session共享(二)
- Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享
- tomcat+nginx+redis实现均衡负载、session共享(二)
- tomcat+nginx+redis实现均衡负载、session共享(一)
- tomcat+nginx+redis实现均衡负载、session共享(二)
- Linux+Nginx+Tomcat+Redis实现负载均衡,应用集群及session共享
- tomcat+nginx+redis实现均衡负载、session共享(二)
- tomcat+nginx+redis实现均衡负载、session共享---(推荐)
- tomcat+nginx+redis实现均衡负载、session共享(一)
- nginx+tomcat+redis实现负载均衡、动静分离、session共享
- tomcat+nginx+redis实现均衡负载、session共享
- Nginx+Redis+Tomcat实现负载均衡项目session共享
- 用Nginx+Redis实现session共享的均衡负载
- 用Nginx+Redis实现session共享的均衡负载
- Nginx+Tomca+Redis实现负载均衡、资源分离、session共享