【项目实战7】nginx 3(构建高速缓存nginx -> memcache,设置nginx流量监控)

一、安装php服务

(1)、php和php-fpm原理

Nginx 接收到 php 动态请求会传给 php-fpm 处理,php-fpm 调用 pool 中的子进程来处理动态请求。
1、php软件包括php-fpm和php处理两个模块。
2、php-fpm是 FastCGI 的实现,并提供了进程管理的功能。进程包含 master 进程和 worker 进程两种进程。master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,而 worker 进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方。

(2)、安装过程

1、下载为网址php.net,获取php软件,获取php软件
在这里插入图片描述
2、解压文件

[root@ck1 ~] yum install bzip2
[root@ck1 ~] tar jxf php-7.4.12.tar.bz2 
[root@ck1 ~] cd php-7.4.12/

3、安装模块及依赖性文件
编译文件的时候,一般用下载文件-devel,devel指的是开发软件包,根据提醒下载依赖性文件即可

[root@ck1 php-7.4.12] yum install systemd-devel -y
[root@ck1 php-7.4.12] yum install libxml2-devel -y
[root@ck1 php-7.4.12] yum install sqlite-devel -y
[root@ck1 php-7.4.12] yum install libcurl-devel -y
[root@ck1 php-7.4.12] yum install libpng-devel -y
[root@ck1 ~] yum install -y oniguruma-6.8.2-1.el7.x86_64.rpm oniguruma-devel-6.8.2-1.el7.x86_64.rpm                                                图1、解决依赖性

图1
在这里插入图片描述
4、./configure确认文件模块,make执行编译,make install复制文件

[root@ck1 php-7.4.12] cd php-7.4.12/
[root@ck1 php-7.4.12] ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx  --with-curl --with-iconv --with-mhash --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-inline-optimization --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring  --enable-bcmath --with-fpm-systemd
[root@ck1 php-7.4.12] make 
[root@ck1 php-7.4.12] make install

5、修改配置文件

[root@ck1 php] cd /usr/local/php/etc/
[root@ck1 etc] cp php-fpm.conf.default php-fpm.conf           拷贝php-fpm配置文件
[root@ck1 etc] vim php-fpm.conf                                       图1,打开php-fpm进程
[root@ck1 php-fpm.d] cd /usr/local/php/etc/php-fpm.d
[root@ck1 php-fpm.d] cp www.conf.default www.conf             

图1、打开注释
在这里插入图片描述
6、修改时区,修改权限,添加system启动服务

[root@ck1 etc] cd ~/php-7.4.12/
[root@ck1 php-7.4.12] cp php.ini-production /usr/local/php/etc/php.ini  复制生产的环境到执行目录
[root@ck1 php-7.4.12] cd /usr/local/php/etc/
[root@ck1 etc] vim php-ini                                 图1、修改时区
[root@ck1 fpm] cd /root/php-7.4.12/sapi/fpm
[root@ck1 fpm] cp php-fpm.service /usr/lib/systemd/system
[root@ck1 fpm] cd /usr/lib/systemd/system
[root@ck1 system] vim php-fpm.service                       图2、修改权限
[root@ck1 system] systemctl daemon-reload 
[root@ck1 system] systemctl start php-fpm.service 

图1、修改时区
在这里插入图片描述
图2、修改权限,注释掉
在这里插入图片描述

成功开启php-fpm的9000端口、监听ngingx对php的请求。
在这里插入图片描述

二、nginx连接php

1、更改配置文件

[root@ck1 conf] cd /usr/local/nginx/conf
[root@ck1 conf] vim nginx.conf                 图1
[root@ck1 conf] nginx -s reload

图1、取消注释
在这里插入图片描述
2、书写测试页

[root@ck1 html] cd /usr/local/nginx/html
[root@ck1 html] vim index.php

//
<?php
phpinfo()
?>


[root@ck1 html] nginx -s reload   刷新服务

3、访问测试
在这里插入图片描述

三、构建传统nginx+php+memcache

(1)简介

在这里插入图片描述
传统意义上的工作模式:客户端 -> nginx ->php.fpm -> php ->Memcache
这样静态界面就通过nginx区调度,遇到动态页面就先找nginx,再到php服务,php服务查看缓存文件里是否存在,不存在则进行则进行处理,最后在返还给nginx。

(2)连接php和memcache

1、获取安装包、解压安装包

[root@ck1 ~] cd ~
[root@ck1 ~] tar zxf memcache-4.0.5.2.tgz

