阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

通过Nginx+Tomcat+Redis实现持久会话

434次阅读
没有评论

共计 6055 个字符,预计需要花费 16 分钟才能阅读完成。

通过 Nginx+Tomcat+Redis 实现持久会话

  • 使用开源 Web 应用 solo blog 进行项目演示。前端使用 Nginx 作为负载均衡器,后端 Tomcat 连接 Redis 实现 session 存储。Redis 的特点就是可以将 session 持久化。样才能真正实现后台多个 Tomcat 负载平衡,用户请求能够发往任何一个 tomcat 主机。
  • keeplived、zabbix 与 ansible 暂不在本文章的范围当中, 会在之后的文章逐一进行讲解

实验架构图

  • 部署环境
    CentOS7
    Nginx1.10.2
    Tomcat7.0
    Redis3.2.3
    Mariadb 5.5.44
  • 所需软件包
    commons-pool2-2.2.jar
    jedis-2.5.2.jar
    tomcat-redis-session-manager-2.0.0.jar
    下载地址 https://github.com/izerui/tomcat-redis-session-managercommons-pool2-2.2.jar
    solo blog
    下载地址 http://b3log.org/
    通过 Nginx+Tomcat+Redis 实现持久会话

一、Nginx 服务器配置

  • 安装前准备

    ntpdate 172.18.0.1
    iptables -F
  • 安装 Nginx

    yum install nginx
  • 修改配置文件
    upstream tomcatservers:创建后端服务器组,要在 http 内部追加
    location:匹配 URL,在 server 内部追加
    注:省略号为其他默认的参数,如果没有特殊需要按默认即可

    vim /etc/nginx/nginx.conf
    http {
    ...
    upstream tomcatservers {server 172.18.68.21:8080;
        server 172.18.68.22:8080;
        }
    ...
    server {
    ...
        location / {proxy_pass http://tomcatservers;
         }
    ...
    }
    }
    systemctl start nginx
  • 检查端口
    启动服务器要检查 80 端口是否正常监听

    ss -ntl

二、Tomcat 服务器配置

两台 Tomcat 服务器的配置完全一样。以下步骤在两台主机重复操作即可

  • 安装前准备

    ntpdate 172.18.0.1
    iptables -F
  • 安装 Tomcat

    yum install Tomcat
  • 部署 solo
    .war 包复制到 webapps 目录下后重启 tomcat,tomcat 会自动解压其文件

    cp solo-2.4.1.war  /usr/share/tomcat/webapps/
    systemctl restart tomcat
  • 配置 solo
    serverhost 为前端负载均衡的域名或者 IP,如果部署完毕后出现静态资源无法加载的情况,多数是这里出了问题。

    cd /usr/share/tomcat/webapps/solo-2.4/WEB-INF/classes
    vim latke.properties
      #### Server ####
      # 配置协议
      serverScheme=http
      # 配置客户端访问站点时的域名或 IP,也就是前端 Nginx 的域名
      serverHost=www.shuaiguoxia.com
      # 使用的端口
      serverPort=80
  • 配置 solo 连接 MySQL
    H2 runtime 的部分是 solo 默认使用的,把他手动注释掉后把 MySQL runtime 部分注释取消。
    设定 MySQL 的用户名密码,然后把 172.18.68.41 改为 MySQL(主)的 IP 地址。

    #### H2 runtime ####
    #runtimeDatabase=H2
    #jdbc.username=root
    #jdbc.password=
    #jdbc.driver=org.h2.Driver
    #jdbc.URL=jdbc:h2:~/solo_h2/db
    #jdbc.pool=h2
    #
    #### MySQL runtime ####
    runtimeDatabase=MYSQL
    jdbc.username=root                     # 用户名
    jdbc.password=123456                   # 密码
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.URL=jdbc:mysql://172.18.68.41:3306/solo?useUnicode=yes&characterEncoding=utf8
    jdbc.pool=druid
  • 配置 Tomcat 连接 Reids

    Tomcat 连接 Reids 需要 3 个软件包:
    commons-pool2-2.2.jar
    jedis-2.5.2.jar
    tomcat-redis-session-manager-2.0.0.jar
    下载地址 https://github.com/izerui/tomcat-redis-session-manager

  • 将所需要的 jar 包复制到 /usr/share/tomcat/lib/

    cp commons-pool2-2.2.jar /usr/share/tomcat/lib/
    cp jedis-2.5.2.jar
    cp tomcat-redis-session-manager-2.0.0.jar
  • 修改 contest.xml 文件, 再文件中加入以下两行。
    IP 为 RedisIP 地址,端口为 Redis 监听的端口

    vim /etc/tomcat/context.xml
    #
     <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
      <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"  
       host="172.18.68.31"  
       port="6379"  
       database="0"  
       maxInactiveInterval="60" />
  • 重启 Tomcat

    systemctl restart tomcat

三、Redis 服务器配置

