Varnish

一.安装

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

下载安装并开启server2、server3的http服务

二.配置

1.server1 做后端服务器

 (1)在/etc/sysconfig/varnish中更改varnish服务端口

打开服务: service varnish start

(2)在/etc/varnish/default.vcl

1)配置一个后端服务器

修改安全限制文件(保证流量大时,服务正常运行)
打开文件的最大数,有如下关系:内核操作> 操作系统> 软件
内核允许的打开文件最大数:

varnish软件允许打开的最大文件数:vim /etc/sysconfig/varnish

在server2主机上:
[root@server2 ~]# yum install httpd -y # 下载httpd
[root@server2 ~]# /etc/init.d/httpd start #开启httpd服务
[root@server2 ~]# cd /var/www/html
[root@server2 html]# vim index.html #写入解析
写入:server2
在物理主机上:
浏览器中输入varnish服务器的ip地址(172.25.0.116),访问到解析。

2.查看缓存命中情况

(1)在server1(varnish服务端)
[root@server1 varnish]# vim /etc/sysconfig/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);
}

/etc/init.d/varnish restart —重启服务

(2) 在客户端(真机)添加本地解析
写入:172.25.0.116  www.westos.org

(3) 在真机添加本地解析后就可以进行访问测试。

注意:varnish的默认缓存时间为120s,超过120s就会自动清除缓存。
我们也可以通过varnishadm手动清除缓存。
在varnish服务端(server1)清除缓存,然后在客户端(真机)进行测试

在server1上手动清除缓存

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

3.定义多个不同域名站点的后端服务器
在server1(varnish服务端)主机上:
(1)修改默认源代码为:
[root@server1 varnish]# cd /etc/varnish
[root@server1 varnish]# vim default.vcl

#当访问 www.westos.org 域名时从 web1 上取数据,访问 www.linux.org 域名时到 web2 取数据,
访问其他页面报错。

1)在server1上清除缓存,重新加载varnish软件服务。

2)在主机server2/3配置网络服务器 , 开启httpd服务,编写测试页并重启服务
    root@server2 ~]# vim /var/www/html/index.html

在物理主机上加入解析

测试:

真机测试www.westos.org   www.linux.org

访问其他页面

三.健康状况检查

把多个后端聚合为一个组,并检测后端健康状况

1)server1在/etc/varnihsi/default.vcl加入:

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";
}
}
# service varnish reload

2)在server3 中 修改 httpd 的配置文件

   在 server3 中 再添加一个访问目录 

   打开端口NameVirtualHost *:80。

3)server3添加解析  重启httpd服务

在server3上进行测试

4)在server2主机上:修改访问文件index.html

5)在server1主机(后端服务器)上:

为了方便,不进行缓存   添加 route  (pass)

6)重新启动server2/3的httpd   server1的varnish

/etc/init.d/varnish reload 

varnishadm ban.url /index.html #清空index.html页面缓存120后从0开始

7)真机测试查看是否可以进行健康检查

网页中测试:

在物理主机上测试:这个效果使添加了 return (pass) 表示不进行缓存,注释掉不会交替出现

注释之后:

在实验中物理机和虚拟机的火墙要关闭,httpd服务要打开。若stop掉server2或server3的httpd,再测试时,会只访问正常的服务器,这就证明了varnish具有健康检查的功能。

四.搭建CDN推送平台。

server1:推送平台
(1)开启httpd服务及varnish服务。
(2)因为varnish占用的80端口,所以修改httpd的端口为8080并重启服务

2)安装php服务,unzip解压命令

下载并压缩bansys包及安装服务,把解压后的文件放入apache默认发布目录 。

#只保留如下设置,其余注释掉

网页访问172.25.0.116:8080

bansys 有两种工作模式,分别是:telnet 和 http 模式。
telnet 模式需要关闭 varnish 服务管理端口的验证,注释掉/etc/sysconfig/varnish 文件中的 “ -S $
{VARNISH_SECRET_FILE}”这行,重启 varnish 服务即可。

3)如果是 http 模式需要对 varnish 做以下设置:

      设置acl访问控制

# vi /etc/varnish/default.vcl
acl westos {
"127.0.0.1";
"172.25.0.0"/24;
}
sub vcl_recv {
if (req.request == "BAN") {
if (!client.ip ~ westos) {
error 405 "Not allowed.";
}
ban("req.url ~ " + req.url);
error 200 "ban added";
}
}
# service varnish reload

客户端测试

没有推送前:

推送后:

 

以此类推,每推送一次,就会将网址更新一次.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值