在这里插入图片描述
2、更改配置文件
使用alias命令,添加php的启动位置

[root@ck1 bin] cd 
[root@ck1 ~] vim .bash_profile       
[root@ck1 ~] source .bash_profile    图1

在这里插入图片描述
3、下载软件,查看php的完整性

[root@ck1 memcache-4.0.5.2] cd /root/memcache-4.0.5.2
[root@ck1 memcache-4.0.5.2] yum install autoconf -y
[root@ck1 memcache-4.0.5.2] phpize                           图1、查看完整性

图1、完整的情况应该显示为这个样子
在这里插入图片描述
4、进行编译三部曲,将memcache模块加入到php

[root@ck1 memcache-4.0.5.2] ./configure --enable-memcache
[root@ck1 memcache-4.0.5.2]  make
[root@ck1 memcache-4.0.5.2]  make install

5、在php里添加memcache模块

[root@ck1 memcache-4.0.5.2] vim /usr/local/php/etc/php.ini                   图1、php中添加memcache模块
[root@ck1 memcache-4.0.5.2] systemctl reload php-fpm.service 
[root@ck1 memcache-4.0.5.2] php - m | grep memcache                          图、查看memcache模块

图1、添加cache模块
在这里插入图片描述
图2、查看php的cache模块,添加成功
在这里插入图片描述
6、拷贝php的发布样本目录到nginx的发布目录

[root@ck1 memcache-4.0.5.2] cp example.php memcache.php /usr/local/nginx/html/

7、下载memcached软件,启用memcached服务
这个是memcached连接模块

[root@ck1 html] yum install -y memcached
[root@ck1 html] systemctl start memcached

此时已经能够成功访问到exampl.php的样本例子
在这里插入图片描述
8、修改配置文件对缓存的网站进行加密

[root@ck1 html] cd /usr/local/nginx/html
[root@ck1 html] vim memcache.php 

在这里插入图片描述

访问172.25.42.100/memcache.php需要登陆,查看到监控界面
在这里插入图片描述
在这里插入图片描述

(3)访问压力测试

压力测试
-c10 代表同时并发10个请求,-n1000代表发送1000次请求,这里代表十次请求全部同一时间发送
1、对index.php直接访问时

[root@ck1 ~] ab -c10 -n 1000 http://172.25.42.10/index.php

在这里插入图片描述
2、访问带有缓存的example.php页面时

[root@ck1 ~] ab -c10 -n 1000 http://172.25.42.10/exampl.php

在这里插入图片描述
查看监控界面可以查看到缓存的命中率
在这里插入图片描述

四、构建高速缓存ngixn ->memcache

(1)简介

在这里插入图片描述
现在构建新性的访问流程:client -> nginx -> memcache
这样直接从nginx访问到缓存memcache,查看是否具有缓存,没有缓存再走php处理过程。减少了php的处理过程,加快了速率。

(2)设置openresty里的nginx和memcahe连接

1、获取openrestry软件包,进行高速处理的软件.其包括nginx软件
在这里插入图片描述
2、解压,进行编译三部曲

[root@ck1 ~] tar zxf openresty-1.19.3.1.tar.gz 
[root@ck1 ~] cd openresty-1.19.3.1/
[root@ck1 openresty-1.19.3.1] ./configure 
[root@ck1 openresty-1.19.3.1] make && make install

3、拷贝文件
为方便设置php部分的文件,直接拷贝以前nginx的配置文件到openresty下的配置文件下

[root@ck1 openresty-1.19.3.1] cp /usr/local/nginx/conf/nginx.conf   /usr/local/openresty/nginx/conf/
cp: overwrite '/usr/local/openresty/nginx/conf/nginx.conf'? y                         进行覆盖
[root@ck1 conf] cp /usr/local/nginx/html/index.php /usr/local/openresty/nginx/html/   拷贝发布目录

4、修改配置文件,添加缓存模块

[root@ck1 conf] nginx -s stop                                          先暂停之前的nginx服务
[root@ck1 conf] vim /usr/local/openresty/nginx/conf/nginx.conf          修改配置文件

在这里插入图片描述
在这里插入图片描述

设置缓存的具体配置,中文是解释,需要删除
在这里插入图片描述
在php服务里面设置访问缓存的策略。
在这里插入图片描述
5、检测绝对路径下的语法,启用服务

[root@ck1 conf]  /usr/local/openresty/nginx/sbin/nginx -t       检测语法
[root@ck1 conf] /usr/local/openresty/nginx/sbin/nginx    启动
[root@ck1 conf] /usr/local/openresty/nginx/sbin/nginx -s reload   重新加载配置文件

