lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化

amp架构--memcache-nginx高速缓存机制、tomcat+memcache结合jsp交叉存储

  • 前言
  • 一、nginx结合memcache高效缓存
  • 二、构建nginx 的高速缓存
  • 三.tomcat+memcache结合jsp交叉存储
    • 交叉存储
  • 四.goaccess日志可视化
    • GoAccess的部署


前言

前面的章节中我们使用源码编译安装了php,mysql.并与nginx结合使用!!

这篇文章主要讲解了:
nginx结合php中的memcache模块构建高效透明的缓存机制。
tomcat结合memcache进行session的交叉存储备份。
goaccess日志可视化。


一、nginx结合memcache高效缓存

nginx和php-fpm的传统缓存机制
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第1张图片

nginx + memcache的高效缓存机制:
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第2张图片
需要下载
memcache-4.0.5.2.tgz
openresty-1.19.3.1.tar.gz

vim .bash_profile	
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin/
source .bash_profile

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第3张图片

php -m查看
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第4张图片
下载好了memcache包之后,解开

tar zxf memcache-4.0.5.2.tgz
cd memcache-4.0.5.2/
phpize #php内置脚本安装memcache,生成cofigure

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第5张图片
编译需要安装依赖性!

yum install -y autoconf
phpize

安装之后,configure出现!
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第6张图片
然后开始源码编译三部曲:

./configure 
make
make install

完成:
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第7张图片

vim /usr/local/php/etc/php.ini
extension=memcache

systemctl restart php-fpm.service
php -m |grep memcache

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第8张图片安装完成:

在这里插入图片描述

cd memcache-4.0.5.2/
ls
cp example.php memcache.php /usr/local/nginx/html/
cd /usr/local/nginx/html/
ls

访问 172.25.1.1/example.php即可查看变化
在这里插入图片描述

vim memcache.php	
22 define('ADMIN_USERNAME','memcache');    // Admin Username
 23 define('ADMIN_PASSWORD','westos');      // Admin Password
注释掉29行 
28 $MEMCACHE_SERVERS[] = 'localhost:11211'; // add more as an array
29 #$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

yum install memcached -y
systemctl start memcached
netstat -antlp | grep 11211

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第9张图片

在这里插入图片描述
访问172.25.1.1/memcache.php 输入用户名和密码(刚才设置的!)
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第10张图片

二、构建nginx 的高速缓存

systemctl stop nginx.service
源码编译安装openresty
三部曲:但是这里需要gmake

tar zxf openresty-1.19.3.1.tar.gz
cd openresty-1.19.3.1/
./configure
gmake
gmake install

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第11张图片

/usr/local/openresty/nginx/sbin/nginx -v #开启openresty里的nginx
/usr/local/openresty/nginx/sbin/nginx

拷贝默认发布目录

