cdn_varnish

下载安装

安装varnish需要两个包,一个是安装包一个是他的库文件,如下:
varnish-3.0.5-1.el6.x86_64.rpm
varnish-libs-3.0.5-1.el6.x86_64.rpm
开启varnish
/etc/init.d/varnish start

修改访问端口

建议修改为80端口,这样浏览器就可以直接访问
配置文件在
vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80
找到上面那行,修改为80端口
这里写图片描述
还有一些其他关于varnish本身的默认参数,可以根据需要也去修改

修改后台服务器ip

配置文件为
/etc/varnish/default.vcl
加入如下所示代码

backend default {
  .host = "172.25.49.2";
  .port = "80";
}

表示后台服务器的ip是172.25.49.2
访问端口为80
设置完成后重新加载配置
/etc/init.d/varnish reload

测试

在172.25.49.2开启http服务,随意写一个默认的网页
在测试机上修改本地解析
/etc/hosts
在测试机浏览器上输入url,就可以通过varnish访问172.25.49.2上的http服务,但是效果不明显。

使测试效果明显

在/etc/varnish/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缓存中寻找需要访问的数据
若找到了,则返回 HIT from westos cache
若没有找到就返回 MISS from westos cache
完成后需要重新加载配置
/etc/init.d/varnish reload
再测试的时候,在测试机的shell中,输入命令
curl -I www.westos.org
即可查看是否命中。

负载均衡

一般来说,服务器都是集群,所以一般访问都是通过特定的算法计算,然后让varnish通过算法对访问进行控制

backend web1 {
  .host = "172.25.49.2";
  .port = "80";
}
backend web2 {
  .host = "172.25.49.3";
  .port = "80";
}

当访问的是web1时,去访问2服务器,是web2时,访问3服务器

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缓存中寻找需要访问的数据
若找到了,则返回 HIT from westos cache
若没有找到就返回 MISS from westos cache

director lb round-robin {
{.backend = web1;}
{.backend = web2;}
}

在lb中有web1和web2两个服务器代理,通过rr轮回进行访问

sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {
error 404 "westos cache";
        }
}

当浏览器访问的是www.westos.org或.westos.org时,找lb这个代理,当是bbs.westos.org时,访问web2这个代理
其他的都是错误的

Varnish的推送更新

网络上有各种各样的推送更新系统,本博客选择了一个来源于网络的php代码,所以在服务器上需要安装php,推送系统使用的http协议,所以要安装http服务,http默认使用的80端口,但varnish已经占用了80端口,所以需要改变http的服务端口,
下载安装所需要的php代码,然后修改配置文件,具体
如下,配置文件放在http的默认发布目录下。

<?php
 //varnish主机列表
 //可定义多个主机列表
 $var_group1 = array(
                        'host' => array('172.25.49.1'),
                                        'port' => '80',
                    );
 //varnish群组定义
 //对主机列表进行绑定
 $VAR_CLUSTER = array(
                         'www.westos.org' => $var_group1,
                     );
 //varnish版本
 //2.x和3.x推送命令不一样
 $VAR_VERSION = "3";
?>

完成后,重启http服务

修改varnish 的配置文件,主要加上访问控制策略

acl redhat {
"127.0.0.1";
"172.25.49.0"/24;
}

表示redhat这个访问策略,在本机和172.25.49.0/24这个网段可以修改。

redhat的策略如下

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

完成后,重启varnish就可以使用

测试:
在测试机上输入url,就可以显示
这里写图片描述
就可以推送了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值