varnish的配置
来源:互联网 发布:js中closure是什么意思 编辑:程序博客网 时间:2024/06/05 14:08
varnish:
varnish 有一个概念叫做“后端服务器”或者叫“原点服务器”,一个后端服务器将提供 varnish 加速的内容。
一.定义后端服务器:
1.定义一个后端服务:
server1:
下载并安装varnish-libs-3.0.5-1.el6.x86_64.rpm和varnish-3.0.5-1.el6.x86_64.rpm
修改配置文件/etc/sysconfig/varnish中的端口改为80
VARNISH_LISTEN_PORT=80
修改/etc/varnish/default.vcl
:host=172.25.254.2
server2:(后端服务器) yum install httpd -ycd /var/www/htmlvim index.html <h1>server</h1>访问测试:配置完成之后出现了503的报错,在这里是因为没有开启httpd服务**出现503-Service Unavailable的原因:服务当前不可用,可能是没有开启服务或是超载,或者是反向代理服务器后面没有可以提供服务的节点
开启server2的httpd后,得到正确测试结果
2.定义多个后端服务器:
server1: vim /etc/varnish/default.vcl 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"; } }
server2: cd /var/www/html vim index.html <h1>server2</h2> /etc/init.d/httpd start
server3: cd /var/www/html vim index.html hello-server3!! /etc/init.d/httpd start 在测试之前记得加入wwww.westos.org和bbs.westos.org地址解析
访问测试:测试时输入了172.25.254.1出现404报错![这里写图片描述](http://img.blog.csdn.net/20170724032923978?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFfamlhX21pbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)**出现404-NotFound报错:服务器找不到客户请求的指定页面,可能是客户端请求了服务器上不存在的资源所致重新测试应该输入www.westos.org或bbs.westos.org
当客户端给varnish发送请求之后,它主要有以下动作:pass: 当一个请求被 pass 后,这个请求将通过 varnish 转发到后端服务器, 但是它不会被缓存。pass 可以放在 vcl_recv 和 vcl_fetch 中。lookup: 当一个请求在 vcl_recv 中被 lookup 后,varnish 将从缓存中提取数 据,如果缓存中没有数据,将被设置为 pass,不能在 vcl_fetch 中设置 lookup。pipe: pipe 和 pass 相似,都要访问后端服务器,不过当进入 pipe 模式后,在 此连接未关闭前,后续的所有请求都发到后端服务器
二.缓存命中:
查看缓存命中情况(缓存的默认清除时间时120秒,在120秒内,会击中缓存):
vim /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); }
测试缓存命中情况:
##通过 varnishadm 手动清除缓存
varnishadm ban.url .*$ #清除所有
varnishadm ban.url /index.html #清除 index.html 页面缓存
varnishadm ban.url /admin/& #清除 admin 目录缓存
测试:curl -I www.westos.org
三.负载均衡:
1.round-robin(轮询) ##当一个后端服务器出现问题时,varnish能够指导所有的请求到健康的后端
vim /etc/varnish/default.vcl
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.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"; } }
访问测试:
**配置文件都修改过之后,输入网址之后出现:
curl: (7) Failed connect to bbs.westos.org:80; Connection refused
出现此错误的原因是端口出现错误,先用netstat -anltlp命令检查80端口是否开启,再检查varnish的配置文件里端口是否更改为80。如果检查配置都正确可以清理下网页缓存,在进行测试。
2.利用虚拟主机实现轮询server1;
server1; backend web1 { .host = "172.25.16.2"; .port = "80"; } backend web2 { .host = "172.25.16.3"; .port = "80"; } 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; } elsif (req.http.host ~ "^bbs.westos.org") { set req.backend = web2; } else {error 404 "westos cache"; } }
server2: <VirtualHost *:80> DocumentRoot /var/www/html ServerName server2 </VirtualHost> <VirtualHost *:80> DocumentRoot /www/westos ServerName www.westos.org </VirtualHost>
**要在测试的主机写解析/etc/hosts
测试:curl www.westos.org/index.html
四.varnish cdn推送平台
yum install unzip php -y
##安装unzip是为了解压cdn推送平台的压缩包,因为cdn平台是用php语言写的,所以要安装php环境
unzip bansys.zip -d /var/www/html
##将cdn推送平台的压缩包解压到http的默认发布目录中去
cd /var/www/html/
ls
cd bansys/
mv * ..
rm -fr bansys/
vim /etc/httpd/conf/httpd.conf
##要修改http端口避免和设置的varnish80端口冲突,将http端口设为8080
第136行 Listen 8080
/etc/init.d/httpd start
/etc/init.d/varnish start
netstat -anltlp
##查看端口的使用情况
vim config.php
//varnish主机列表 //可定义多个主机列表 $var_group1 = array( 'host' => array('172.25.254.1',), 'port' => '80', ); //varnish群组定义 //对主机列表进行绑定 $VAR_CLUSTER = array( 'www.westos.org' => $var_group1, ); //varnish版本 //2.x和3.x推送命令不一样 $VAR_VERSION = "3";
vim /etc/varnish/default.vcl
acl westos { "127.0.0.1"; "172.25.16.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"; } }
- 关于varnish的配置
- varnish的基本配置
- Varnish的基础配置
- varnish的配置
- varnish的安装配置1
- Varnish服务器的安装配置
- Varnish的安装与配置
- Varnish+Nginx 配置----Varnish
- varnish配置
- Varnish配置
- varnish 配置
- 将Varnish配置为Centos的服务
- varnish 503 的配置(需改进)
- 10024---varnish不重启使配置生效的方法
- Varnish服务器的安装配置与优化
- varnish的安装与简单配置
- varnish cache 配置使用
- varnish cache 配置使用
- LeetCode 88. Merge Sorted Array
- C#Lab(二):托管类型和非托管类型以及获取字节大小
- 用两个栈实现队列
- 求二叉树的高度/销毁一颗二叉树【递归思想】
- Python编程_Lesson016_类的高级特性_错误处理
- varnish的配置
- LeetCode 89. Gray Code
- PAT(Basic Level)_1016_部分A+B
- PAT(Basic Level)_1017_A除以B
- PAT(Basic Level)_1018_锤子剪刀布
- 暑假留校第一周总结
- PAT(Basic Level)_1019_数字黑洞
- PAT(Basic Level)_1020_月饼
- PAT(Basic Level)_1021_个位数统计