Linux运维进阶-文档总结-Varnish的各项操作

以下所有操作都是在Red-hat 6.5上


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/html
unzip 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的缓存的资源浪费,也会造成性能下降。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值