cd /usr/local/openresty/nginx/html/
cp /usr/local/nginx/html/*.php .

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第12张图片

进行压力测试:
ab -c10 -n 1000 http://172.25.1.1/index.php
失败的次数74次,每秒处理请求1370次:lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第13张图片

修改配置文件
需要做三处修改

cd /usr/local/openresty/nginx/conf
vim nginx.conf #使其和之前nginx一样可以编译php

upstream memcache {
                server 127.0.0.1:11211;
                keepalive 512;          ##保持512个不立即关闭的连接用于提升性能
        }

location /memc {
        internal;                       #表示只接受内部访问
        memc_connect_timeout 100ms;
        memc_send_timeout 100ms;
        memc_read_timeout 100ms;
        set $memc_key $query_string;    #使用内置的$query_string来作为key
        set $memc_exptime 300;          #表示缓存失效时间
        memc_pass memcache;
        }

location ~ \.php$ {
            set $key $uri$args;
            srcache_fetch GET /memc $key;
            srcache_store PUT /memc $key; #看ppt解释
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }


注:
修改之后,需要开启服务的:
这里记得进入openresty下的nginx目录中开启nginx要用**./nginx**
如果直接输入nginx是之前设置的全局变量/usr/local/nginx/sbin/nginx开启的服务
而不是openresty开启的nginx!!!
因为本人一开始一直没有找到错误原因,最后就是这个问题!!!

ps ax | grep nginx
如果有nginx的进程,先kill掉
cd /usr/local/openresty/nginx/sbin
./nginx -t
./nginx

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第14张图片

然后再进行压力测试:
ab -c10 -n 1000 http://172.25.1.1/index.php
错误次数变为0,每秒处理次数也变为4770!!质的提升!!
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第15张图片

三.tomcat+memcache结合jsp交叉存储

三台虚拟机
server1 配置反向代理和负载均衡
server2 server3交叉存储

需要软件及其版本:
jdk-8u121-linux-x64.rpm
apache-tomcat-7.0.37.tar.gz

对于server2停掉httpd服务!

systemctl stop httpd
yum install jdk-8u121-linux-x64.rpm -y #下载对应版本jdk

tar zxf apache-tomcat-8.5.24.tar.gz -C /usr/local/
cd /usr/local/
mv apache-tomcat-8.5.24/ tomcat #修改名称 方便操作
ls

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第16张图片

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第17张图片

cd tomcat/
ls
bin/startup.sh	开启tomcat脚本
netstat -antlp	查看8080端口已打开

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第18张图片

8080端口已经开启:

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第19张图片

cd webapps/ROOT/  #tomcat默认发布目录
ls
cp ~/test.jsp .	将测试文件拷贝过来

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第20张图片

测试完成后将文件拷贝到server3
server3操作与server2相同
zai tomcat目录中开启tomcat
bin/startup.sh

在server1中

vim nginx.conf
upstream tomcat {
        sticky; #静态锁定一个ip对应一个服务器,除非session被清除后才变化。
        server 172.25.4.2:8080;
        server 172.25.4.3:8080;
        }

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

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第21张图片

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第22张图片

nginx -t检测语法
会发现有报错,因为配置文件写了sticky,而本身在编译的时候没有加参数:
重新编译nginx
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
因为没有nginx-goodies-nginx-sticky-module-ng-08a395c66e42也会报错!
所以下载 解压它!
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第23张图片
继续编译,成功之后只做make,不make install!!!

再次 nginx -t
nginx -s reload

在这里插入图片描述
访问:http://172.25.1.1/test.jsp

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第24张图片可以看到网页第一行server info 712.25.1.2

输入name和key,当客户端切换时,session也会随之消失
当把server2 shutdown之后
就会自动切换为server3:
server info 172.25.1.3:如下图所示:

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第25张图片

刷新网页,数据就会丢失:
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第26张图片

解决方法:

tomcat结合memcached 交叉存储session!

交叉存储

在真机上:拷贝/jar下面的所有文件到server3上

scp jar/* root@172.25.1.3:/usr/local/tomcat/lib/

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第27张图片在server2,server3上操作如下:

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

安装memcached

yum install -y memcached
systemctl start memcached.service  #端口11211
netstat -antlp	#查看端口

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第28张图片接着配置文件

vim /usr/local/tomcat/conf/context.xml

server2中添加内容如下:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.1.2:11211,n2:172.25.1.3:11211"
failoverNodes="n1" 
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第29张图片
server3中写入:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.1.2:11211,n2:172.25.1.3:11211"
failoverNodes="n2" 
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

然后重启server2,3

bin/shutdown.sh
bin/startup.sh

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第30张图片
然后查看:
tail -f logs/catalina.out
看到这一行表示成功!
INFO: MemcachedSessionService finished initialization, sticky true, operation timeout 1000, with node ids [n2] and failover node ids [n1]

四.goaccess日志可视化

GoAccess 是什么?

GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序(terminal)即可访问。能为系统管理员提供快速且有价值的 HTTP 统计,并以在线可视化服务器的方式呈现。

GoAccess的部署

下载:https://goaccess.io/download
解压:tar zxf goaccess-1.4.tar.gz
cd goaccess-1.4/

在这里插入图片描述
goaccess的配置:生成 Makefile,为下一步的编译做准备
查看配置选项列表:./configure --help

./configure --enable-utf8 --enable-geoip=legacy
##  --enable-utf8:宽字符支持。依赖 Ncursesw 模块。
 ##  --enable-geoip=legacy:地理位置支持。依赖 MaxMind GeoIP 模块,legacy 将使用原始 GeoIP 数据库。

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第31张图片
会发现缺少某些依赖包!
那么如何去下载呢?
来到网站上面搜索下载:
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第32张图片
找到了download的地址
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第33张图片
网址就是这个:

http://mirror.centos.org/centos/7/os/x86_64/Packages/GeoIP-devel-1.5.0-14.el7.x86_64.rpm

直接wget下载:
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第34张图片
rpm -ivh GeoIP-devel-1.5.0-14.el7.x86_64.rpm --nodeps
继续编译:
完成后,make , make install
查看goaccess命令的位置:which goaccess
在这里插入图片描述
生成一个新的html文件,把当前access.log日志中的内容实时的以html图表的形式展示出来

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

lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第35张图片
网页访问:http://172.25.1.1/report.html
完成!!可以清晰直观的看到数据!
lamp架构-memcache-nginx高速缓存机制、tomcat+memcache交叉存储、goaccess日志可视化_第36张图片

你可能感兴趣的:(自动化运维企业实战,nginx,linux,python)