Varnish之CDN推送平台

CDN

简介
CDN(Content Delivery Network)内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
优势
CDN能几乎涵盖国内所有线路。而在可靠性上, CDN 在结构上实现了多点的冗余,即使某一个节点由于意外发生故障,对网站的访问能够被自动导向其他的健康节点进行响应。CDN能轻松实现网站的全国铺设,不必考虑服务器的投入与托管、不必考虑新增带宽的成本、不必考虑多台服务器的镜像同步、不必考虑更多的管理维护技术人员。

CDN推送平台

作用

更快更有效的实现后端服务器的某些页面的更新(只需要把更新的内容进行推送即可),让网络信息更加快速更新

实验操作

一、环境:
server1:172.25.66.1 安装varnish、apache服务
server2:172.25.66.2 安装apache服务
server3:172.25.66.3 安装apache服务
二、配置varnish服务器server1
1:安装httpd
yum install httpd -y
2:修改httpd默认端口为8080(因为varnish的默认端口也是80,为避免端口冲突,所以修改httpd默认端口为8080)
vim /etc/httpd/conf/httpd.conf
第136行修改:Listen 8080
在这里插入图片描述
3:开启httpd服务,查看端口
在这里插入图片描述
3:下载PHP(CDN是用php语言写的,所以要下载php,用来打开cdn推送平台界面)
yum install php -y
4:yum install unzip -y
unzip -x bansys.zip(这个包里面目录中放的都是php文件)
在这里插入图片描述
5:mv bansys/* /var/www/html/
因为我们要打开CDN推送界面,所以要把这些php文件都放在apache默认发布目录中
在这里插入图片描述
6:vim /var/www/html/config.php

<?php   
 //varnish主机列表
 //可定义多个主机列表
 $var_group1 = array(
                        'host' => array('172.25.66.1'),
                        'port' => '80',             
                    );

 //varnish群组定义
 //对主机列表进行绑定
 $VAR_CLUSTER = array(
                         'www.westos.org' => $var_group1,
                     );

 //varnish版本
 //2.x和3.x推送命令不一样
 $VAR_VERSION = "3";
?>

在这里插入图片描述
7:重启httpd服务/etc/init.d/httpd restart
在这里插入图片描述
8:在物理机浏览器测试,物理机中一定要做解析
vim /etc/hosts
在这里插入图片描述
在浏览器中测试:
输入:172.25.66.1:8080
在这里插入图片描述
在推送平台界面中我们选择HTTP模式
9:HTTP模式需要对varnish主机做以下设置
vim /etc/varnish/default.vcl

##添加如下
acl westos {     #设置访问控制,即白名单
 "127.0.0.1";
 "172.25.66.0"/24;
 }
backend web1 {
  .host = "172.25.66.2";
  .port = "80";
}
backend web2 {
  .host = "172.25.66.3";
  .port = "80";
}
director lb round-robin {
     { .backend = web1; }
     { .backend = web2; }
}

sub vcl_recv {

   if (req.request == "BAN") {
      if (!client.ip ~ westos) {
        error 405 "Not allowed.";
       }
      ban("req.url ~ " + req.url);
      error 200 "ban added";
     }

   if (req.http.host ~ "^(www.)?westos.org") {
       set req.http.host = "www.westos.org";
       set req.backend = lb;
       #return(pass);    ##还原缓存,这一句需要注释了
       } elsif (req.http.host ~ "^bbs.westos.org") {
           set req.backend = web2;
             } else {
                 error 404 "westos cache";
                  }
 }
#查看缓存命中情况
sub vcl_deliver {
    if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT from test cache";
            }
    else {
        set resp.http.X-Cache = "MISS from test cache";
           }
     return (deliver);
 }

在这里插入图片描述
在这里插入图片描述
10:重启varnish服务
/etc/init.d/varnish restart
在这里插入图片描述
二、配置apache服务器server2与server3
#保持Varnish负载均衡中server2与server3的配置:https://blog.csdn.net/gd0306/article/details/83957611#t8
三、推送测试
未推送之前:
在这里插入图片描述
推送:
在这里插入图片描述
在这里插入图片描述
推送之后再次测试:
在这里插入图片描述
可以看到,访问已经更新

猜你喜欢

转载自blog.csdn.net/gd0306/article/details/83997288
今日推荐