准备环境:
主机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 注:编辑测试页面
测试
- 配置tomcat2主机,步骤与tomcat1基本相同,测试页面稍作调整,这里我就不作详细步骤了!只列出测试页面的不同!
测试
- 在主机3和主机4上安装memcached并启动,验证启动结果
# yum install -y memcached
# systemctl start memcached
# ss -ntl
注: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服务器中下载即可
把下载好的包文件放到/usr/share/tomcat/lib/下即可然后配置tomcat1的主配置文件
# vim /etc/tomcat/server.xml
修改tomcat2的主配置文件重启tomcat服务
- 最后我们配置反向代理服务器
# yum -y install nginx
# vim /etc/nginx/nginx.conf
重启nginx服务
测试调度(默认轮询方式)注:可以看出tomcat主机是和轮询方式调度,而会话Session ID保持不变!实现了会话绑定!