企业部分之Varnish

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了企业部分之Varnish相关的知识,希望对你有一定的参考价值。

Varnish 是一个 web 加速器,被安装在 web 应用程序前面,缓存 web 应用程序,并响应

用户请求,varnish 让您的 web 应用程序运行的更快,并且 varnish 灵活好用。

 

1.varnish安装

需要软件包:varnish-libs-3.0.5-1.el6.x86_64.rpm varnish-3.0.5-1.el6.x86_64.rpm

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

 

vim /etc/sysconfig/varnish

66VARNISH_LISTEN_PORT改为80

66 VARNISH_LISTEN_PORT=80

 

 

vim /etc/varnish/default.vcl

backend default {

  .host = "127.0.0.1";

  .port = "8080";

}

port值改为8080

 

vim /etc/httpd/conf/httpd.conf

136Listen值改为8080

Listen 8080

 

/etc/init.d/httpd start

/etc/init.d/varnish start

 

netstat -antlpe

技术分享

测试:

echo server1.example.com > /var/www/html/index.html

http://172.25.45.1

显示server1.example.com

vim /var/www/html/index.html ##修改iindex.html的内容,刷新网页后,网页内容更新

 

curl -I 172.25.45.1

技术分享

curl -I 172.25.45.1/index.html

技术分享

curl -dump 172.25.45.1

技术分享

 

????测试:

可以更改/etc/sysconfig/varnish文件更新时间的设定

94 # # Default TTL used when the backend does not specify one

95 VARNISH_TTL=5

 

/etc/init.d/varnish restart

 

echo test....> /var/www/html/index.html

5秒后刷新页面则内容更改

 

可用curl -I localhost 查看时间

curl -I localhost/index.html

curl -dump localhost/index.html##显示内容

 

##查看缓存命中情况

vim /etc/varnish/default.vcl

backend default下添加以下内容:

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 reload

 

测试:

curl -I 172.25.45.1/index.html

技术分享

技术分享

会多出一行X-Cache,显示缓存命中情况

 

通过curl 172.25.45.1/index.htmlcurl 172.25.45.1查看缓存,然后修改iindex.html的内容,curl不更新,可以通过varnishadm ban.url .*$清除所有缓存

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

 

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

vim /etc/varnish/default.vcl

backend default下添加以下内容:

backend server2 {

  .host = "172.25.45.2";

  .port = "80";

}

 技术分享

sub vcl_recv {

if (req.http.host ~ "^(www.)?westos.org") {

set req.http.host = "www.westos.org";

set req.backend = default;

} elsif (req.http.host ~ "^bbs.westos.org") {

set req.backend = server2;

} else {error 404 "westos cache";

}

}

技术分享

 

echo server1-www.westos.org > /var/www/html/index.html##server1虚拟机

echo server2-bbs.westos.org > /var/www/html/index.html##server2虚拟机

 

/etc/init.d/varnish reload

 

在物理机中修改/etc/hosts文件

vim /etc/hosts

技术分享

http://172.25.45.1/

技术分享

http://www.westos.org/

技术分享

http://bbs.westos.org/

技术分享

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

 

vim /etc/varnish/default.vcl

backend server2下添加以下内容:

director westoslb round-robin {

{.backend = default;}

{.backend = server2;}

}

sub vcl_recv中第一个req.backend值改为westoslb

技术分享

 

server2

vim /etc/httpd/conf/httpd.conf

990NameVirtualHost *:80 的注释取消

并在最后添加以下内容:

<VirtualHost *:80>

    DocumentRoot /var/www/html

    ServerName www.westos.org

   serveralias westos.org

</VirtualHost>

<VirtualHost *:80>

    DocumentRoot /bbs

    ServerName bbs.westos.org

</VirtualHost>

 

mkdir /bbs

echo bbs.westos.org > /bbs/index.html

echo server2-www.westos.org > /var/www/html/index.html

/etc/init.d/httpd restart

 

 

server1

/etc/init.d/varnish reload

 

 

http://bbs.westos.org/

显示bbs.westos.org

http://www.westos.org/

一开始显示server1-www.westos.org,过一会儿显示server2-www.westos.org

 

set req.backend = westoslb;下添加以下内容:

return (pass);

技术分享

/etc/init.d/varnish reload

 

测试:

http://www.westos.org/

不断刷新,页面在server1-www.westos.orgserver2-www.westos.org中切换

 

/etc/init.d/httpd stop

页面将停在server2-www.westos.org,而不会切换

 

 

bansys

所需软件包:bansys.zip

yum install -y unzip

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

yum install -y php

cd /var/www/html/bansys/

mv * ..

cd ..

rm -rf bansys

 

vim config.php

将数据库信息10-22行注释掉技术分享

$var_group1‘host‘ => array的值改为当前虚拟机IP,端口改为6082;并将$var_group3注释掉

技术分享

$VAR_CLUSTER的内容改为‘www.westos.org‘ => $var_group1,多余部分删掉

技术分享

 

/etc/init.d/httpd restart

 

测试:

http://172.25.45.1:8080/index.php

技术分享

 

vim /etc/varnish/default.vcl

sub vcl_recv下面添加以下内容:

if (req.request == "BAN") {

if (!client.ip ~ westos) {

error 405 "Not allowed.";

}

ban("req.url ~ " + req.url);

error 200 "ban added";

}

技术分享

在最上面添加以下内容:

acl westos {

"127.0.0.1";

"172.25.45.0"/24;

}

技术分享

 

并将return (pass);注释掉

/etc/init.d/varnish reload

 

测试:

http://www.westos.org/index.html

显示server1-www.westos.org,且刷新时不能切换

http://172.25.45.1:8080/index.php

选择HTTP,在推送内容中输入/index.html,并提交

打开http://www.westos.org/index.html,刷新后页面变为server2-www.westos.org

重复上述步骤,页面会切换成server1-www.westos.org 

技术分享


技术分享

以上是关于企业部分之Varnish的主要内容,如果未能解决你的问题,请参考以下文章

varnish-原理

varnish缓存代理

Varnish缓存代理简介与配置

varnish 4.0 缓存代理配置

Varnish4.0缓存代理配置

varnish4.0缓存代理配置