Linux企业化运维--(4)tomcat配置之负载均衡+反向代理、tomcat结合memcache交互存储、GoAccess日志可视化

Linux企业化运维

实验所用系统为Redhat-rhel7.6。

Linux企业化运维–(4)tomcat配置之负载均衡+反向代理、tomcat结合memcache交互存储、goaccess日志可视化

一、配置tomcat

可以将tomcat部署在server2主机,与nginx主服务器分开,便于进行交互存储。
下载安装jdktomcat,并开启服务,便可以在浏览器进行访问。

下载
lftp 172.25.254.250
> ls 
> cd pub/docs/lamp/
> get jdk-8u121-linux-x64.rpm 
> get apache-tomcat-7.0.37.tar.gz 
> exit
ls

安装并开启服务
rpm -ivh jdk-8u121-linux-x64.rpm
tar zxf apache-tomcat-7.0.37.tar.gz
mv apache-tomcat-7.0.37 /usr/local/
cd /usr/local/
ln -s apache-tomcat-7.0.37/ tomcat
cd tomcat/
ls
cd bin/				##命令目录
ls
./startup.sh		##开启服务
netstat -antlp		##检测是否有此端口:8080

访问
###真机浏览器
172.25.24.2:8080----->apache tomcat

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

二、负载均衡与反向代理

server1中设定反向代理,则可以通过server1访问到server2主机的tomcat

###server1
cd /usr/local/nginx/conf
ls
vim nginx.conf
///
        location ~ \.jsp$ {
            proxy_pass   http://172.25.24.2:8080;
        }
///
nginx -s reload

请添加图片描述

请添加图片描述
当在真机浏览器进行访问时,只能访问到静态的tomcat页面。

###真机
浏览器http://172.25.24.1/index.jsp
静态数据由nginx支持,所以通过server1访问tomcat打不开图形

请添加图片描述

下载一个jsp测试页,在网页上对tomcat进行操作时,可以在日志中查看到tomcat的记录。
先下载测试页,在浏览器中进行访问并测试。

###server2
cd ..(tomcat)
pwd					##/usr/local/tomcat
cd webapps/ROOT
ls
lftp 172.25.254.250
> ls
> cd /pub/docs/lamp
> get test.jsp		##tomcat测试页
> exit

请添加图片描述请添加图片描述
在浏览器中进行测试,添加用户和密码。

###真机浏览器
172.25.24.1/test.jsp	##此时服务器为server2
user1=111
user2=222

请添加图片描述
如果将server2主机中的tomcat服务停掉,则不能通过server1访问。

###server2
cd /usr/local/tomcat
bin/shutdown.sh		##关闭服务

###真机浏览器
172.25.24.1/test.jsp	##打不开,报错

请添加图片描述请添加图片描述
此时可以在server2主机日志中看到新建的用户和密码。

###server2
cd logs
cat catalina.out	##日志,可以看到测试页里新建的用户与密码

请添加图片描述
请添加图片描述

将tomcat复制到server3主机中,并解压,开启服务。

cd /usr/local/
scp -r tomcat/ server3:/usr/local/		##复制到server3主机
scp jdk-8u121-linux-x64.rpm server3:

###server3
rpm -ivh jdk-8u121-linux-x64.rpm
cd /usr/local/tomcat
bin/startup.sh							##开启服务

请添加图片描述
请添加图片描述
请添加图片描述
重新开启server2主机中tomcat服务。

###server2
cd /usr/local/tomcat/
bin/startup.sh

请添加图片描述

在server1主机nginx配置文件中设定负载均衡与反向代理,重启服务。

