Tomcat基于Memcached Session实现Manager绑定及共享Session

准备环境:
主机1: —–172.18.250.106—–node1.magedu.com—–tomcat1主机
主机2: —–172.18.250.117—–node2.magedu.com—–tomcat2主机
主机3: —–172.18.250.202—–www.magedu.com—–反向代理主机
主机4: —–172.18.250.192—–node3.magedu.com—–memcached1主机
主机5: —–172.18.250.220—–node4.magedu.com—–memcached2主机

  • 关闭所有主机的iptables安全策略及selinux

# iptables -F
# setenforce 0

  • 对每一台主机进行时间同步

# ntpdate 172.18.0.1

  • 修改主机名并同步

tomcat1主机
# hostnamectl set-hostname node1.magedu.com && exec bash
tomcat2主机
# hostnamectl set-hostname node2.magedu.com && exec bash
反向代理主机
# hostnamectl set-hostname www.magedu.com && exec bash
memcached1主机
# hostnamectl set-hostname node3.magedu.com && exec bash
memcached2主机
# hostnamectl set-hostname node4.magedu.com && exec bash

  • 原理简单说明一下,memcached是为了在tomcat无法提供服务是使正在连接的会话不会中断,也就是把tomcat的session会话共享到memcached的主机上,而memcached主机和tomcat主机不是同一台主机,在tomcat主机意外宕机是,自动切换到memcached的主机上而已!
  • 配置tomcat主机1

安装tomcat服务及jdk包文件
# yum install -y java-1.8.0-openjdk-devel
# yum -y install tomcat
# cd /usr/share/tomcat/webapps/
# mkdir -p {myapp,WEB-INF}
# cd myapp/
# vim index.jsp 注:编辑测试页面

《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image 测试

《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image

  • 配置tomcat2主机,步骤与tomcat1基本相同,测试页面稍作调整,这里我就不作详细步骤了!只列出测试页面的不同!

《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image

测试
《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image

  • 在主机3和主机4上安装memcached并启动,验证启动结果

# yum install -y memcached
# systemctl start memcached
# ss -ntl

《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image 注:11211端口已经打开,启动成功!

  • 在这里我们需要了解两个概念
    sticky sessions :粘性sessions
    non-sticky sessions:非粘性sessions
    这里我们使用粘性sessions实现会话共享
    为了实现会话共享,我们还需要几个工具包
  • 软件包
    1. javolution-5.4.3.1.jar 注:流式化工具
    2.msm-javolution-serializer-1.8.3.jar注:MSM支持两种模式即粘性sessions和非粘性sessions
    3.memcached-session-manager-1.8.3.jarmemcached会话管理器
    4.memcached-session-manager-tc7-1.8.3.jarmemcached会话管理器
    5.spymemcached-2.11.1.jar驱动:tomcat连接memcached
    所需包文件下载地址https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
    下载包文件至各tomcat节点的tomcat安装目录下的lib目录中
    因为我这里已经把包文件下载好放到ftp服务器上,所以只要从ftp服务器中下载即可

《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image 把下载好的包文件放到/usr/share/tomcat/lib/下即可
《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image 然后配置tomcat1的主配置文件

# vim /etc/tomcat/server.xml

《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image 修改tomcat2的主配置文件
《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image 重启tomcat服务

  • 最后我们配置反向代理服务器

# yum -y install nginx
# vim /etc/nginx/nginx.conf

《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image 重启nginx服务

测试调度(默认轮询方式)
《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image
《Tomcat基于Memcached Session实现Manager绑定及共享Session》 image 注:可以看出tomcat主机是和轮询方式调度,而会话Session ID保持不变!实现了会话绑定!

    原文作者:王永清88
    原文地址: https://www.jianshu.com/p/0007b8786177
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