(3)压力测试

测试此时用高速缓存建立的系统

[root@ck1 conf] ab -c10 -n 5000 http://172.25.42.100/example.php

发现高速缓存速度更快
在这里插入图片描述

五、设置nginx监控

对nginx的访问及其缓存设置监控
1、获取安装包
在这里插入图片描述
2、解压获取依赖性文件

[root@ck1 ~] tar zxf goaccess-1.4.tar.gz 
[root@ck1 goaccess-1.4] yum install -y ncurses-devel
[root@ck1 ~] yum install GeoIP-devel-1.5.0-13.el7.x86_64.rpm -y

3、编译、安装

[root@ck1 goaccess-1.4] ./configure --enable-utf8 --enable-geoip=legacy
[root@ck1 goaccess-1.4] make && make install

查看到二进制文件
在这里插入图片描述
4、进行监控
监控的是nginx的数据

[root@ck1 goaccess-1.4] cd /usr/local/nginx/logs/   须在日志目录下进行监控
[root@ck1 logs] goaccess access.log -o /usr/local/nginx/html/report.html --log-format=COMBINED --real-time-html &

5、需要关闭oponrestry下的nginx,重启最原始的nginx在这里插入图片描述
5、查看数据
在这里插入图片描述

6、访问测试
[root@ck1 logs]# ab -c10 -n 5000 http://172.25.42.10/index.html
查看到实时的变化

六、nginx+tomcat运行jsp网页

Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对Servlet 和 JSP(java) 的支持。连接tomcat加memcache,实现java的高速缓存。通过nginx反向代理实现均衡调度。
ck1作为nginx端口,本实验利用ck2作为tomcat端口

(1)安装启用tomcat,实现nginx+tomcat

ck2主机中配置
1、获取安装包
在这里插入图片描述

2、解压、安装

[root@ck2 ~] systemctl disable --now firewalld.service               关闭防火墙
[root@ck2 ~] rpm -ivh jdk-8u121-linux-x64.rpm                       部署java环境
[root@ck2 ~] tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/     指定解压路径
[root@ck2 /mnt] cd /usr/local/
[root@ck2 /usr/local] ln -s apache-tomcat-7.0.37/ tomcat
[root@ck2 /usr/local] cd tomcat/
[root@ck2 /usr/local/tomcat] bin/startup.sh                          调用脚本
[root@ck2 ~] netstat -antlp

3、查看到java的端口
在这里插入图片描述
访问ck2主机的8080端口发现tomcat开启
在这里插入图片描述

ck1主机中配置
4、ck1的nginx服务指定tomcat服务器为ck2

[root@ck1 ~] vim /usr/local/nginx/conf/nginx.conf
[root@ck1 ~] nginx -s reload

在这里插入图片描述
访问ck1(172.25.42.100/index.jsp),成功查看到网页
实际上访问ck1,通过ngixn代理,由ck2代理的服务器提供的界面
在这里插入图片描述

(2)测试java页面

ck2主机中
1、在tomcat的发布目录获取test.jsp文件
在这里插入图片描述
2、访问ck1主机,被调度到了ck2主机提供的测试界面
实现了反向代理
在这里插入图片描述

3、提交测试数据,查看日志
在这里插入图片描述
cat /usr/local/tomcat/logs/catalina.out查看日志
在ck2主机查看到网页上提交的界面
在这里插入图片描述

七、nginx+tomcat+memcache实现反向代理,双机热备,高速缓存

在这里插入图片描述

利用反向代理机制,利用ck1的nginx服务作为代理端,ck2和ck3作为服务端实现均衡调度。缓存部分,ck2和ck3的tomcat的高速缓存地址互相为对方主机,这样就保证了双机热备。

(1)实现均衡调度

上面的实验已经实现了ck2作为服务端,现在将ck1作为代理端,ck2、ck3作为服务端实现均衡调度
1、ck2服务端将安装包传给ck1,ck3主机

[root@ck2 ~] scp /usr/local/tomcat/webapps/ROOT/test.jsp  172.25.42.100:/usr/local/tomcat/webapps/ROOT     传递java测试包给ck1
[root@ck2 ~] scp /usr/local/tomcat/webapps/ROOT/test.jsp  172.25.42.210:/usr/local/tomcat/webapps/ROOT     传递java测试包给ck3
[root@ck2 ~] scp apache-tomcat-7.0.37.tar.gz jdk-8u121-linux-x64.rpm 172.25.42.100:~
[root@ck2 ~] scp apache-tomcat-7.0.37.tar.gz jdk-8u121-linux-x64.rpm 172.25.42.210:~

