VARNISH

VARNISH
这里写图片描述


安装

yum install varnish-3.0.5-1.el6.x86_64.rpm  varnish-libs-3.0.5-1.el6.x86_64.rpm -y

后端服务器配置

server1

vim /etc/sysconfig/varnish
66 VARNISH_LISTEN_PORT=80       ##varnish服务端口为80,但要注意http端口80,不要开启httpd服务否则有矛盾
vim /etc/varnish/default.vcl
backend web1 {                  ##后端为web1
  .host = "172.25.36.2";        ##主机为172.25.36.2
  .port = "80";                 ##通过80端口

/etc/init.d/varnish restart     ##重启varnish

server2

yum install httpd

/etc/init.d/httpd start
vim /var/www/html/index.html
cat /var/www/html/index.html
<h1>server2.westos.org</h1>

测试:
curl -I www.westos.org
这里写图片描述

查看缓存命中情况

vim /etc/varnish/default.vcl
sub vcl_deliver {
if (obj.hits > 0) {                              ##若命中缓存,则输出"HIT..."
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";##若缓存没有命中,则输出"MISS"
}
return (deliver);
}

测试:
curl -I www.westos.org

  • MISS
    这里写图片描述

  • HIT
    这里写图片描述

通过varnishadm手动清楚缓存

  • varnishadm ban.url .*$
    清除所有缓存

  • varnishadm ban.url /index.html
    清除index.html页面缓存

  • varnishadm ban.url /admin/$
    清除admin缓存

定义多个不同域名站点的后端服务器

vim /etc/varnish/default.vcl

backend web1 {
  .host = "172.25.36.2";    ##后端为172.25.36.2
  .port = "80";             ##访问端口80

backend web2 {
  .host = "172.25.36.3";
  .port = "80";
}

sub vcl_recv{
if (req.http.host ~ "^(www.)?westos.org"){      ##访问(www.)westos.org时通过web1进行访问
set req.http.host = "www.westos.org";
set req.backend = web1;
} elsif (req.http.host ~ "^bbs.westos.org") {   ##访问bbs.westos.org时通过web2进行访问
set req.backend = web2;
} else { error 404 "westos cache";
}
}
当访问www.westos.org域名时从web1上取数据,访问bbs.westos.org域名时从web2上取数据,访问其他页面报错。

测试:
提前在真机上添加解析

  • curl -I www.westos.org
    这里写图片描述
    curl -I bbs.westos.org
    这里写图片描述
    curl -I 172.25.36.1
    这里写图片描述

负载均衡

server1:

director lb round-robin {       ##将多个后端聚合为一个组lb进行轮询
    { .backend = web1; }
    { .backend = web2; }
}

vim /etc/varnish/default.vcl
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = lb;       ##当访问www.westos.org时访问lb组
return (pass);              ##为了测试方便,不进行缓存
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else { error 404 "westos cache";
}
}

server2:

mkdir /www/bbs -p
mkdir /www/westos

cd /www/bbs/
vim index.html
1 bbs.westos.org

cd /www/westos/
vim index.html
1 westos.org
vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName server2
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www/bbs
    ServerName bbs.westos.org
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www/westos
    ServerName www.westos.org

990 NameVirtualHost *:80        ##开启虚拟主机80端口

/etc/init.d/httpd restart       ##重启服务

在server2上添加www.westos.org bbs.westos.org的解析以便访问

测试:
172.25.36.2 轮询
这里写图片描述
这里写图片描述

varnish CDN 推送

安装php支持

(yum install unzip -y)

unzip bansys.zip -d /var/www/html/
cd /var/www/html/bansys/
mv * ..
rm -fr bansys/

yum install php
/etc/init.d/httpd start 
修改httpd为8080端口
vim /var/www/html/config.php
##定义主机列表
$var_group1 = array(
                        'host' => array('172.25.36.1',),
                                                'port' => '80',                  
                    );

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

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

#如果是 http 模式需要对 varnish 做以下设置:
vim /etc/varnish/default.vcl
acl westos {            ##设置访问控制
"127.0.0.1";
"172.25.36.0"/24;
}

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

将default.vcl中return (pass)注释,保留缓存

测试:

  • www.westos.org/index.html
    这里写图片描述
  • 172.25.36.1:8080
  • 推送内容:index.html
    这里写图片描述
  • 推送成功会刷新页面轮询
    这里写图片描述
  • www.westos.org/index.html
    这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值