1.CDN的定义
CDN的全称是Content Delivery Network,称为内容发布网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容发布、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术有内容存储和分发技术。
2.varnish的定义
Varnish是一款高性能的开源HTTP加速器,罗威最大的在线报纸 Verdens Gang使用三台varnish代替了原来的12台Squid代理缓存服务器,性能比以前更好了。
在一般企业中,他们不用自己搭建varnish服务器,通过使用别人做好的,一般专门做这一类的公司才会自己搭建
为什么varnish性能比Squid的性能好呢?
squid加速器(代理缓存服务器)是将从服务器要回来的资源放在自己的硬盘里,客户读取的速率慢,代理的效率很低。
varnish加速器(代理缓存服务器)是将从服务器要回来的资源放在自己的内存里,客户读取的速率很快,代理的效率高。
3.varnish的工作方式
(1)仅仅作为一个代理服务器:帮客户端去问服务端要数据,要回来的数据直接给客户端自己不缓存一份,这种情况是客户的隐私信息,热点信息,更新比较快的数据,不缓存,只代理。
(2)既代理又缓存:帮客户端去问服务端数据,要回来的数据先给自己缓存一份,然后再发给客户端,这种情况是用于更新比较慢的数据,此时varnish既缓存又代理。
【注】实验环境:
rhel7_node1做varnish代理缓存服务器;
rhel7_node2做web服务器;
rhel7_node3做
4.安装varnish
首先rhel7_node1中安装varnish:
在varnish官网中找到适合的rpm安装包下载下来
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427170728110.png?x-oss-
接着配置好yum源后安装
安装时会报错,提示缺少jemalloc包
下载jemalloc包
下载完成后,再次安装varnish
查看一下安装结果
5.varnish服务的配置
(1)首先我们来看一下varnish的启动脚本
/usr/lib/systemd/system/varnish.service 是varnish服务启动脚本,里面有一些基本最基本的参数:允许开启的文件个数,内存锁定大小
systemctl status varnish ##查看varnish服务的状态
vim /usr/lib/systemd/system/varnish.service ##打开varnish服务的启动脚本
ulimit -l ##查看系统内存大小
sysctl -a | grep file ##查看系统允许开启文件的最大个数
(2)系统参数限制文件:/etc/security/limits.conf
vim /etc/security/limits.conf
(3)打开varnish服务,查看端口
验证一下,看服务是否可以访问
6.将rhel7_node2搭配成一个web服务器
yum install httpd -y ##首先安装httpd
systemctl start httpd ##开启httpd服务
systemctl status httpd ##查看服务的状态
echo www.westos.org > /var/www/html/index.html ##将www.westos.org导入到apache默认发布页面中
curl localhost ##可以看到web已经搭建好了
7.将rhel7_node1作为代理服务器,rhel7_node2作为web服务器进行测试
vim /etc/varnish/default.vcl
在客户机浏览器中访问varnish代理缓存服务器(rhel7_node1),可以看到rhel7_node2(web服务器)的默认发布页面的信息。
8.master进程和child 进程
varnish开启俩个进程,一个master进程,一个child进程
master(management)进程:主要是读取配置和fork 监控子(child)进程。
child(worker,主要做cache的工作进程):真正用于处理用户请求。
cat /proc/9314/status ##查看master进程的状态
cat /proc/9324/status ##查看child进程的状态
9.varnish的缓存
vim /etc/varnish/default.vcl
当客户主机node3去访问varnish代理缓存服务器时
varnish默认系统每隔120秒清理一下缓存,以便将数据随时进行更新,给用户的体验带来保障
也可以手动清理varnish服务器中的换存
varnishadm ban req.url "~" / ##清楚/下所有缓存
客户机再次访问:
varnishadm ban req.url /index.html ##清除varnish服务器中/Index.html 网页的缓存
在客户机中测试: