Varnish CDN加速實現

2021-09-25 12:32:49 字數 3860 閱讀 3902

處理過程大致分為如下幾個步驟:

(1)receive 狀態,也就是請求處理的入口狀態,根據 vcl 規則判斷該請求應該是 pass 或

pipe,或者進入 lookup(本地查詢)。

(2)lookup 狀態,進入此狀態後,會在 hash 表中查詢資料,若找到,則進入 hit 狀態,否則進

入 miss 狀態。

(3)pass 狀態,在此狀態下,會進入後端請求,即進入 fetch 狀態。

(4)fetch 狀態,在 fetch 狀態下,對請求進行後端的獲取,傳送請求,獲得資料,並進行本地

的儲存。

(5)deliver 狀態, 將獲取到的資料傳送給客戶端,然後完成本次請求。

主機環境:rhel6

實驗環境:

主機名ip

服務server1

172.25.60.1

varnish

server2

172.25.60.2

apache

server3

172.25.60.3

apache

1. 安裝varnish和varnish-lib

[root@server1 ~]# ls

anaconda-ks.cfg varnish-3.0.5-1.el6.x86_64.rpm

install.log varnish-libs-3.0.5-1.el6.x86_64.rpm

install.log.syslog

[root@server1 ~]# yum install varnish-* -y

安裝完成後,生成varnish使用者,對varnish的訪問控制實際上是對varnish使用者的訪問控制實現的

2. 檢視配置檔案

[root@server1 sysconfig]# rpm -qc varnish

/etc/logrotate.d/varnish

/etc/sysconfig/varnish      ##引數配置檔案

/etc/varnish/default.vcl      ##主配置檔案

3. 檢視系統的的最大檔案數,要使其大於引數配置檔案中的數

[root@server1 mnt]# sysctl -a |grep file

fs.file-nr = 480    0    188466    ##目前系統時用的檔案控制代碼數量

fs.file-max = 188466   ##指定了系統範圍內可以開啟的檔案控制代碼的最大數量

4. 編輯vim /etc/sysconfig/varnish 引數配置檔案

8 nfiles=131072

12 memlock=82000

15 nprocs="unlimited"

66 varnish_listen_port=80

引數配置解釋:

nfiles=131072    varnish所能夠開啟檔案的最大個數

memlock=82000  用多大的記憶體空間儲存日誌資訊

nprocs="unlimited"  單個使用者執行的執行緒數   

varnish_listen_port=80   varnish能支援的埠 ##埠80

5. 編輯vim /etc/security/limits.conf檔案

作用:因為varnish這個程式執行在varnish這個使用者的私有空間內,核心對普通使用者的最大檔案數有限制,這樣做是為了解除linux系統的最大程序數和最大檔案開啟數的限制

varnish           -       nofile         131072

varnish - memlock 82000

varnish - nproc unlimited

6. 編輯vim /etc/varnish/default.vcl vcl的主配置檔案,配置後端主機backend-default

7 backend default 

16 else

19 return (deliver);

20 }

在客戶端訪問測試:

清除varnish伺服器上的快取

[root@server1 sysconfig]# varnishadm ban.url .*$   #清除所有快取

[root@server1 sysconfig]# varnishadm ban.url .*$   /indexx.html   #清除頁面快取

[root@server1 sysconfig]# varnishadm ban.url .*$   /admin/$      #清除admin 目錄快取

1. 編輯varnish主配置檔案/etc/varnish/default.vcl,定義多個後端伺服器

7 backend web1 

11 12 backend web2

16 #當訪問以www開頭或者多個www開頭westos.org域的網域名稱時,訪問後端web1

#當訪問以bbs開頭或者多個bbs開頭westos.org域的網域名稱時,訪問後端web2

#其他情況下頁面出錯

在真機上新增網域名稱解析後進行測試:

1. 編輯服務的配置檔案,以輪詢方式實現負載均衡

7 backend web1 

11 12 backend web2

16 17 director lb round-robin

19

20 }

#當訪問www.westos.org時以輪詢的方式實現負載均衡

#當訪問bbs.westos.org時訪問後端web2

測試:在客戶端訪問www.westos.org

CDN加速的實現 varnish

cdn的全稱 content delivery network,即內容分發網路。其基本思路是盡可能避開網際網路上有可能影響資料傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快 更穩定。通過在網路各處放置節點伺服器所構成的在現有的網際網路基礎之上的一層智慧型虛擬網路,cdn系統能夠實時地根據網路流量和各...

css實現硬體加速

就是將瀏覽器的渲染過程交給gpu處理,而不是使用自帶的比較慢的渲染器。這樣就可以使得animation與transition更加順暢。chrome,firefox,safari,ie9 以及最新的 opera都支援硬體加速,只要使用特定的css語句就可以開啟硬體加速 使用3d效果來開啟硬體加速 sp...

Ctypes模組實現python加速執行

一 我們以fibonacci數列的例子來看看,python的執行時間 def fibonacci n if n 2 return 1 else return fibonacci n 1 fibonacci n 2 begin time.time print fibonacci 40 over tim...