一、实验环境
三台虚拟机: server1:172.25.7.2 server3:172.25.7.4 server4:172.25.7.5 在之前的实验基础上操作
二、搭建实验服务器server3和server4
官网下载apache-tomcat-7.0.37.tar.gz 阿里云下载jdk-8u121-linux-x64.rpm dnf install -y jdk-8u121-linux-x64.rpm tar zxf apache-tomcat-7.0.37.tar.gz
cd /root/apache-tomcat-7.0.37/webapps/ROOT vim test.jsp <%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.util.*" %> <html><head><title>Cluster App Test</title></head> <body> Server Info: <% out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%> <% out.println("<br> ID " + session.getId()+"<br>"); String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.print("<b>Session list</b>"); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"<br>"); System.out.println( name + " = " + value); } %> <form action="test.jsp" method="POST"> name:<input type=text size=20 name="dataName"> <br> key:<input type=text size=20 name="dataValue"> <br> <input type=submit> </form> </body> </html>
scp test.jsp server3:/root/apache-tomcat-7.0.37/webapps/ROOT 把test.jsp远程发送给server3 cd /root/apache-tomcat-7.0.37/bin ./startup.sh netstat -antplu | grep 8080 ##查看8080端口是不是被java占用,如果不是,关掉占用的进程,重新启动./startup.sh systemctl start memcached <在server3和server4中做的操作一样>
三、配置server1的环境
获取nginx-sticky模块包,点击进入下载位置
压缩包名称:nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip
unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip cd openresty-1.17.8.2 ./configure --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42 gmake cd /usr/local/openresty/nginx/sbin mv nginx nginx.old ##将nginx名字改为nginx.old,备份,以防出错 cd /root/openresty-1.17.8.2/build/nginx-1.17.8/objs/ cp nginx /usr/local/openresty/nginx/sbin/
vim /usr/local/openresty/nginx/conf/nginx.conf http { .... upstream tomcat { sticky; ##先调用第一个,down掉以后由下一个server继承 server 172.25.7.4:8080; server 172.25.7.5:8080; } server { ... location ~ \.jsp$ { proxy_pass http://tomcat; } ------------------------------------------------------------------------- usr/local/openresty/nginx/sbin/nginx -s start ##如果已经开启过,则将start改称reload
四、测试
访问server3和server4的8080端口,无误后访问server1下的test.jsp
五、session实现交叉存储
1.在server3和server4里
asm-3.2.jar kryo-serializers-0.10.jar minlog-1.2.jar reflectasm-1.01.jar kryo-1.04.jar memcached-session-manager-1.6.3.jar memcached-session-manager-tc7-1.6.3.jar msm-kryo-serializer-1.6.3.jar spymemcached-2.7.3.jar 将这些包放进jar目录 cd jar cp /root/jar /root/apache-tomcat-7.0.37/lib
cd /root/apache-tomcat-7.0.37/conf vim context.html <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:172.25.6.6:11211,n2:172.25.6.7:11211" failoverNodes="n1" ##在 node2 上此项设置为“n2”但是配置文件不能有中文,如果需要拷贝,请删除文件中的中文 requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" /> ------------------------------------------------------------------------------- /root/apache-tomcat-7.0.37/bin/shutdown.sh /root/apache-tomcat-7.0.37/bin/startup.sh
2.查看11211使用是否为memcached
3.测试
浏览器访问172.25.7.2/test.jsp
在server3上 telnet localhost:11211 如果没有telnet,则yum install -y telnet
六、日志可视化
Goaccess:
GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序(terminal)即可访问。能为系统管理员提供快速且有价值的 HTTP 统计,并以在线可视化服务器的方式呈现。
官网下载goaccess-1.4.tar.gz 阿里云下载GeoIP-devel-1.5.0-13.el7.x86_64.rpm yum install -y GeoIP-devel-1.5.0-13.el7.x86_64.rpm tar zxf goaccess-1.4.tar.gz cd /root/goaccess-1.4 ./configure --enable-utf8 --enable-geoip=legacy make make install
1.终端输出
终端输出以下提示使用predef的日志配置对话框 cd /usr/local/openresty/nginx/logs/ <随便找一个日志> goaccess access.log -c
2.静态输出
下面的静态html输出解析访问日志并显示状态 access.log -o /usr/local/openresty/nginx/html/report.html --log-format=COMBINED --real-time-html ----------------------------------------------- 浏览器访问server1:172.25.7.2/report.html