2、ck1,ck3主机都进行如下操作

rpm -ivh jdk-8u121-linux-x64.rpm
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local       指定解压路径

4、ck1代理端设置均衡负载

[root@ck1 /usr/local/nginx/conf] vim nginx.conf                图1、图2
[root@ck1 /usr/local/nginx/conf] nginx -t nginx
[root@ck1 /usr/local/nginx/conf] nginx -s reload   

图1、设置反向代理的服务器
将ck2,ck3设置为服务器
因为有健康检测,所以也实现了双机热备
在这里插入图片描述
图2、设置反向代理模块
在这里插入图片描述

(2)测试反向代理

模拟企业环境真实环境,其中一个tomcat挂掉
ck3启动tomcat
/usr/local/tomcat/bin/startup.sh
关闭ck2的tomcat
/usr/local/tomcat/bin/shutdown.sh
因为反向代理且具有健康检测,故提供服务的主机实现了从ck2转移到ck3,完成双机热备服务
在这里插入图片描述

(3)设置memcache缓存

可以知道反向代理和健康检测可以实现服务器不会挂掉,但是当切换服务的主机的时候,会因为缓存的地址不同而丢失我们的提交的数据。故将服务器的缓存互相设置在对方主机上,如图1所示。这样当ck2的缓存存储在ck3的主机上,ck3的缓存在ck2的主机上。
第一种情况:ck2的tomcat挂掉之后,健康检测启动,ck3的tomcat启用,启用ck2的设置在ck3的memcache,这样数据就不会丢失。
第二种情况:当ck3主机上的memcache挂掉之后,ck2会将数据书写到本机ck2的memcache上,数据依旧不会丢失
图1、tomcat和memcache缓存的框架图
在这里插入图片描述
即ck1为做为代理端。ck2作服务端,ck2为n1节点,存储节点是ck3主机的n2;ck3作为服务端,为n2节点,存储节点是ck2的n1节点
ck2、ck3主机都进行相同操作
1、修改配置文件

yum install memcached -y
systemctl start memcached.service
vim /usr/local/tomcat/conf/context.xml 

ck2主机
在这里插入图片描述
ck3主机
在这里插入图片描述
2、获取需要的jar包

 cd /usr/local/tomcat/lib/
 ls

在这里插入图片描述
3、删除老版本的jar包,启用新版本

cd /usr/local/tomcat                                         
rm -fr memcached-session-manager-tc6-1.6.3.jar
cd /usr/local/tomcat/
bin/shutdown.sh                                     关闭tomcat
bin/startup.sh                                      重启tomcat
cat /usr/local/tomcat/logs/catalina.out             图1,图2

图1、ck1的日志
在这里插入图片描述

图1、ck2的日志
在这里插入图片描述

测试1:查看基本数据

1、访问172.25.42.100/test.jar

可以看到此时ck2提供tomcat服务,并由n2节点即ck3主机提供memcache服务
在这里插入图片描述

2、在网页界面输出数据
在这里插入图片描述

查看ck2的日志,记录了我们输入的数据
在这里插入图片描述

3、ck2/3都安装Telnet,该协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式

yum install -y telnet
telnet localhost 11211
get ID 6E7AF76903869FADBBE47A41554FF8FD-n2

在这里插入图片描述

因为储存在n2节点(ck3主机)上,所以ck3主机能查看到数据,ck2主机查看不到数据
ck2
在这里插入图片描述

ck3
在这里插入图片描述

测试2:挂掉tomcat

目前的由ck2提供给tomcat,关闭掉ck2的tomcat观察实验结果

[root@ck2 ~] /usr/local/tomcat/bin/shutdown.sh 

提交数据前的状态
在这里插入图片描述
提交数据后的状态
可以发现tomcat切换到了ck3,节点不变,数据缓存依然在
在这里插入图片描述

测试3:挂掉memcache

1、先开启ck2的tomcat,重新提交数据,恢复全部功能

[root@ck2 ~] /usr/local/tomcat/bin/startup.sh

目前的状态
在这里插入图片描述

2、关闭memcahe
目前的memcache是在ck3上,关闭ck上的memcached服务,重新提交数据

[root@ck3 ~] systemctl stop memcached

提交数据前
在这里插入图片描述
提交数据后
切换了memcached到ck2节点,并且提交的数据依然还在,没有丢失
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值