varnish-高性能http加速器--cdn推送平台
varnish是一款高性能的开源HTTP加速器,挪威最大在线报纸Verdens Gang使用3台Varnish代替原来的12台Squid,性能比以前更好,我们就可以知道varnish的优越性
准备工作:
打开三个虚拟机:ip为 server1 172.25.254.1 ~ server3 172.25.254.3
主机ip 172.25.254.61
我们要配置一个cdn加速,就是一个缓存,服务器的信息在server2上,server1通过varnish进行缓存,得到server2的信息,之后每次客户端访问只需调用本地缓存无需每次到服务器端取值,加快客户浏览网络的等待时间,这个是由时效的一般120秒如果不访问cdn失效,下次访问时在访问服务器。
1.0 server2
打开server2 安装httpd 开启httpd 进入主目录 写入 server2
1.1 server1
[root@server1 pub]# ls
varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
[root@server1 pub]# yum install *
2.server1
vim /etc/varnish/default.vcl 配置一个后端服务器
backend web1 {.host = "172.25.254.2";.port = "80";
}
查看缓存命中情况,命中HIT from westos cache 没有命中MISS from 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);
}
vim /etc/sysconfig/varnish 配置 varnish 服务端口
VARNISH_LISTEN_PORT=80
重启服务:
/etc/init.d/varnish start
测试:主机的浏览器中访问:172.25.254.1
curl -I Show document info only 显示文件的主要信息
[root@foundation61 ~]# curl -I 172.25.254.1
HTTP/1.1 200 OK 用http1.1版本
Server: Apache/2.2.15 (Red Hat) apache服务器
Last-Modified: Sun, 23 Sep 2018 13:39:48 GMT 版本最后修改时间
ETag: "7fb8f-11-5768a01a22810"
Content-Type: text/html; charset=UTF-8 类型编码
Content-Length: 17 长度
Accept-Ranges: bytes
Date: Sun, 23 Sep 2018 14:00:16 GMT
X-Varnish: 697389679
Age: 0
Via: 1.1 varnish
Connection: keep-alive
如果给 vim /etc/varnish/default.vcl 加入如下代码,这个是用来检测如果缓存server1没有MISS,之后的访问就会直接访问缓存HIT命中:
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);
}
第一次是miss,之后是hit
通过 varnishadm 手动清除缓存
varnishadm ban.url .*$
清除所有
varnishadm ban.url /index.html
清除 index.html 页面缓存
varnishadm ban.url /admin/$
清除 admin 目录缓存
定义多个不同域名站点的后端服务器
vim /etc/varnish/default.vcl curl ct1
写入后端服务器的ip,端口,vcl_recv当访问 www.westos.org 域名时从 web1 上取数据,访问 bbs.westos.org 域名时到 web2 取数据,访问其他页面报错
backend web1 {.host = "172.25.254.2";.port = "80";
}
backend web2 {.host = "172.25.254.3";.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = web1;
} 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);
}
/etc/init.d/varnish reload
实验结果测试:
backend web1 {
.host = "172.25.254.1";
.port = "80";
.probe = healthcheck;
}
backend web2 {
.host = "172.25.254.2";
.port = "80";
.probe = healthcheck;
}
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
测试:
[root@foundation61 ~]# curl www.westos.org
www.westos.org-server3
[root@foundation61 ~]# curl www.westos.org
www.westos.org-server2
varnish cdn 推送平台
需要安装 php 支持
# unzip bansys.zip -d /var/www/html
[root@server1 html]# vim /var/www/html/config.php
只保留如下设置,其余删掉
array('172.25.254.1'),'port' => '80', );//varnish群组定义//对主机列表进行绑定$VAR_CLUSTER = array('www.westos.org' => $var_group1,);//varnish版本//2.x和3.x推送命令不一样$VAR_VERSION = "3";
?>
如果是 http 模式需要对 varnish 做以下设置
vi /etc/varnish/default.vcl
acl westos {
"127.0.0.1";
"172.25.254.1"/24;
}
backend web1 {.host = "172.25.254.2";.port = "80";
}
backend web2 {.host = "172.25.254.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);
}
/etc/init.d/varniah reload
[root@server3 /]#vim /etc/httpd/conf/httpd.conf
DocumentRoot /var/www/htmlServerName bbs.westos.org
DocumentRoot /wwwServerName www.westos.org
测试:
问题:在浏览器中输入地址出现的是apache的主页,原因可能是没有安装php,或者/var/www/html/主目录下没有bansy解压所之后的文件。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
