本文共 3594 字,大约阅读时间需要 11 分钟。
实验环境基于 RHEL 6.5,使用 3 台主机:
防火墙已关闭 iptables。
这种配置方式确保了双重故障情况下的 session 不丢失,避免了单点故障风险。
安装包:
安装过程:
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/localmv /usr/local/apache-tomcat-7.0.37 /usr/local/tomcattar zxf jdk-7u79-linux-x64.tar.gz -C /usr/localmv /usr/local/jdk1.7.0_79 /usr/local/jdk
配置环境变量:
echo "export JAVA_HOME=/usr/local/jdk" >> /etc/profileecho "export CLASSPATH=:$JAVA_HOME/lib" >> /etc/profileecho "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/profilesource /etc/profile
测试启动:
/usr/local/tomcat/bin/startup.sh
启动成功时会显示以下信息:
Using CATALINA_BASE: /usr/local/tomcatUsing CATALINA_HOME: /usr/local/tomcatUsing CATALINA_TMPDIR: /usr/local/tomcat/tempUsing JRE_HOME: /usr/local/jdkUsing CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
验证 java 版本:
java -version
浏览器访问测试:访问 http://172.25.8.3:8080,可以看到 tomcat 主页。
安装 memcached:
yum install memcached -y
启动 memcached:
/etc/init.d/memcached start
安装依赖 jar 包:将以下文件拷贝至 /usr/local/tomcat/lib:
配置 context.xml:
172.25.8.3:11211,172.25.8.4:11211 m1 .*\.(ico|png|gif|jpg|css|js)$ de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory
安装依赖组件:
yum install -y pcre-devel openssl-devel gcc
安装 nginx:
tar zxf nginx-1.10.1.tar.gztar zxf nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz -C nginx-1.10.1
编译与安装:
useradd -s /sbin/nologin nginxcd nginx-1.10.1./configure --user=nginx --group=nginx --prefix=/usr/local/nginx \ --with-http_ssl_module --with-http_stub_status_module \ --add-module=nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d/make; make install
启动 nginx:
/usr/local/nginx/sbin/nginx
配置 nginx.conf:
http { upstream www.example.com { sticky; server 172.25.8.3:8080; server 172.25.8.4:8080; } server { listen 80; location ~ \.jsp$ { proxy_pass http://www.example.com; } }}编辑 /usr/local/tomcat/webapps/ROOT/test.jsp:
<%@ page contentType="text/html; charset=GBK" %><%@ page import="java.util.*" %>Cluster App Test Server Info: <%= request.getLocalAddr() %> : <%= request.getLocalPort() %> ID: <%= session.getId() %> Session list: <%= Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) %> <%= String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); %> <%= name + " = " + value %> <%= System.out.println(name + " = " + value); %>
访问测试:
http://172.25.8.3:8080/test.jsp 和 http://172.25.8.4:8080/test.jsp,分别查看不同 tomcat 实例处理情况。故障转移测试:
nginx 负载均衡效果:
本文详细介绍了基于 nginx、tomcat 和 memcached 的 session 失效集群方案,涵盖了安装、配置、测试等多个环节。该方案通过负载均衡和 session 失效处理,确保了系统的高可用性和稳定性。
转载地址:http://rmcfk.baihongyu.com/