cdn_varnish
2018-01-20 22:21
99 查看
下载安装
安装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,就可以显示
就可以推送了
相关文章推荐
- 自建CDN技术选型: squid varnish nginx
- 如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN
- CentOS使用varnish自建cdn加速服务器
- varnish加速器的原理和配置,varnish实现的负载均衡,cdn推送平台搭建
- Linux---CDN高速缓存器 Varnish
- varnish with cdn
- 如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN
- 自建CDN技术选型: squid varnish nginx
- 搭建cdn的高性能HTTP加速器Varnish服务器
- varnish---反向代理web加速缓存服务器和CDN的推送 推荐
- 近期推出LVS+HAProxy+Squid/Varnish的CDN架构!
- 如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN
- 如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN
- 如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN
- 自建CDN技术选型: squid varnish nginx
- CDN调度器HAProxy、Nginx、Varnish
- 自建CDN技术选型: squid varnish nginx
- Varnish -- CDN推送管理平台
- 如何用DNS+GeoIP+Nginx+Varnish做世界级的CDN
- CDN实现方案如何选择: squid Varnish Nginx