利用Varnish实现CDN缓存

一.Varnish的简要介绍
Varnish是一款高性能的开源HTTP加速器,具有反向代理,缓存的功能,主要用来作为反向代理中的缓存服务器。
Varnish使用内存缓存文件来减少响应时间和网络带宽消耗。

在这里插入图片描述

二.Varnish作为缓存服务器与Squid对比如下:

  • Varnish与Squid都是一个反向代理服务器,都可用作高性能的代理缓存服务器,并且都是开源软件。
  • Varnish稳定性很高,两者在完成相同负荷的工作时,Squid服务器发生故障的几率要高于Varnish,因为Squid需要经常重启。
  • Varnish访问速度更快,Varnish采用了“Visual Page Cache”技术,所有缓存数据都直接从内存读取,而Squid是从硬盘读取缓存数据,因此Varnish在访问速度方面会更快。
  • Varnish支持更多的并发连接,因为Varnish的TCP连接释放要比Squid快,所以在高并发连接情况下可以支持更多的TCP连接。
  • Varnish可以通过管理端口,使用正则表达式批量清除部分缓存,而Squid做不到
  • Varnish进程一旦挂起、崩溃或者重启,缓存数据都会从内存中完全释放,此时所有请求都会被发送到后端服务器,在高并发情况下,这会给后端服务器造成很大压力
  • Varnish配置相比Squid简单,监控接口丰富,性能好,但Squid资料多,功能丰富,支持对ACL的访问控制

VCL处理流程图:
在这里插入图片描述
三.Varnish的工作流程:

处理过程大致分为如下几个步骤:
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进
入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。


四.Varnish 搭建过程:

实验环境:必须保证selinux为disabled状态,iptables为关闭状态。
实验主机:server1 172.25.254.1 varnish
         server2 172.25.254.2 apache
         server3 172.25.254.3 apache
                   

实验具体操作:
1.配置后端服务器
(1)在确保server1上有以下两个rpm包的情况下,使用yum源安装之后,开启varnish。

server1:yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
server1:/etc/init.d/varnish start

在这里插入图片描述
在这里插入图片描述
(2)改变varnish的监听端口

server1: vim /etc/sysconfig/varnish #编辑varnish的配置文件

在这里插入图片描述

server1:/etc/init.d/varnish reload #重新加载服务

(3)在server2上安装apache软件,并开启服务,编辑默认发布页面

server2: yum install httpd -y
         /etc/init.d/httpd start
         vim /var/www/html/index.html #编辑默认发布页面

在这里插入图片描述
(4)修改server1上varnish的配置文件

[root@server1 ~]# cd /etc/varnish/
[root@server1 varnish]#ls
default.vcl secret
[root@server1 varnish]#vim default.vcl

在这里插入图片描述

[root@server1 varnish]#/etc/init.d/varnish reload #重新加载服务

(5)设置本地解析,在物理机的浏览器上进行访问测试。
在这里插入图片描述
测试结果:
在这里插入图片描述
在这里插入图片描述2.配置后端服务器,并查看缓存命中情况

[root@server1 ~]# cd /etc/varnish/
[root@server1 varnish]# vim default.vcl

在这里插入图片描述

/etc/init.d/varnish reload # 重新加载

缓存命中情况测试(物理机):
在这里插入图片描述
在这里插入图片描述
3.手动清除varnish缓存

通过 varnishadm 手动清除缓存
varnishadm ban.url .*$  #清除所有
varnishadm ban.url /index.html #清除 index.html 页面缓存
varnishadm ban.url /admin/$ #清除 admin 目录缓存

[root@server1 varnish]# varnishadm ban.url /index.html #清除index.html页面缓存

在这里插入图片描述

在这里插入图片描述

4.定义多个不同域名站点的后端服务器
(1)

[root@server3 ~]# yum install httpd -y #在server3上下载httpd服务
[root@server3 ~]# /etc/init.d/httpd start #开启httpd服务
Starting httpd: httpd: Could not reliably determine the server’s fully qualified domain name, using 172.25.254.53 for ServerName [ OK ]

[root@server3 ~]# cd /var/www/html/
[root@server3 html]# vim index.html#编辑默认发布页面

在这里插入图片描述

(2)修改server1的varnish配置文件

[root@server1 varnish]# vim default.vcl

在这里插入图片描述

在这里插入图片描述

[root@server1 varnish]# /etc/init.d/varnish reload

(3)在物理机上添加本地解析

[root@foundation49 ~]# vim /etc/hosts

在这里插入图片描述
(4)测试
在这里插入图片描述
在这里插入图片描述
5.定义负载均衡
(1)编辑server3的默认发布页面

[root@server3 html]#mkdir /www1
[root@server3 html]# cd /www1/
[root@server3 www1]# vim index.html

在这里插入图片描述

(2)编辑httpd的主配置文件

root@server3 www1]# vim /etc/httpd/conf/httpd.conf

在这里插入图片描述

[root@server3 www1]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: httpd: Could not reliably determine the server’s fully qualified domain name, using 172.25.254.53 for ServerName
[ OK ]

(3)修改server2的配置文件,并重新编辑server2的默认发布页面,以便于与server3进行区分。

[root@server1 varnish]# vim default.vcl

在这里插入图片描述

[root@server1 varnish]# /etc/init.d/varnish reload

(4)在物理机进行测试
在这里插入图片描述
在这里插入图片描述
6.创建缓存递送平台,定点清除后端数据
(1)在server2和server3上打开httpd服务(为了便于后续curl访问看到实验效果)

[root@server2 ~]#/etc/init.d/httpd start
Starting httpd:
[root@server3 ~]# /etc/init.d/httpd start

(2)在server1上下载bansys.zip(需要解压)

[root@server1 ~]# yum install -y uzip
[root@server1 ~]# uzip bansys.zip -d /var/www/html/#将其解压到指定路径

安装httpd服务,修改配置文件,并开启此服务。

[root@server1 ~]# yum install httpd -y
[root@server1 ~]# vim /etc/httpd/conf/httpd.conf

修改配置文件如下:
在这里插入图片描述

[root@server1 ~]#/etc/init.d/httpd restart

在这里插入图片描述

安装php,编辑发布内容的格式

[root@server1 ~]# yum install php -y

[root@server1 html]#cd bansys/
[root@server1 bansys]# ls
class_socket.php config.php index.php purge_action.php static
[root@server1 bansys]#mv * /var/www/html/
[root@server1 bansys]# cd ..
[root@server1 html]# ls
bansys class_socket.php config.php index.php purge_action.php static
[root@server1 html]#vim config.php

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编辑如下内容:
在这里插入图片描述

[root@server1 html]# /etc/init.d/httpd restart
[root@server1 ~]#cd /etc/varnish/
[root@server1 varnish]#vim default.vcl #修改配置文件

在这里插入图片描述

[root@server1 ~]# /etc/init.d/varnish reload

物理机访问测试:在物理机的浏览器中输入www.westos.org:8080 即可进入到以下页面

在这里插入图片描述
在这里插入图片描述
后端缓存数据清理完成!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值