配置varnish服务

来源:互联网 发布:什么软件测八卦 编辑:程序博客网 时间:2024/06/05 03:36

#####varnish######


CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。squid :磁盘,并联,性能最差 varnish :内存,单点,url哈希,易失性,缓存命中率最高,性能最好 nginx :第三方模块,插件.

处理过程大致分为如下几个步骤:
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进
入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。

1.操作环境:

rhel6 selinux and iptables disabled

一台物理机,三台redhat6.5server1 2 3

2.操作过程:

   1.后端服务器的配置:物理主机访问server1,事实是访问server2

   Server1

 ###安装varnish软件包

   yum install varnish-3.0.5-1.el6.x86_64.rpm  varnish-libs-3.0.5-1.el6.x86_64.rpm -y  

 ###配置一个后端服务器:

  cd /etc/varnish/

  ls

   vim default.vcl    

  7 backend web1 {

  8   .host = "172.25.21.2";

  9   .port = "80";

 10 }

  ##配置 varnish 服务端口:

  vim/etc/sysconfig/varnish

 

 66 VARNISH_LISTEN_PORT=80

 

  /etc/init.d/varnish start   ###开启varnish服务

   netstat -antlp  ####查看有没有80端口

 

 Server2:

   安装httpd,在共享目录下建立共享文件建立

    yum install httpd -y

   /etc/init.d/httpd  start

   cd /var/www/html

    ls

    vim index.html   

    cat index.html


 

测试:物理机

[root@foundation20 ~]# vim /etc/hosts   ###本地解析

172.25.20.1 server1 www.westos.com

[root@foundation20 ~]# curl www.westos.org

<h1>server 2</h1>

 浏览器输入:172.25.20.1


2.缓存配置:

Server1##查看缓存命中情况

[root@server1 varnish]# vim default.vcl

 12 sub vcl_deliver {

 13 if (obj.hits > 0) {

 14         set resp.http.X-Cache = "HIT from westos cache";

 15 }

 16 else {

 17 set resp.http.X-Cache = "MISS from westos cache";

 18 }

 19 return (deliver);

 20 }

 

[root@server1 varnish]# /etc/init.d/varnish reload


物理机:

###测试缓存命中:

[root@foundation20 ~]# curl -I 172.25.20.1

HTTP/1.1 200 OK

Server: Apache/2.2.15 (Red Hat)

Last-Modified: Thu, 20 Jul 2017 02:43:21 GMT

ETag: "40026-12-554b6b639ddea"

Content-Type: text/html; charset=UTF-8

Content-Length: 18

Accept-Ranges: bytes

Date: Thu, 20 Jul 2017 03:06:35 GMT

X-Varnish: 1716317952

Age: 0

Via: 1.1 varnish

Connection: keep-alive

X-Cache: MISS from westos cache  #未命中

 

[root@foundation20 ~]# curl -I 172.25.20.1

HTTP/1.1 200 OK

Server: Apache/2.2.15 (Red Hat)

Last-Modified: Thu, 20 Jul 2017 02:43:21 GMT

ETag: "40026-12-554b6b639ddea"

Content-Type: text/html; charset=UTF-8

Content-Length: 18

Accept-Ranges: bytes

Date: Thu, 20 Jul 2017 03:08:04 GMT

X-Varnish: 1716317953 1716317952

Age: 89

Via: 1.1 varnish

Connection: keep-alive

X-Cache: HIT from westos cache #命中

 

### 通过 varnishadm 手动清除缓存:

 

 [root@server1 varnish]#varnishadm ban.url .*$

#清除所有

 [root@server1 varnish]#varnishadm ban.url /index.html

#清除 index.html 页面缓存

[root@server1 varnish]# varnishadm ban.url /admin/$

#清除 admin 目录缓存

 

3.定义多个不同域名站点的后端服务器

Server1

1###定义多个不同域名站点的后端服务器

[root@server1 varnish]# vim default.vcl

backend web1 {

.host = "172.25.20.2";

.port = "80";

}

backend web2 {

.host = "172.25.20.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";

}

}


[root@server1 varnish]# /etc/init.d/varnish reload

Loading vcl from /etc/varnish/default.vcl

Current running config name is reload_2017-07-20T11:05:50

Using new config name reload_2017-07-20T11:31:05

VCL compiled.

 

available       0 boot

available       2 reload_2017-07-20T11:05:50

active          0 reload_2017-07-20T11:31:05

Done

server3:

   10   yum install httpd -y

   11   /etc/init.d/httpd  start

   12   cd /var/www/html

   13  ls

   14  vim index.html 

   15  cat index.html 

 

物理机:

[root@foundation21 ~]# vim /etc/hosts   ###本地解析



[root@foundation21 ~]# curl www.westos.org

<h1>server 2</h1>

[root@foundation21 ~]# curl bbs.westos.org

<h1>server 3</h1>

 也可用浏览器输入域名测试

 

4.负载均衡

 Server2:

 [root@server2 html]# mkdir /www/bbs -p

[root@server2 html]# mkdir /www/westos

[root@server2 html]# cd /www/bbs/

[root@server2 bbs]# ls

[root@server2 bbs]# vim /etc/httpd/conf/httpd.conf


[root@server2 bbs]# /etc/init.d/httpd restart

[root@server2 bbs]# vim /etc/hosts


 [root@server2 bbs]# vim index.html

<h1>bbs.westos.org</h1>

[root@server2 bbs]# cd /www/westos/

[root@server2 westos]# ls

[root@server2 westos]# vim index.html

<h1>server2-www.westos.org</h1>

 server1:(varnish主机)

[root@server1 varnish]# vim default.vcl


[root@server1 varnish]# /etc/init.d/varnish reload


server3:

vim /var/www/html/index.html

<h1>server3-www.westos.org</h1>

测试:物理机

varnishadm ban.url /
curl www.westos.org
curl bbs.westos.org
不加pass时:需要清除缓存才能跳到另一个页面(页面缓存时间是120s)

加pass



5.varnish cdn 推送平台

(1)varnish端(server1):
yum install php -y ##下载php
yum install httpd unzip  -y

vim /etc/httpd/conf/httpd.conf ##编辑apache配置文件

Listen 8080  ##80端口已经被varnish占用

unzip bansys.zip -d /var/www/html/
mv /var/www/html/bansys/* /var/www/html

rm -fr /var/www/html/bansys/


vim /var/www/html/config.php ##编辑推送平台配置



/etc/init.d/httpd start

vim /etc/varnish/default.vcl ##编辑配置文件

/etc/init.d/varnish reload


(2)测试:
浏览器访问 www.westos.org/index.html
浏览器访问 172.25.60.1:8080




原创粉丝点击