Redis 服务器一共两台,一主一从。仅仅配置文件不同,其他过程全部相同。

  • 安装前准备

    ntpdate 172.18.0.1
    iptables -F
  • 安装 Redis

    yum install Redis
  • Redis 主节点的配置
    主节点仅配置 IP、监听的端口、与连接密码

    vim /etc/redis.conf
    bind 0.0.0.0                            # 监听所有 IP
    port 6379                               # 设定监听的端口
    requirepass 123456                      # 设定连接的密码
  • Redis 从节点配置
    从节点设置为只读

    bind 0.0.0.0                            # 监听所有 IP
    slaveof 172.18.68.31 6379               # 设定主节点的 IP+ 端口
    masterauth 123456                       # 主节点的连接密码
    slave-read-only yes                     # 从节点为只读
  • 确认主从配置成功

    shell > redis-cli -h 172.18.68.32        # 连接从服务器redis
    127.0.0.1:6379> INFO replication         # 查看主从复制状态信息
    # Replication
    role:slave
    master_host:172.18.68.31                 # 主节点IP
    master_port:6379                         # 主节点的端口
    master_link_status:up                    # up为主从同步正常
    master_last_io_seconds_ago:9
    master_sync_in_progress:0
    slave_repl_offset:1420
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_repl_offset:0
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0

四、MySQL 服务器配置

MySQL 服务器一共两台,一主一从。仅仅配置文件不同,其他过程全部相同。

  • 安装前准备

    ntpdate 172.18.0.1
    iptables -F
  • 安装 Mariadb

    yum install Mariadb
    #
    #
    # 运行初始化脚本对 MySQL 进行
    cd /usr/local/mysql/bin
    mysql_secure_installation          #MySql 初始化脚本,以下为每一项的翻译
      先回车
      是否设置 root 密码
      输入密码
      确认密码
      是否设置匿名用户
      是否允许 root 远程登录
      删除 test 数据库
      现在是否生效
  • MySQL 主服务器的配置
    主从同步就必须要开启二进制日志,修改配置文件一共有两点。
    1.server-id 必须不能冲突
    2. 在主服务器创建授权用户,让用户有复制权限。

    shell > vim /etc/my.cnf
    server-id=1                                         # 节点 ID
    log-bin=mysql-bin                                   # 指定二进制日志前缀
    relay-log=mysql-relay-bin                           # 指定 relaylog 日志前缀
    replicate-wild-ignore-table=mysql.%                 # 排除要复制的表
    replicate-wild-ignore-table=test.%
    replicate-wild-ignore-table=information_schema.%

    在主服务器行创建授权用户,让从服务器有权限复制主服务器数据。授权用户应该匹配最小权限法则,允许连接的 IP 地址越精确越好。

    Musql > grant replication slave on *.* to 
     'slave_user'@'10.0.0.67' identified by '123456';
  • MySQL 从服务器的配置
    MySQL 的主从配置也仅仅是 server-id 不同

    shell > vim /etc/my.cnf
    server-id=2                                         # 节点 ID
    log-bin=mysql-bin                                   # 指定二进制日志前缀
    relay-log=mysql-relay-bin                           # 指定 relaylog 日志前缀
    replicate-wild-ignore-table=mysql.%                 # 排除要复制的表
    replicate-wild-ignore-table=test.%
    replicate-wild-ignore-table=information_schema.%

    在从服务器连 mysql 命令行配置, 配置主节点的 IP、用户名密码。最重要的是 master_log_file、master_log_pos,这两项是在主节点上查询后的结果,要与主节点查询结果相同。

    # 在 MySQL 主服务器中查询结果
    MariaDB [(none)]> show master status\G;
    *************************** 1. row ***************************
            File: master-log.000003
            Position: 18893845
            Binlog_Do_DB: 
            Binlog_Ignore_DB: 

    配置 MySQL 从服务器

    MySQL > change master to 
    master_host='10.0.0.66',
    master_user='slave_user',
    master_password='123456',
    master_log_file='mysql-bin.000001',
    master_log_pos=106;`
  • 查看主动同步情况
    在从服务器中查看主从同步情况。最后两行的 yes 标志着主从同步成功。还可以通过查询表、库甚至数据的方式查询验证主从同步情况。

    MariaDB [(none)]> show slave status\G;
    *************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 172.18.68.41
                  Master_User: slave-user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-log.000002
          Read_Master_Log_Pos: 245
               Relay_Log_File: mysql-relay-bin.000002
                Relay_Log_Pos: 530
        Relay_Master_Log_File: master-log.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

部署完毕

通过浏览器访问 172.18.68.11/solo-2.4 就能访问部署的 solo 博客,初次进入会让你注册一个用户密码,就是管理员账号密码。
通过 Nginx+Tomcat+Redis 实现持久会话
至此不管 Nginx 怎样调度,Tomcat 都能将客户端的 session 保存在 Redis 中。可以通过 windwos 的 Redis 管理软件查看到在 Redis 主从两个数据库都有了 session 信息。
 通过 Nginx+Tomcat+Redis 实现持久会话

 

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

Ubuntu 16.04 下安装 Tomcat 8.5.9  http://www.linuxidc.com/Linux/2017-06/144809.htm

Ubuntu 16.04 安装 Tomcat 8 图解  http://www.linuxidc.com/Linux/2017-10/147773.htm

Tomcat 配置文件 server.xml 详解  http://www.linuxidc.com/Linux/2017-10/148003.htm

Tomcat 单机多实例部署 - 多项目部署  http://www.linuxidc.com/Linux/2017-10/147259.htm

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148867.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6055字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7979421
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...