搭建cdn的高性能HTTP加速Varnish服务器

搭建cdn的高性能HTTP加速Varnish服务器,第1张

搭建cdn的高性能HTTP加速Varnish服务器

对CND的简单了解:

内容分发网络(CDN)是一种新的网络建设方式,是在传统IP网络中专门为发布宽带富媒体而优化的网络覆盖层。从广义上讲,CDN代表了一种基于质量和秩序的网络服务模式。

CDN是建立在网络上的内容分发网络。它依靠部署在各地的边缘服务器,并通过中心平台的功能模块如负载均衡、内容分发、调度等。,使用户能够就近获取所需内容,减少网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要包括内容存储和分发技术。

CDN的基本原理是广泛使用各种缓存服务器,这些缓存服务器分布在用户访问相对集中的区域或网络。当用户访问网站时,使用全局负载技术将用户的访问定向到最近的正常工作的缓存服务器,缓存服务器直接响应用户的请求。

一般来说,内容服务基于缓存服务器,也称为代理缓存,位于网络边缘,距离用户只有一跳的距离。同时,代理缓存是内容提供商的源服务器的透明镜像(通常位于CDN服务提供商的数据中心)。这种架构使CDN服务提供商能够代表他们的客户,即内容提供商,向最终用户提供尽可能好的体验,这些用户不能容忍请求响应时间的任何延迟。


瓦尼诗基本介绍:


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

(1)1)接收状态,即请求处理的进入状态,根据VCL规则,请求应该是Pass或

管道,或输入查找(本地查询)。

(2)查找状态。进入此状态后,将在哈希表中搜索数据。如果找到,就进入Hit状态,否则就进入。

进入错过状态。

(3)Pass状态,将进入后端请求,即进入fetch状态。

(4)Fetch状态,进行请求的后端获取,发送请求,获取数据,进行本地处理。

的储存。

(5)交付状态,将获取的数据发送给客户端,然后完成该请求。



实验环境:三台redhat6.5主机

pt1.example.com172.25.13.1

pt2.example.com:172.25.13.2

pt3.example.com:172.25.13.3

在这里,pt1.example.com被缓存为varnish服务器

pt2.example.com和pt2.example.com作为apache服务器



一、cdn缓存清漆服务器的建设和配置

在pt1.example.com上执行以下 *** 作:

1.下载并安装

下载安装包varnish-3.0.5-1.el6.x86_64.rpm,Varnish-libs-3.0.5-1.el6.x86_64.rpm

安装清漆软件包;

[root@pt1 ~]#yum install -yvarnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm 编辑/etc/sysconfig/varnish文件,主要是为了改变测试端口,其他参数根据需要改动 [root@pt1 ~]#vim /etc/sysconfig/varnish VARNISH_LISTEN_PORT=80            #改变varnish服务端口 VARNISH_TTL=60              #缓存时间为60s

2.修改配置文件

编辑/etc/varnish/default.vcl文件

[root@pt1 ~]#vim /etc/varnish/default.vcl backend default {  .host = "172.25.13.2";              #主机地址  .port = "80";                    #服务端口 } ##查看缓存命中情况 sub vcl_deliver { if (obj.hits > 0) { set resp.http.X-Cache = "HIT fromwestos cache"; } else { set resp.http.X-Cache = "MISS fromwestos cache"; } return (deliver); }

此时访问172.25.13.1,可以看到默认进入pt2.example.com的默认发布页面。

的缓存时间设置为60s,第一次访问后,总是返回的信息是从西奥斯卡命中的。

60s过后,缓存会清空空,再次发送来自westos缓存的未命中信息。



3.手动清除缓存信息,并通过varnishadm手动清除缓存

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

4.定义多个后端服务器(基于不同域名的访问)

[root@pt1 ~]#vim /etc/sysconfig/varnish backend default {  .host = "172.25.13.2";              #主机地址  .port = "80";                    #服务端口 } backend web2 {  .host = "172.25.13.3";  .port = "80"; }   sub vcl_recv {        if (req.http.host ~ "^(www.)?pt.com") {                    #匹配请求的域名是否为wwwNaN.com                 set req.http.host ="wwwNaN.com";                 set req.backend = default;                           }        elsif (req.http.host ~ "^wwwNaN.org") {               #匹配请求的域名是否为wwwNaN.org                 set req.backend = web2;        }        else {error 404 "westos cache";        } } [root@pt1 ~]# /etc/init.d/varnish reload


5.运行状况检查和负载平衡

#健康检查以及负载均衡 probe healthcheck {  .url = "/index.html";         #那个url需要varnish请求  .interval = 5s;                   #检查间隔为5s  .timeout = 1s;                   #等待多长时间探针超时,这里为1s  .window = 5;                           #检测(维持)5个windows的结果   .threshold= 3;                  #当windows其中3个成功,就宣布健康 } backend default {  .host = "172.25.13.2";  .port = "80";  .probe = healthcheck;               #调用健康检查 } backend web2 {  .host = "172.25.13.3";  .port = "80";  .probe = healthcheck; } director lb round-robin {        { .backend = default;}        { .backend = web2;} } sub vcl_recv {        if (req.http.host ~ "^(www.)?pt.com") {                 set req.http.host ="wwwNaN.com";                 set req.backend = lb;                 return(pass);                 #此处为了测试,不进行缓存        }        elsif (req.http.host ~ "^wwwNaN.org") {                 set req.backend = web2;        }        else {error 404 "westos cache";        } } [root@pt1 ~]#/etc/init.d/varnish reload


在pt3.example.com上配置虚拟主机:

[root@pt3 ~]#vim /etc/httpd/conf/httpd.conf <VirtualHost *:80>    DocumentRoot /www1    Serveralias pt.com    ServerName wwwNaN.com </VirtualHost> <VirtualHost *:80>    DocumentRoot /www2    ServerName wwwNaN.org </VirtualHost>


6.测试发现,来访的wwwNaN.com和pt.com在两台服务器上进行轮询。



WwwNaN.org值得访问服务器pt3.example.om;



二。CDN推送平台的构建:

将httpd服务的监听端口修改为:8080(PS:80端口已被varnish占用)

unzip bansys.zip -d /var/www/html/ mv  /var/www/html/bansys/*/var/www/html/ 编辑config.php配置文件: vim config.php $var_group1 = array(                         'host' =>array('172.25.13.2'),                                                'port' => '6082',                                    );  //varnish群组定义  //对主机列表进行绑定  $VAR_CLUSTER = array(                          'wwwNaN.com' =>$var_group1,                      );    //varnish版本  //2.x和3.x推送命令不一样  $VAR_VERSION = "3"; ?>   service httpd restart


按如下方式修改上光液配置文件:

BAN有两种工作模式:telnet模式和http模式。

#telnet模式需要关闭varnish服务管理端口的认证,并注释掉/etc/sysconfig/varnish文件。

"-S${VARNISH_SECRET_FILE}"行,只需重新启动VARNISH服务。

#如果是http模式,需要对varnish进行以下设置:

# vim /etc/varnish/default.vcl acl pt {                         #设置访问控制 "127.0.0.1"; "172.25.13.0"/24; } sub vcl_recv { if (req.request == "BAN") { if (!client.ip ~ pt) { error 405 "Not allowed."; } ban("req.url ~ " + req.url); error 200 "ban added"; } } service varnish restart

访问172.25.13.1:8080界面,如下所示:


以上是cdn缓存清漆的基本构造、配置和测试结果。CDN缓存清漆的具体开发和配置可以提高速度。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/778574.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存