###server1
cd /usr/local/nginx/conf
vim nginx.conf
///
http {
        upstream westos {
        server 172.25.24.2:80;
        server 172.25.24.3:80;
        }

        upstream tomcat {		##负载均衡
        sticky;
        server 172.25.24.2:8080;
        server 172.25.24.3:8080;
        }

        location ~ \.jsp$ {		##反向代理
            proxy_pass   http://tomcat;
        }

///
nginx -s reload

请添加图片描述请添加图片描述

请添加图片描述

在浏览器中新建一个用户user3,然后关闭server2主机的tomcat

###真机浏览器
172.25.24.1/test.jsp
user3=333

###server2
bin/shutdown.sh	

请添加图片描述
请添加图片描述
但是用户并不知道server2关闭,nginx将自动调度server3主机进行信息存储。此时服务器为server3,因为server2与server3信息不共享,因此信息消失。

###真机浏览器
172.25.24.1/test.jsp	
刷新,user3会消失

请添加图片描述

附:测试页test.jsp源码

<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>

三、tomcat结合memcache交互存储

tomcat本身存储所有的信息,memcache只是为了session共享,是tomcat的额外存储。

nginx调用其中一台主机的tomcat,并将信息交叉存储在另一台主机的memcache中,即就是,tomcat1将信息存在memcache2中。

如果tomcat1不能使用,nginx则自动调度tomcat2,此时将信息存储在本机memcache2中,信息此时是完整的。如果tomcat1恢复,则重新调度tomcat1,将信息继续存储在memcache2中,信息依旧完整。

如果memcache2不能使用,tomcat1将把信息存放在memcache1中,此时信息仍然完整,因为,tomcat1本身将所有的信息存储在本机memory中,memcache只是为了额外存储。

这样,无论什么情况,都最大限度的保证了数据的完整性,且信息同步共享。
请添加图片描述

分别在server2和server3中安装并启用memcache。

###server2
yum install -y memcached
systemctl start memcached

###server3
yum install -y memcached
systemctl start memcached

请添加图片描述请添加图片描述

请添加图片描述请添加图片描述

在server2主机中对tomcat的配置文件进行编辑,设定交叉存储,将自身memcache设为n1server3主机的memcache设为n2正常运行时将信息存放在n2不能正常运行时,将信息存储在n1,即自身memcache。

###server2
cd /usr/local/tomcat/conf/
ls--->context.xml
vim context.xml
///
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.24.2:11211,n2:172.25.24.3:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
///
cd ..(tomcat)
cd lib
lftp 172.25.254.250
> cd pub/docs/lamp/jar
> mget *
> exit
ls
rm -rf memcached-session-manager-tc6-1.6.3.jar	##版本需对应,这个不对应
cd ..
bin/startup.sh

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
在真机浏览器里进行测试,此时tomcat3将信息存放在memcache2,即n1。

server Info:172.25.24.3:8080		##此时tomcat3将信息存放在memcache2,即n1
ID xxx-n1

请添加图片描述

此时在server2可以看到记录,但server3不能看到。

###server2
tail -f logs/catalina.out				##INFO:[n1][n2]
yum install -y telnet
telnet localhost 11211-->get xxx-n1		##可以看到用户建立记录

请添加图片描述

请添加图片描述
请添加图片描述

此时先配置server3tomcat服务,编辑配置文件,设定交叉存储正常运行时将信息存放在n1不能正常运行时,将信息存储在n2,即自身memcache。

###server3
cd /usr/local/tomcat/conf
vim context.xml
///
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.24.2:11211,n2:172.25.24.3:11211"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
///
cd ..
cd lib
lftp 172.25.254.250
> cd pub/docs/lamp/jar
> mget *
rm -rf memcached-session-manager-tc6-1.6.3.jar
bin/shutdown.sh
bin/startup.sh
tail -f logs/catalina.out	##INFO:[n1][n2]

请添加图片描述
请添加图片描述
请添加图片描述请添加图片描述
请添加图片描述

###server3
yum install -y telnet
telnet localhost 11211-->get xxx-n1	##为空
bin/shutdown.sh

请添加图片描述

请添加图片描述

关闭server3服务,tomcat3挂掉,由tomcat2接管,新建用户后,将信息存放在memcache2,即本机存储,因此可以在server2中看到新建的用户。
请添加图片描述

###真机浏览器
server Info:172.25.24.3:8080
ID xxx-n1
user3=333
user4=444

请添加图片描述
写入后回车,tomcat2接管,即n2,但信息存储本机memcache2,即n1。
请添加图片描述

server2可以看到新建的用户。

###server2
get xxx-n1			##可以看到user3,user4

请添加图片描述
开启server3服务,关闭server2服务,tomcat3重新接管服务,在浏览器新建新用户,信息存放在memcache2,在server2就可以看到用户记录。

###server3
bin/startup.sh

###server2
bin/shutdown.sh

请添加图片描述
请添加图片描述

###真机浏览器
server Info:172.25.24.3:8080
ID xxx-n1
user5=555
user6=666

请添加图片描述

###server2
telnet localhost 11211-->get xxx-n1			##可以看到用户建立记录user5,user6

请添加图片描述
关闭server2的memcache2tomcat3将把信息存放在memcache3中,即本机存储,注意memcache为额外存储,tomcat3本身拥有全部的信息,所以此时memcache3中的信息全是从新存储的(user1~user7)。

###server2
systemctl stop memcached

请添加图片描述

###浏览器
server Info:172.25.24.3:8080
ID xxx-n2
user7-777

请添加图片描述

###server3
telnet localhost 11211
get xxx-n2---->user1~user7

请添加图片描述
实验完成,重新开启所有服务。

###server2
systemctl start memcached	##重新开启memcached
bin/startuo.sh

请添加图片描述
请添加图片描述

四、goaccess日志可视化

1、软件安装及编译

###server1
wget https://tar.goaccess.io/goaccess-1.4.tar.gz
或者
lftp 172.25.254.250
> cd pub/docs/lamp
> get goaccess-1.4.tar.gz
> get GeoIP-devel-1.5.0-13.el7.x86_64.rpm
> exit

tar -xzf goaccess-1.4.tar.gz
yum install GeoIP-devel-1.5.0-13.el7.x86_64.rpm -y
cd goaccess-1.4/
./configure --enable-utf8 --enable-geoip=legacy
make
make install

请添加图片描述请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

2、可视化日志监控

cd /usr/local/bin
ls--->goaccess
cd /usr/local/nginx/logs
goaccess access.log -o /usr/local/nginx/html/report.html --log-format=COMBINED --real-time-html

请添加图片描述
在浏览器访问,可以看到图形化日志。

172.25.24.1/report.html

请添加图片描述

如果需要增加请求量,可以在真机进行压力测试。

ab -c10 -n 1000 http://172.25.24.1/index.html

请添加图片描述

请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值