1.CDN与vanish的介绍
CDN:
CDN content delivery network 内容分发(推送)网络,是在现有的Internet中增加一层新的网络架构,将网络内容发布到最接近用户的网络边缘(边缘服务器),使用户最近取得所需内容,解决网络拥挤状态,提高用户访问网站的速度。
CDN网络架构主要有两部分组成,中心和边缘两部分,中心指CDN网管中心和DNS重定向解析中心,负责全局负载均衡。边缘主要指异地节点,CDN分发的载体,主要有cache和负载均衡器组成。
CDN网络是经策略性部署的整体系统,包括分布式存储,负载均衡网络请求的重定向和内容管理四个要件。
vanish:
varnish是一款高性能且开源的方向代理服务器和HTTP加速器,它的开发者poul-Henning kamp FreeBSD 核心的开发人员之一。varnish采用全新的软件体系机构,和现在的硬件体系配合紧密,
varnish是一个轻量级的cache和反向代理软件。先进的设计理念和成熟的设计框架式varnish的主要特点。现在的varnish总共代码量不大,虽然功能在不断改进,但是还需要继续丰富加强。相比squid,varnish更加稳定,且效率更高,资源占用更少。
Varnish和Squid:Varnish是高性能开源的反向代理服务器和HTTP缓存服务器,Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存。Squid是从硬盘读取缓存的数据,而Varnish把数据存放在内存中,直接从读取内存,避免了频繁在内存、磁盘中交换文件,所以Varnish要相对更高效,但也有缺点,内存中的缓存在服务器重启后会丢失。
2.实验准备(虚拟机的封装)
1.创建共享型yum源
将rhel7.5版本的镜像挂载到共享目录下,并修改为永久挂载
测试:
2.创建虚拟机母盘并修改配置
安装rhel7.5的镜像
给定空间20G
之后按安装虚拟机步骤安装:详情
需要注意的是为了减少空间占用选择最小化安装
安装完成
进入虚拟机
此时可以用hostnamectl查看虚拟机配置
删除自动生成的启动文件anaconda
ls
rm -fr anaconda-ks.cfg
修改网络配置文件
vi /etc/sysconfig/network-script/ifcfg-ens3
systemctl restart network
ip a
关闭NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManger
添加yum源
vi /etc/yum.repos.d/westos.repo
安装vim bash-*、net-tools、lftp
vim /boot/grub2/grub.cfg
在100行最后写入net.ifnames=0
关闭防火墙,设置禁止开机启动
systemctl stop firewalld
systemctl disable firewalld
修改主机名
hostnamectl set-hostname server1
或者直接更改/etc/hostname
添加本地解析
vim /etc/hosts
设置selinux为disabled
vim /etc/selinux/config
清除母盘缓存,减少占用空间
yum install libguestfs-tools -y
virt-sysprep -d server1 (清除缓存)
出现这种情况是因为母盘没有关闭
关闭母盘,重新执行命令
为防止以后误打开母盘,可以删除名称(打开后会造成母盘变大)
3.创建快照
创建快照node1、node2、node3
qemu-img create -f qcow2 -b server1.qcow2 node1
qemu-img create -f qcow2 -b server1.qcow2 node2
qemu-img create -f qcow2 -b server1.qcow2 node3
导入快照
依次修改node1、node2、node3的名称ip
3.部署单个后端服务器的varnish过程
主机 | 用途 |
---|---|
物理机:172.25.16.250 | 客户端、测试端 |
server1:172.25.16.1 | vanish服务器 |
server2:172.25.16.2 | 后端服务器 |
1.从物理机cp:jemalloc-3.6.0-1.el7.x86_64.rpm varnish-libs-4.0.5-1.el7.x86_64.rpm
varnish-4.0.5-1.el7.x86_64.rpm三个安装包到server1上。
安装三个安装包
yum install * -y
2.查看vanish配置文件
rpm-qc varnish-4.0.5-1.el7.x86_64
vim /usr/lib/systemd/system/varnish.service
文件中的部分内容下:
其中NOFILES=131072表示最大打开的文件数是131072个
MEMLOCK=82000表示内存锁定是82M,也即最多能使用的内存空间是82M(以kb为单位)
3.查看系统最大文件数发现小与varnish的上限
sysctl -a | grep file
4.为使满足要求有两种方法:其一是把配置文件中的最大打开文件数更改小一点,其二是增加内存,这里我们将增加内存的大小。
关闭server1添加内存
再用sysctl -a | grep file查看
5.进入varnish的配置文件中修改端口为80,即真实接收请求的是反向代理和缓存
vim /etc/varnish/varnish.params
6.查看系统允许的内存锁定,发现系统只允许64M,所以需要修改参数
vim /etc/varnish/varnish.problems
vim /etc/security/limits.conf
systemctl restart varnish
7.查看varnish服务开启后的情况
ps aux
cat /proc/10769/status
cat /proc/10770/status
从上图可以看出varnish服务的开启系统开启了两个进程root和varnish
root的线程为1,varnish的线为217
8.来到server2,安装httpd
yum install httpd -y
systemctl start httpd
vim /var/www/html/index.html
curl localhost #测试
9.进入server1的varnish的配置文件
vim /etc/varnish/default.vcl
systemctl restart varnish
测试:
在物理机上访问172.25.16.1(server1),发现会访问到server2的共享内容说明反向代理成功
总结:
1.server1:反向代理+缓存
2.server2的入口只有server1
3.最多能打开的文件数,varnish会自动调整
4.锁定空间也即最多能使用的内存空间,varnish也会自动调整
5.URL:通过URL解析请求,URL->查询缓存->新鲜度检测->发送响应->记录到日志
6.缓存对象:生命周期(120s),自动更新,会定期清理
7.LRU(遵循:最近最少原则)
8.hit命中率,表明读取率很高 hit/(hit+miss),从内存中读取
9.调度器,相当于一个客户端
10.vanish启动时,会自动建立一个vanish用户(id varnish)
4.查看缓存命中情况
vim /etc/varnish/default.vcl
##配置单个后端服务器
backend default {
.host = "172.25.66.2";
.port = "80";
}
##查看缓存命中情况
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}
测试:
在物理机上访问server1(注意,要开启后端服务器server2的httpd),会发现没有缓存时是X-Cache: MISS from westos cache,访问过一次缓存保存后,再次访问时会显示击中X-Cache: HIT from westos cache,说明缓存命中
5.清除缓存
1.首先在物理机上访问server1使其缓存数据()
2.清除server1上所有缓存内容(/)1
varnishadm ban req.url "~" /
3.在物理机上分别访问server1和其下的index.html,发现都没有缓存
curl 172.25.16.1
curl 172.25.16.1/index.html
4.只清除server1下index.html
varnishadm ban req.url "~" /index.html
6.在物理机上分别访问server1和其下的index.html,发现/下有缓存index.html
没有缓存
curl 172.25.16.1
curl 172.25.16.1/index.htm