您的位置:首页 > 运维架构 > Linux

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

2017-07-20 21:50 645 查看
以下所有操作都是在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的缓存的资源浪费,也会造成性能下降。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  运维 varnish