Linux运维进阶-文档总结-Varnish的各项操作
2017-07-20 21:50
645 查看
以下所有操作都是在Red-hat 6.5上
挪威的最大的在线报纸 Verdens Gang(vg.no) 使用 3 台 Varnish 代替了原来的 12 台 Squid,性能比以前更好,这是 Varnish 最成功的应用案例。
unzip bansys.zip -d /var/www/html/ #解压包
cd /var/www/html/bansys/ mv * ..(将/bansys下的文件移动到/var/www/html下,在网页中可以显示出来!)
1.简单介绍Varnish
Varnish 是一款高性能且开源的反向代理服务器和 HTTP 加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的 squid 相比,varnish 具有性能更高、速度更快、管理更加方便等诸多优点,很多大型的网站都开始尝试使用 varnish 来替换 squid,这些都促进 varnish 迅速发展起来。
varnish流程图:
挪威的最大的在线报纸 Verdens Gang(vg.no) 使用 3 台 Varnish 代替了原来的 12 台 Squid,性能比以前更好,这是 Varnish 最成功的应用案例。
2.安装varnish
varnish的安装不是直接在yum仓库里安装,而是将rpm包从官网下载下来,在安装包的目录下,执行yum install * 就可以进行安装了。
Varnish的rpm包:
varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
3.反向代理
vim /etc/sysconfig/varnish #进入此文件里,进行实验环境的配置
66 VARNISH_LISTEN_PORT=80 改为80端口,varnish直接去监听80端口
vim /etc/varnish/default.vcl
7 backend default {
8 .host = “172.25.77.2”; #反向代理去取数据的地方
9 .port = “80”;
10 }
/etc/init.d/varnish reload #重载varnish服务
提示:到172.25.77.2上开启httpd服务,并且在/var/www/html目录下,创建index.html(如果不改变配置文件的名称,必须要用index.html)
4.查看缓存命中情况(缓存120秒清除一次,在这120秒内,显示是击中的)
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); }
5.手动清楚缓存
varnishadm ban.url .*$ #清除所有 varnishadm ban.url /index.html #清除 index.html 页面缓存 varnishadm ban.url /admin/$ #清除 admin 目录缓存
6.定义多个不同域名站点的后端服务器
vim /etc/varnish/default.vcl 7 backend web1 { 8 .host = "172.25.77.2"; 9 .port = "80"; 10 } 11 12 backend web2 { 13 .host = "172.25.77.3"; 14 .port = "80"; 15 }
访问www.westos.org域名,到web1,访问bbs.westos.org到web2
17 sub vcl_recv { 18 if (req.http.host ~ "^(www.)?westos.org") { 19 set req.http.host = "www.westos.org"; 20 set req.backend = web1; 21 } elsif (req.http.host ~ "^bbs.westos.org") { 22 set req.backend = web2; 23 } else {error 404 "westos cache"; 24 } 25 }
提示:在物理机上测试的时候,记得要在物理机上添加解析,vim /etc/hosts
7.负载均衡
17 director lb round-robin { #将多个后端聚合成一个名为lb的组,轮叫模式) 18 19 {.backend = web1;} 20 {.backend = web2;} 21 } 22 23 sub vcl_recv { 24 if (req.http.host ~ "^(www.)?westos.org") { 25 set req.http.host = "www.westos.org"; 26 set req.backend = lb; return(pass) #pass将当前请求直接转发到后端服务器。pass通常只处理静态页面。varnish也只缓存静态数据。 27 } elsif (req.http.host ~ "^bbs.westos.org") { 28 set req.backend = web1; 29 } else {error 404 "westos cache"; 30 } 31 } 结果:输入www.westos.org的时候,会到多个聚合里面去找,web1是server2里面做的虚拟主机,web2是server3. 输入bbs.westos.org的时候,直接找虚拟主机中的bbs
虚拟主机的设置: 进入vim /etc/htttpd/conf/httpd.conf
NameVirtualHost *:80 #打开虚拟主机接口 <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 </VirtualHost>
必须创建自己要求的发布目录:
vim /www/bbs/index.html
vim /www/westos/index.html
7.Varnish cdn 推送平台
做这个实验的时候,要把那个return(pass)注释掉,方便观察实验效果!
yum install php -y #安装php语言环境(因为这个cdn平台是用PHP写的,要安装php环境)
安装http服务,修改http使用端口。
vim /etc/httpd/conf/httpd.conf
136 Listen 8080 (136行)
下载CDN推送平台的压缩包,将其解压到http的默认发布目录下,/var/www/htmlunzip bansys.zip -d /var/www/html/ #解压包
cd /var/www/html/bansys/ mv * ..(将/bansys下的文件移动到/var/www/html下,在网页中可以显示出来!)
vim /var/www/html/config.php 9 //可定义多个主机列表 10 $var_group1 = array( 11 'host' => array('172.25.77.1',), 12 'port' => '80', 13 ); //对主机列表进行绑定 17 $VAR_CLUSTER = array( 18 'www.westos.org' => $var_group1, 19 ); 22 //varnish版本 23 //2.x和3.x推送命令不一样 24 $VAR_VERSION = "3";
感受:在用完varnish之后,感觉和squid形式差不多,相对于squid效率确实高,但是不可否认,varnish也是存在缺点的。
优点:(1)Varnish访问速度更快,Varnish采用了“Visual Page Cache”技术,所有缓存数据都直接从内存读取,而squid是从硬盘读取,因而Varnish在访问速度方面会更快。
(2)Varnish可以支持更多的并发连接,因为Varnish的TCP连接释放要比Squid快。因而在高并发连接情况下可以支持更多TCP连接。
(3)Varnish可以通过管理端口,使用正则表达式批量的清除部分缓存,而Squid是做不到的。
(4) squid属于是单进程使用单核CPU,但Varnish是通过fork形式打开多进程来做处理,所以是合理的使用所有核来处理相应的请求
缺点:(1)varnish进程一旦Hang、Crash或者重启,缓存数据都会从内存中完全释放,此时所有请求都会发送到后端服务器,在高并发情况下,会给后端服务器造成很大压力。
(2) 在varnish使用中如果单个url的请求通过HA/F5(负载均衡)每次请求不同的varnish服务器中,被请求varnish服务器都会被穿透到后端,而且同样的请求会在多台服务器上缓存,也会造成varnish的缓存的资源浪费,也会造成性能下降。
相关文章推荐
- Linux运维进阶-文档总结-Nginx各项操作
- Linux运维笔记-文档总结-mariadb数据库的各项操作(全)
- Linux运维进阶-文档总结-高可用集群之heartbeat和lvs
- Linux运维进阶-文档总结-LNMP架构之Mysql的安装和配置
- Linux运维进阶-文档总结-红帽企业版 集群(热备)套件
- Linux运维笔记-文档总结-用户操作与权力下放
- Linux运维进阶-文档总结-添加PHP的memcache缓存模块
- Linux运维笔记-文档总结-FTP介绍,安装,以及匿名用户和本地用户的操作
- Linux运维进阶-文档总结-LNMP架构之PHP的安装和测试和简单论坛搭建
- Linux运维进阶-文档总结-Tomcat的安装与应用
- Linux运维进阶-文档总结-MySQL的异步主从复制
- Linux运维笔记-文档总结-系统恢复技术之grub 文件错误修复
- Linux运维笔记-文档总结-grep用法和cut用法
- Linux运维笔记-文档总结-cifs网络文件系统访问
- Linux运维笔记-文档总结-永久更改文件SELINUX安全上下文和管理SELINUX布尔值
- 文档总结:linux中的用户操作与权力下放
- Linux运维笔记-文档总结-RAID磁盘阵列和磁盘配额总结与实现
- Linux运维笔记-文档总结-自动安装 RED HAT ENTERPRISE LINUX
- Linux运维笔记-文档总结-ldap网络帐号
- Linux运维笔记-文档总结- selinux对文件的控制