Keepalived+Nginx+Tomcat+Redis实现高可用负载均衡(二)

01 前言   

    上期我们介绍keepalived与Nginx的配置<传送链接>,现在我们介绍一下Tomcat与Redis是怎么实现session共享。

     本文转自我个人的公众号:天目星    ,请大家多多关注。链接:前往天目星


一、使用的软件版本与架构图。

    linux: CentOS 7.5.1804

    Keepalived: keepalived-1.3.5

    Nginx: nginx-1.12.2

    Tomcat: apache-tomcat-7.0.93

    Redis: redis-3.2.12


二、安装软件(后端)

    1、安装Tomcat

    Tomcat是一个小型的免费的轻量级应用服务器,可用于开发和调试JSP程序,在并发访问用户不是很多的场合普遍使用。

    前提条件:tomcat需要java的支持,请可以前往Oracle下载rpm包安装。本例使用的是jdk-7u80-linux-x64.rpm

    源码包请自行前往Apache tomcat官网下载,我们使用的是Binary Distributions来安装。

    解压安装

# 解压tar xvf apache-tomcat-7.0.93.tar.gz# 移动二进制包到你想存放的路径mv apache-tomcat-7.0.93 /usr/local/tomcat# 创建tomcat用户,使用非root的用户运行更安全groupadd -r -g 310 tomcatuseradd -u 310 -g 310 -s /sbin/nologin tomcat# 授权tomcat用户chown -R tomcat.tomcat /usr/local/tomcat

    配置启动服务

    vim /usr/lib/systemd/system/tomcat.service

[Unit]Description=tomcatAfter=network.target[Service]User=tomcatGroup=tomcatType=forkingExecStart=/usr/local/tomcat/bin/startup.shExecStop=/usr/local/tomcat/bin/shutdown.shPrivateTmp=true[Install]WantedBy=multi-user.target

    配置tomcat

    #配置负载均衡中tomcat使用的标识符(不可重复)

    vim /usr/local/tomcat/conf/server.xml

# 两个节点相应的设置:jvmRoute="tomcat01" ,另一台设置"tomcat02"<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat01">

    2、安装Redis

    可以前期Redis官网下载源码安装,也可以使用yum源安装。

# 使用yum源安装redisyum install redis

    配置Redis(使用主从模式)

# 修改配置文件vim /etc/redis.conf ### 主节点配置 #### bind 127.0.0.0  #注释掉本地监听port 6400  #设定监听端口protected-mode no  #本例用于测试pidfile "/var/run/redis_6400.pid"### 从节点配置 #### bind 127.0.0.0  #注释掉本地监听port 6000protected-mode no  #本例用于测试pidfile "/var/run/redis_6400.pid"slaveof 192.168.0.3 6400  #主节点的IP地址

    配置Redis-Sentinel

# 修改配置文件vim /etc/redis-sentinel.conf### 主从配置一致 ###daemonize yes  #开启守护进程port 23456  #端口protected-mode no  #本例用于测试# 配置要监控主服务器(详解)# 定义主服务器名: mymaster# 主服务ip: 192.168.0.3# 主服务端口:6400# 设置为1个sentinel: 1   # 至少要1个sentinel发现主节点是故障的才进行转移sentinel monitor mymaster 192.168.0.3 6400 1# 设置sentinel认定一个服务器断线5000毫秒,sentinel就认定该服务DOWNsentinel down-after-milliseconds mymaster 5000# 设置发生主备切换时最多可以有多少个slave同时对新的master进行同步,本例只有一个slave,设置为1sentinel parallel-syncs mymaster 1

    测试Redis主从情况

# 使用redis客户端测试连接redi-cli -h 192.168.0.3 -p 6400# 连接上后使用 info replication 显示主从信息192.168.0.3:6400> info replication

    主节点信息

   

    从节点信息


    3、配置Tomcat连接Redis

    tomcat连接redis需要以下几个jar包的支持,请自行下载并拷贝至tomcat的lib目录

# cd /usr/local/tomcat/libtomcat-redis-session-manage.jarjedis.jarcommons-pool2.jar

    修改Tomcat的context.xml配置

# vim /usr/local/tomcat/conf/context.xml# 在<Context>中添加如下配置<Context>  <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>  <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"  host="192.168.0.3"  port="6400"  maxInactiveInterval="180"/><Context>

    配置tomcat会话到期时间

# vim /usr/local/tomcat/conf/web.xml<session-config>   <session-timeout>30</session-timeout></session-config>

   添加测试页至webapps中

# vim /usr/local/tomcat/webapps/test/index.jsp##############<%@ page contentType="text/html;charset=UTF-8" language="java" %><html>  <head>    <title>test page</title>  </head>  <body>    <h1>查询当前保存的Session信息</h1>      <ul>      <li><b>SessionID:</b> <%=session.getId()%> <BR>      <li><b>SessionIP:</b> <%=request.getRemoteAddr()%> <BR>      <li><b>SessionServerName:</b> <%=request.getServerName()%> <BR>      <li><b>SessionPort:</b> <%=request.getServerPort()%> <BR>      <li><b>SessionText:</b> <%out.println("This is Tomcat01");%>  </body></html>

    4、开始测试

    经过以上的配置,大家已经搭建好整个架构,现在我们需要磨刀霍霍向猪羊...哦,错了...应该向键盘输入命令把所有服务开启,并打开浏览器测试会话保存情况了。

    启动服务

# 启动顺序systemctl start nginx.servicesystemctl start keepalived.servicesystemctl start tomcat.servicesystemctl start redis.servicesystemctl start redis-sentinel.service

    打开浏览器

http://<your IP address>/test/index.jsp        

02 结尾 

    本期的又到了说再见的时候,相信大家通过这次演示可以初步了解此架构。当然这个架构还有许多需要补充的地方,欢迎大家一起讨论。后续还有其他演示,请继续关注此公众号。

请关注我的个人公众号

猜你喜欢

转载自blog.csdn.net/Gordon_luo/article/details/92763811
今日推荐