Varnish之CDN推送管理平台实例

CDN简介

CDN(Content Delivery Network)内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

CDN优势

CDN能几乎涵盖国内所有线路。而在可靠性上, CDN 在结构上实现了多点的冗余,即使某一个节点由于意外发生故障,对网站的访问能够被自动导向其他的健康节点进行响应。CDN能轻松实现网站的全国铺设,不必考虑服务器的投入与托管、不必考虑新增带宽的成本、不必考虑多台服务器的镜像同步、不必考虑更多的管理维护技术人员。

主机环境:

  • rhel6.5 selinux and iptables disabled

实验主机:

主机名 IP 服务
server1 172.25.254.1 varnish
server2 172.25.254.2 apache
server3 172.25.254.3 apache

varnish cdn 推送平台

  • varnish 相关配置请参考上篇博文
    • http://blog.csdn.net/sunny_future/article/details/79319613
  • varnish-server1
[root@server1 ~]# yum install -y httpd

[root@server1 ~]# vim /etc/httpd/conf/httpd.conf ##修改端口为8080,避免冲突
Listen 8080

[root@server1 ~]# /etc/init.d/httpd start
[root@server1 ~]# netstat -antlp

Varnish之CDN推送管理平台实例_第1张图片

[root@server1 ~]# yum install -y php        ##需要安装 php 支持
[root@server1 ~]# yum install -y unzip
[root@server1 ~]# unzip -x bansys.zip
[root@server1 ~]# mv bansys/*  /var/www/html/
[root@server1 ~]# ls /var/www/html/
class_socket.php  config.php  index.php  purge_action.php  static
[root@server1 ~]# vim /var/www/html/config.php 
   

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

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

 //varnish版本
 //2.x和3.x推送命令不一样
 $VAR_VERSION = "3";
?>
[root@server1 ~]# /etc/init.d/httpd restart
物理机测试:
  • 查看解析
[root@fundation20 Desktop]# cat /etc/hosts
172.25.254.1 server1 www.westos.org westos.org bbs.westos.org
  • 浏览器测试
    Varnish之CDN推送管理平台实例_第2张图片
http 模式需要对 varnish 做以下设置
[root@server1 ~]# vim /etc/varnish/default.vcl 
##添加如下
acl westos {     #设置访问控制,即白名单
 "127.0.0.1";
 "172.25.254.0"/24;
 }
backend web1 {
  .host = "172.25.254.2";
  .port = "80";
}
backend web2 {
  .host = "172.25.254.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);
 }
[root@server1 ~]# /etc/init.d/varnish restart
Stopping Varnish Cache:                                    [  OK  ]
Starting Varnish Cache:                                    [  OK  ]
  • apache-server2
#保持Varnish负载均衡中server2配置
http://blog.csdn.net/sunny_future/article/details/79319613
  • apache-server3
#保持Varnish负载均衡中server3配置
http://blog.csdn.net/sunny_future/article/details/79319613

物理机测试:

  • 查看解析
[root@fundation20 Desktop]# cat /etc/hosts
172.25.254.1 server1 www.westos.org westos.org bbs.westos.org
  • 终端测试
    • 一般情况下
      这里写图片描述
    • CDN推送
      写入推送页面,点击确认提交
      Varnish之CDN推送管理平台实例_第3张图片
      显示推送成功
      Varnish之CDN推送管理平台实例_第4张图片
    • 页面已经更新
      Varnish之CDN推送管理平台实例_第5张图片

你可能感兴趣的:(Linux系统运维项目,Linux系统)