lnmp 六之nginx+tomcat+memcached交叉存储和goaccess可视化日志

tomcat介绍

  • Apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP)
  • Tomcat只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。此外,Tomcat同时也支持HTML、JSP、ASP、PHP、CGI等,其中CGI需要一些手动调试,不过很容易的。
  • Apache是普通服务器,本身只支持html即普通网页,可以通过插件支持php,还可以与Tomcat连通(Apache单向连接Tomcat,就是说通过Apache可以访问Tomcat资源,反之不然)。
  • 由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。
  • 两者都是一种容器,只不过发布的东西不同:Apache是html容器,功能像IIS一样;Tomcat是jsp/servlet容器,用于发布jsp及java的,类似的有IBM的websphere、BEA的Weblogic,sun的JRun等等。打个比方:Apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),Tomcat就是一个桶(装像Java这样的水),而这个桶也可以不放在卡车上。
  • Apache是很最开始的页面解析服务,tomcat是后研发出来的,从本质上来说tomcat的功能完全可以替代Apache,但Apache毕竟是tomcat的前辈级人物,并且市场上也有不少人还在用Apache,所以Apache还会继续存在,不会被取代,apache不能解析java的东西,但解析html速度快。

tomcat安装(server2和server3)

官方下载地址

server2和server3均进行如下操作
1.解压软件
tar zxf apache-tomcat-7.0.108.tar.gz -C /usr/local

2.设置软链接
cd /usr/local
ln -s apache-tomcat-7.0.108 tomcat

3.安装软件
rpm -ivh jdk-8u121-linux-x64.rpm 
也可以使用自带的jdk
rpm -qa | grep jdk

4.开启tomcat
cd /usr/local/tomcat/bin
./startup.sh

5.测试
netstat -antlp | grep :8080
访问:8080

在server2上下载tomcat(192.168.1.11)
在这里插入图片描述

在这里插入图片描述
开启tomcat
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述
以同样的方式布置另一台虚拟机server3(192.168.1.12)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对server1进行nginx配置

1.关闭server1的openresty
systemctl stop openresty
systemctl disable openresty

2.打开nginx
nginx

3.修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
    upstream tomcat {
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
    }

        location ~ \.jsp$ {
            proxy_pass http://tomcat;
        }

4.重启nginx
nginx -s reload

5.设置test.jsp
vim test.jsp
mv test.jsp /usr/local/tomcat/webapps/ROOT/
<%@ 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>

6.测试
访问192.168.1.10/test.jsp

设置192.168.1.10上的nginx配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在server2和server3上新建test.jsp
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述
刷新一下
在这里插入图片描述

使用ip_hash算法

  • 提交数据会切换服务器,数据会丢失,解决办法有两种
    (1)cookies(sticky)
    (2)ip_hash
1.第一种方法使用cookies
    upstream tomcat {
    sticky;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
    }  
nginx -s reload
测试 访问192.168.1.10/test.jsp

2.第二种方法使用ip_hash
    upstream tomcat {
    #sticky;
    ip_hash;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
    }
nginx -s reload
测试 访问192.168.1.10/test.jsp

使用第一种方法
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述
使用第二种方法
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述

tomcat+memcached

  • 当server2down掉的话会发现之前的cookie不见了,这是因为虽然server2down掉了,nginx可以将控制权调度到server1上,但之前在server2上缓存的cookie没有了。
  • 下图的模式可以解决上述问题,设置交叉存储,即使一台tomcat服务器停止掉memcached服务,但是信息还存在另一台主机上。除非两台机器同时down掉。
    在这里插入图片描述
1.在server1中确认php-fpm服务开启并暂时关闭server2和server3的tomcat服务
systemctl status php-fpm
cd /usr/local/tomcat/bin
./shutdown.sh

2.安装memcached服务(server2与server3一样配置)并设置开机启动
yum install memcached -y
systemctl enable --now memcached
将.jar软件安装包都存放到server2和server3的/usr/local/tomcat/lib下

3.修改server2和server3配置文件context.xml,再次启动服务
cd /usr/local/tomcat/conf
vim context.xml
添加以下内容
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.11:11211,n2:192.168.1.12:11211"
failoverNodes="n1"   #server3服务器这里改为n2
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

cd /usr/local/tomcat/bin
./start.sh

4.测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在server2上安装memcached,并开机自启。
在这里插入图片描述
在这里插入图片描述
在server3上安装memcached,并开机自启。
在这里插入图片描述
在这里插入图片描述
修改server2配置文件
在这里插入图片描述
在这里插入图片描述
修改server3配置文件
在这里插入图片描述
在这里插入图片描述

goaccess可视化日志(帮我们采集并以图表显示)

1.软件安装:
wget https://tar.goaccess.io/goaccess-1.4.tar.gz
tar -xzvf goaccess-1.4.tar.gz
cd goaccess-1.4/
./configure --enable-utf8 --enable-geoip=legacy
yum install -y GeoIP-devel-1.5.0-13.el7.x86_64.rpm
./configure --enable-utf8 --enable-geoip=legacy
yum install -y ncurses-devel
./configure --enable-utf8 --enable-geoip=legacy
make
make install

2.软件使用:
第一种使用方式:
cd /usr/local/nginx/logs
goaccess -c access.log
第二种使用方式:
goaccess access.log -o /usr/local/nginx/html/report.html --log-format=COMBINED --real-time-html

在这里插入图片描述
下载geoip-devel(版本和自带的geoip版本一致)并安装
yum install
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一种使用方式:在终端下直接访问
在这里插入图片描述
在这里插入图片描述
第二种使用方式:使用report.html(实时显示)
在server1中使用-o …/html/report.html
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值