varnish服務

1.安裝varnish

http :// repo . varnish - cache . org / redhat / varnish -3.0/ el 6/ x 86_64/

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

 

2.配置

### 配置一個後端服務器

# vim /etc/varnish/default.vcl

backend default {

  .host = "172.25.7.2";

  .port = "80";

}

wKiom1lyGo2w1XL3AAAoIf2sdnY773.png


 

### 配置 varnish 服務端口

# vim /etc/sysconfig/varnish 

66 VARNISH_LISTEN_PORT=80

 

wKioL1lyGo2x2Lp3AABZ1XuJVe4910.png


### 重啓varnish

# /etc/init.d/varnish start

# service varnish start

 

### 查看緩存命中情況

# 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);

 

# service varnish reload

 

172.25.7.2上:

[root@server2 ~]# cat /var/www/html/index.html 

<h1>server2</h1>

 

wKioL1lyGo3gZ4K8AADY4ElR0Bo474.png

 

###測試緩存命中

[root@foundation7 varnish]# curl  www.westos.org

<h1>server2</h1>

[root@foundation7 varnish]# curl -I 172.25.7.1

HTTP/1.1 200 OK

Server: Apache/2.2.15 (Red Hat)

Last-Modified: Wed, 19 Jul 2017 09:05:44 GMT

ETag: "7fc25-8-554a7efdcc97c"

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

Content-Length: 8

Accept-Ranges: bytes

Date: Thu, 20 Jul 2017 03:29:11 GMT

X-Varnish: 1699361872 1699361871

Age: 35

Via: 1.1 varnish

Connection: keep-alive

X-Cache: HIT from westos cache## 命中

 

wKioL1lyGpDSLT52AAD_TcZHG1A691.png


[root@foundation7 varnish]# curl -I 172.25.7.1

HTTP/1.1 200 OK

Server: Apache/2.2.15 (Red Hat)

Last-Modified: Wed, 19 Jul 2017 09:05:44 GMT

ETag: "7fc25-8-554a7efdcc97c"

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

Content-Length: 8

Accept-Ranges: bytes

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

X-Varnish: 1699361871

Age: 0

Via: 1.1 varnish

Connection: keep-alive

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

 

wKiom1lyGo_zSqleAADznvUoSn8520.png


### 通過 varnishadm 手動清除緩存

 

# varnishadm ban.url .*$            #清除所有

# varnishadm ban.url /index.html    #清除 index.html 頁面緩存

# varnishadm ban.url /admin/$      #清除 admin 目錄緩存

 

 

wKioL1lyGpHjHPkIAAFPhSmpbhM901.png


 

###定義多個不同域名站點的後端服務器

 

 

# vim /etc/varnish/default.vcl 

 12 backend web1 {

 13   .host = "172.25.7.2";

 14   .port = "80";

 15 }

 16 

 17 backend web2 {

 18   .host = "172.25.7.3";

 19   .port = "80";

 20 }

 

 

#當訪問 www.westos.org 域名時從 web1 上取數據,訪問 bbs.westos.org 域名時到 web2 取數據,

訪問其他頁面報錯。

sub vcl_recv {

if (req.http.host ~ "^(www.)?westos.org<h1>server2</h1>

") {

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";

}

}

# service varnish reload

 

 

測試:當訪問 www.westos.org 域名時從 web1 上取數據,訪問 bbs.westos.org 域名時到 web2 取數據,訪問其他頁面報錯

wKiom1lyGpGAyoY0AACp_pMVAlU109.png


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

<h1>server2</h1>

[root@foundation7 ~]# curl  westos.org

<h1>server2</h1>

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

<h1>server3-bbs.wesros.org</h1>

 

 

[root@foundation7 ~]# curl  172.25.7.1 -I

HTTP/1.1 404 westos cache

Server: Varnish

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

Retry-After: 5

Content-Length: 398

Accept-Ranges: bytes

Date: Thu, 20 Jul 2017 06:27:58 GMT

X-Varnish: 1539950550

Age: 0

Via: 1.1 varnish

