一、varnish简介
1.varnish是什么?
Varnish是一款高性能且开源的反向代理服务器和http加速器(缓存服务器)。Varnish使用内存缓存文件来减少响应时间和网络带宽消耗。
2.varnish的特点
Varnish访问速度更快,Varnish采用了“Visual Page Cache”技术,所有缓存数据都直接从内存读取,而squid是从硬盘读取,因而Varnish在访问速度方面会更快。(所以说varnish有个缺点,当varnish进程一旦被down,缓存数据都会从内存中完全释放,此时所有请求都会发送到后端服务器,在高并发情况下,会给后端服务器造成很大压力。)
Varnish可以支持更多的并发连接,因为Varnish的TCP连接释放要比Squid快。因而在高并发连接情况下可以支持更多TCP连接。
Varnish可以通过管理端口,使用正则表达式批量的清除部分缓存,而Squid是做不到的。
squid属于是单进程使用单核CPU,但Varnish是通过fork形式打开多进程来做处理,所以是合理的使用所有核来处理相应的请求。
事实上,varnish整体的性能将会高于squid;
3.CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术
做此实验需要三台虚拟机。为了虚拟机的建立方便,我们用7.5的镜像建立一个母盘,并且封装好。
母盘的一些基本信息:
1.网络:
ip:172.25.7.1 #真机ip172.25.7.250,和真机同一个网段。
GATEWAY=172.25.7.250
DNS1=114.114.114.114
2.yum源:
进到/etc/yum.repos.d/目录下:
vim xxxx.repo #编辑文件
[rhel7.5]
name=rhel7.5
baseurl=http://172.25.7.250/rhel7.5 #网络源,方便后面通过快照建立的虚拟机使用yum源。
gpgcheck=0
3.NetworkManager 和firewalld 都关闭,且设为开机自启。
建立快照:
建立三个快照虚拟机:
qemu-img create -f qcow2 -b sunlele.qcow2 node1
qemu-img create -f qcow2 -b sunlele.qcow2 node2
qemu-img create -f qcow2 -b sunlele.qcow2 node3
-f 表示格式,-b表示从哪个母盘建立 node1表示建立的快照虚拟机文件
三个快照虚拟机的ip:
node1:172.25.7.1
node2:172.25.7.2
node3:172.25.7.3
本次实验思路:
真机172.25.7.250充当客户端,node1充当CDN代理服务器,node2和node3是后端服务器。
二、CDN-node1服务器的环境配置
1.安装软件
在node1上下载配置CDN所需软件:
1.varnish-6.3.1-1.el7.x86_64.rpm
2.jemalloc-3.6.0-1.el7.x86_64.rpm #varnish依赖性软件
yum install jemalloc-3.6.0-1.el7.x86_64.rpm -y#先安装依赖性软件
yum install varnish-6.3.1-1.el7.x86_64.rpm -y #解决了依赖性,再安装varnish
安装完毕后看一下配置文件的路径:
rpm -qc varnish-6.3.1-1.el7.x86_64
2.查看varnish信息
1.在linux系统中,id前1000的都是为系统用户留的id
2.查看varnish服务文件
3.查看varinsh管理信息
4.更改锁定内存
5.更改最大打开文件的个数
(1)查看varnish最大支持的打开文件数
vim /usr/lib/systemd/system/varnish.service
(2)查看系统支持的最大打开文件数
系统最大支持的是97785,小于varnish最大打开的数量,为了将varnish的鑫风能发挥到极致。将最大打开数调为131072,首先应该升级硬件,将node1的RAM升级成2G.
6.将更改后的varnish配置信息写入安全文件中
vim /etc/security/limits.conf
3.varnish实现CDN加速(单个后端的部署)
node1
1.修改varnish的默认文件
vim /etc/varnish/default.vcl
2.开启服务
systemctl start varnish
node2:
1.yum intstall httpd -y
2.vim /var/www/html/index.html
222
3.systemctl start httpd
客户端,真机
3.客户端(真机)测试
为什么被拒?
需要改端口。。。
vim /usr/lib/systemd/system/varnish.service
客户端再次测试:
三、查看缓存命中情况
配置node1:
1.vim /etc/varnish/default.vcl
2.systemctl restart varnish
真机测试:
四、手动清除缓存
<1>清除所有缓存
在varnish的所有缓存清除之前,真机的测试结果:
在varnish端清除缓存:
客户端再次测试:
<2>清除页面缓存
清除之前的结果,是hit:
varnish端清除:
客户端再次查看,就变成miss了:
五、图形化清除缓存
node1上:
1.安装http,编写配置文件:
yum install httpd -y
因为varnish占用的80端口,所以需要把httpd服务的默认端口改为其他端口
vim /etc/httpd/conf/httpd.conf
systemctl restart httpd #重启服务
2.下载bansys.zip ,并进行解压
yum install unzip -y #下载解压命令软件
unzip bansys.zip -d /var/www/html/ #指定解压目录
3.安装php(使得httpd服务可以识别php格式的内容)
yum install php -y
4.编辑发布内容,并重启服务
1.cd /var/www/html/bansys
2.mv * .. #将bansys里的东西移动到上层目录
3.cd /var/www/html #进入上层目录
4.vim config.php #编写配置文件
5.systemctl restart httpd
5.修改varnish 服务的默认配置文件,并重启服务
服务报错,未解决