CDN之高性能HTTP加速器Varnish的部署

CDN(Content Delivery Network)是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
搭建CDN系统可以选择3种主流方案:
1. squid 2. varnish 3. Nginx+memcache


Varnish是一款高性能的开源HTTP加速器,Varnish的功能与Squid服务器相似,雅思7分有多难都可以用来做HTTP缓存。 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能优越于Squid

这里写图片描述


这里写图片描述

处理过程大致分为如下几个步骤:

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


工作流程大致如下:

当varnish上没有缓存时:
这里写图片描述
当varnish上有缓存数据的时候:
这里写图片描述


三台虚拟机+一台真实主机

主机名 IP 服务
server1 172.25.7.1 Varnish
server2 172.25.7.2 Apache
server3 172.25.7.3 Apache
foundation7 172.25.7.250 Client

server1
1.下载安装varnish软件包

http://varnish-cache.org/releases/
这里写图片描述
2.修改varnish的监听端口

3.修改配置文件

修改安全限制文件,保证流量大时,服务正常运行

打开文件的最大数,有如下关系:

内核操作> 操作系统> 软件

内核允许的打开文件最大数

varnish软件的打开文件最大数
这里写图片描述
默认数量大于内核操作的文件数目.故做如下修改:

操作系统允许的最大数目:
根据此文件的参数修改内存空间和线程数,文件数应该介于上述两者之间

这里写图片描述
作出如下修改:

这里写图片描述

4.开启服务

这里写图片描述
server2网络服务器
下载apache并开启服务

编辑发布页面内容

这里写图片描述
server1
修改varnish监听网络服务器的ip

这里写图片描述

这里写图片描述
Client客户端测试:
这里写图片描述


server1:

添加代码如下:

这里写图片描述
重新加载varnish

这里写图片描述
Client客户端测试:

添加本地解析:

开始访问测试:
这里写图片描述
这里写图片描述
varnish默认缓存时间120s,超过120s自动清除缓存


这里写图片描述

server1进行清除缓存:

这里写图片描述

Client进行测试:

这里写图片描述

server1:

修改为如下代码:

这里写图片描述

这里写图片描述
server2:配置网络服务器

开启httpd服务,编写测试页并重启服务

这里写图片描述
server3:配置网络服务器

安装并开启服务

编辑默认发布界面:

这里写图片描述
Client进行测试:

添加本地解析:

开始访问测试:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

server1:

这里写图片描述
server2:

这里写图片描述
server3:设定虚拟主机

这里写图片描述

这里写图片描述
这里写图片描述
测试虚拟主机,做域名解析

这里写图片描述
在server3上测试:
这里写图片描述
Client客户端测试

<1>在网页进行测试:
这里写图片描述
这里写图片描述
<2>在shell中测试:
这里写图片描述
当server2的网络服务器挂掉之后:
这里写图片描述
自动去连接server3的服务器
这里写图片描述
不会有缓存产生
这里写图片描述


一般在使用中不会在中加入
在注释掉之后:
这里写图片描述
开始进行缓存,在120s之后连接另一台服务器
这里写图片描述
每此手动清一次缓存,客户端测试轮叫一次
这里写图片描述
这里写图片描述

server1:推送平台

1.安装apache php,并修改端口号

因为varnish占用的80端口,所以修改httpd的端口为8080

这里写图片描述
2.下载bansys安装包:
http://code.google.com/p/varnish-php-bansys/
这里写图片描述

这里写图片描述
3.把解压后的文件放入apache默认发布目录
这里写图片描述
4.修改配置文件

这里写图片描述
5.开启服务

这里写图片描述
6.浏览器访问
这里写图片描述


bansys 有两种工作模式,分别是:telnet 和 http 模式
【1】telnet 模式需要关闭 varnish 服务管理端口的验证,注释掉/etc/sysconfig/varnish 文件中的 “ -S $
{VARNISH_SECRET_FILE}”这行,重启 varnish 服务即可。

【2】 如果是 http 模式需要对 varnish 做以下设置:

这里写图片描述

这里写图片描述
客户端Client测试:

在未推送之前
这里写图片描述
这里写图片描述
开始推送:
这里写图片描述
这里写图片描述
点击页面刷新:
这里写图片描述
这里写图片描述

猜你喜欢

转载自www.cnblogs.com/chenjunkang/p/9830751.html