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

企业运维实战lamp架构--memcache-nginx高速缓存机制、tomcat+memcache结合jsp交叉存储


前言

在前面的章节中我们使用源码编译安装了php,并与nginx结合进行了简单使用。

本章主要学习内容
nginx结合php中的memcache模块构建高效透明的缓存机制。
tomcat结合memcache进行session的交叉存储备份。
goaccess日志可视化。


一、nginx+memcache高效缓存机制

nginx + php-fpm的传统缓存机制:
在这里插入图片描述
nginx + memcache的高效缓存机制:
在这里插入图片描述
软件及相关模块需要:
配置好的nginx + php-fpm(之前章节有详细配置内容)
openresty-1.19.3.1.tar.gz
memcache-4.0.5.2.tgz
官网下载对应版本

具体操作:
将php添加到环境变量里

echo $PATH #查看系统环境变量目录
vim .bash_profile	
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin/
source .bash_profile

修改成功后查看php模块

php -m

在这里插入图片描述

源码编译安装memcache:

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

在这里插入图片描述

发现缺少依赖包

yum install -y autoconf
phpize
ls #查看得到configure
./configure #源码编译三部曲安装memcache
make
make install

在这里插入图片描述

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

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

在这里插入图片描述memcache模块安装成功

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

网页访问 http://172.25.9.1/example.php即可查看变化
在这里插入图片描述

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

网页访问 http://172.25.4.1/memcache.php ----> 输入用户名和密码
在这里插入图片描述

nginx 结合php openresty 的高速缓存
systemctl stop nginx.service

源码编译安装openresty

tar zxf openresty-1.19.3.1.tar.gz
cd openresty-1.19.3.1/
./configure
gmake
gmake install
cd /usr/local/openresty/
cd nginx/
cd conf

vim nginx.conf #使其和之前nginx一样可以编译php

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

测试机:ab -c10 -n 1000 http://172.25.9.1/index.php 发现有失败
在这里插入图片描述

vim conf/nginx.conf 需要做三处修改

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;
        }
/usr/local/openresty/nginx/sbin/nginx -t
/usr/local/openresty/nginx/sbin/nginx -s reload	刷新

测试机:ab -c10 -n 1000 http://172.25.4.1/index.php 无失败且时间更快
在这里插入图片描述


二、tomcat+memcache结合jsp交叉存储

三台虚拟机
vm1 配置反向代理和负载均衡
vm2 vm3交叉存储

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

vm2:

systemctl stop httpd
yum install jdk-8u121-linux-x64.rpm -y #下载对应版本jdk
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
cd /usr/local/
mv apache-tomcat-7.0.37/ tomcat #修改名称 方便操作
ls

在这里插入图片描述

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

在这里插入图片描述

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

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

vm1:

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

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

编译完成后只make,不make install
\cp -f nginx /usr/local/nginx/sbin # 设置全局变量

再次 nginx -t
在这里插入图片描述

nginx -s reload
firefox:http://172.25.4.1/test,jsp
在这里插入图片描述输入name和key,当客户端切换时,session也会随之消失

解决方法:
tomcat结合memcached 交叉存储session
真机:
scp jar/* root@172.25.4.3:/usr/local/tomcat/lib/

vm2 vm3操作相同:

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

安装memcached

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

vim /usr/local/tomcat/conf/context.xml
vm2内容:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.4.2:11211,n2:172.25.4.3:11211"
failoverNodes="n1" #交叉存储,失败时存储到本机(n1)
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

vm3内容:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.4.2:11211,n2:172.25.4.3:11211"
failoverNodes="n2" #交叉存储,失败时存储到本机(n2)
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>

重启vm2和vm3的tomcat

bin/shutdown.sh
bin/startup.sh
tail -f logs/catalina.out
INFO: MemcachedSessionService finished initialization, sticky true, operation timeout 1000, with node ids [n2] and failover node ids [n1]

当出现如上日志时,说明交叉存储成功。

yum install -y telnet #telnet负责查询 注意:交叉查询


笔记补充

linux打开多个终端 ctrl+shift+ F123456 1为图形
systemctl isolate graph (切换到有图)
systemctl isolate mul (切换到无图)

linux IO 复用模型

快捷键清理浏览器缓存 ctrl+shift+ delete

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值