Connection: close

X-Cache: MISS from westos cache

 

wKiom1lyGpLwSS_4AACRpZl38t8953.png


  ###定義負載均衡

 

1.#定義健康檢查

probe healthcheck {

.url = "/index.html"; # 哪個 url 需要 varnish 請求

.interval = 5s; #檢查的間隔時間

.timeout = 1s; #等待多長時間探針超時

.window = 5; #維持 個 sliding window 的結果

.threshold = 3; #至少有三次 window 是成功的,就宣告 bachend 健康

}

 

2.# vim /etc/httpd/conf/httpd.conf

 136 Listen 8080        監聽8080端口

 

3.# vim /etc/varnish/default.vcl

  9 backend web1 {

 10   .host = "172.25.7.2";

 11   .port = "80";

 12 }

 13 

 14 backend web2 {

 15   .host = "172.25.7.3";

 16   .port = "80";

 17 }


 18 director lb round-robin {#把多個後端聚合爲一個組,並檢測後端健康狀況

 19 {.backend = web1;}

 20 {.backend = web2;}

 21}

 

 22 sub vcl_recv {

 23 if (req.http.host ~ "^(www.)?westos.org") {

 24 set req.http.host = "www.westos.org";

 25 set req.backend = lb;

 26 return (pass);#爲了測試方便,不進行緩存。

 27 } elsif (req.http.host ~ "^bbs.westos.org") {

 28 set req.backend = web2;

 29 } else {error 404 "westos cache";

 30 }

 31 }

# service varnish reload

 

測試:網頁自動刷新用F5

命令: for i in {1..10};do curl  www.westos.org/index.html; done

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

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

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

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

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

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

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

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

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

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

 

wKioL1lyGpKQ1aY0AAGwmN3Gq8c050.png


 

 

###varnish cdn 推送平臺

 

1.安裝php

# yum install unzip -y

# unzip bansys.zip -d /var/www/html/#解壓到指定目錄

yum install php -y

 2.配置服務

# vi /var/www/html/bansys/config.php    #只保留如下設置,其餘註釋掉

 25  //varnish主機列表

 26  //可定義多個主機列表

 27  $var_group1 = array(

 28                         'host' => array('172.25.7.1'),

 29                                                 'port' => '80',                

 30                     );

 31 

 32

 33  //varnish羣組定義

 34  //對主機列表進行綁定

 35  $VAR_CLUSTER = array(

 36                          'www.westos.org' => $var_group1,

 37                      );

 38 

 39 

 40  //varnish版本

 41  //2.x3.x推送命令不一樣

 42  $VAR_VERSION = "3";

 43 

 44 ?>

 

wKioL1lyGpPDebKpAADl7PefZK4449.png


3.#bansys 有兩種工作模式,分別是:telnet 和 http 模式。

#telnet 模式需要關閉 varnish 服務管理端口的驗證,註釋掉/etc/sysconfig/varnish 中的 “ -S $

{VARNISH_SECRET_FILE}”這行,重啓 varnish 服務即可。

 

#如果是 http 模式需要對 varnish 做以下設置:

# vim /etc/varnish/default.vcl

  7 acl westos {

  8 "172.25.7.1";#設置訪問控制

  9 "172.25.7.0"/24;

 10 }

 

 27 sub vcl_recv {

 28 

 29 if (req.request == "BAN") {

 30 if (!client.ip ~ westos) {

 31 error 405 "Not allowed.";

 32 }

 33 ban("req.url ~ " + req.url);

 34 error 200 "ban added";

 35 }

 36 }

# service varnish reload

 

htppd服務端:

[root@server2 westos]# cat /www/westos/index.html 

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

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

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

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

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

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

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

 

[root@server3 ~]# cat /var/www/html/index.html 

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

# service httpd restart

 

測試:當推送時界面輪詢一次

wKiom1lyGpPz3FImAADFCHfGtjA477.png

wKiom1lyGpSh6Sa3AADxvZKyqt8220.png




wKioL1lyGpTxtw4FAABHbB8HTL8673.png

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章