varnish搭建cdn网络

本文介绍如何利用Varnish作为高性能的反向代理软件来实现内容分发网络(CDN)。文中详细记录了Varnish的安装、配置过程,并演示了如何通过Varnish实现缓存管理、负载均衡及CDN的推送管理。

一、简介

CDN的全称是Content Delivery Network,其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定.

二、用varnish实现cdn

Web Cache更是节约服务器资源的关键。而最近几年由FreeBSD创始人之一Kamp开发的varnish更是一个不可多得的Web Cache Server。严格意义上说,Varnish是一个高性能的反向代理软件,只不过与其出色的缓存功能相比,企业更愿意使用其搭建缓存服务器。
服务器(3个):172.25.4.1 172.25.4.2 172.25.4.3
1.安装包

varnish-3.0.5-1.el6.x86_64.rpm   varnish-libs-3.0.5-1.el6.x86_64.rpm

2.安装

yum install varnish * -y

3.修改varnish监听的端口

vim /etc/sysconfig/varnish
    VARNISH_LISTEN_PORT=80

4.修改/etc/varnish/default.vcl

backend web1 {              ##配置后端服务器
      .host = "172.25.4.2";
      .port = "80";
    }
    backend web2 {
      .host = "172.25.4.3";
      .port = "80";
    }

5.开启varnish

/etc/init.d/varnish start

实验一:测试缓存命中情况:

在default.vcl里面添加

sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}
重启varnish
/etc/init.d/varnish reload

测试:
在客户端添加解析:

vim /etc/hosts
172.25.4.1   www.westos.org  westos.org bbs.westos.org

用varnishadm清一下缓存,下次访问就不会从缓存中读取

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

实验二:负载均衡

如果找不到就到web1,或web2上找,web1、web2是apache

vim /etc/varnish/default.vcl
    backend web1 {              ##配置后端服务器
      .host = "172.25.4.2";
      .port = "80";
    }
    backend web2 {
      .host = "172.25.4.3";
      .port = "80";
    }
    director lb round-robin {       ##建立轮询(负载均衡)
    { .backend = web1; }
    { .backend = web2; }
    }

    sub vcl_recv {              ##把多个后端聚合为一个组,并检测后端健康状况
    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";
    }
    }

重启varnish
 /etc/init.d/varnish reload

在客户端测试要做的:
修改客户端的/etc/hosts
用浏览器访问:如果不出错的话,一只刷新页面会发现一会是web1的发布页,一会儿是web2的发布页

实验三:cdn管理系统

varnish帮我们缓存很多的web资源,但是当后台的数据有了变化需要更新怎么办,此时就需要用到CDN的推送管理了

1.安装apache,PHP,设置apache在8080端口,并且启动服务

 yum install httpd php -y

 /etc/init.d/httpd start   

2.将bansys.zip解包,包里面的内容统统放到apache的发布目录下

 unzip bansys.zip -d /var/www/html

3.修改发布目录下的config.php

vim /var/www/html/bansys/config.php #只保留如下设置,其余注释掉
    <?php
    //varnish主机列表
    //可定义多个主机列表
     $var_group1 = array(
                           'host' => array('172.25.4.1'),
                                     'port' => '80',                
                        );
    //varnish群组定义
    //对主机列表进行绑定
     $VAR_CLUSTER = array(
                             'www.westos.org' => $var_group1,
                                                 'bbs.westos.org' => $var_group1,
                         );
     //varnish版本
     //2.x和3.x推送命令不一样
     $VAR_VERSION = "3";   
    ?>

在http模式对varnish进行如下设置:

vim /etc/varnish/default.vcl
    acl westos {
    "127.0.0.1";
    "172.25.4.0"/24;
    }

    backend web1 {
      .host = "172.25.4.2";
      .port = "80";
    }
    backend web2 {
      .host = "172.25.4.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 westos cache";
    }
    else {
    set resp.http.X-Cache = "MISS from westos cache";
    }
    return (deliver);
    }

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值