欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          Linux中的varnish服務(wù)解析

          一、varinish簡介

          Varnish是一款高性能的開源HTTP加速器,他的作者Poul-Henning Kamp是FreeBSD的內(nèi)核開發(fā)者之一。挪威最大的在線報(bào)紙 Verdens Gang 使用3臺Varnish代替了原來的12臺Squid,性能比以前更好。

          Varnish與一般服務(wù)器軟件類似,就是一個(gè)web緩存代理服務(wù)器,分為master(management)進(jìn)程和child(worker,主要做cache的工作)進(jìn)程。master進(jìn)程讀入命令,進(jìn)行一些初始化,然后fork并監(jiān)控child進(jìn)程。child進(jìn)程分配若干線程進(jìn)行工作,主要包括一些管理線程和很多woker線程。

          Management進(jìn)程主要實(shí)現(xiàn)應(yīng)用新的配置、編譯VCL、監(jiān)控varnish、初始化varnish以及提供一個(gè)命令行接口等。 Management進(jìn)程會(huì)每隔幾秒鐘探測一下Child進(jìn)程以判斷其是否正常運(yùn)行,如果在指定的時(shí)長內(nèi)未得到Child進(jìn)程的回 應(yīng),Management將會(huì)重啟此Child進(jìn)程。

          Child進(jìn)程包含多種類型的線程,常見的如:
          Acceptor線程:接收新的連接請求并響應(yīng);
          Worker線程:child進(jìn)程會(huì)為每個(gè)會(huì)話啟動(dòng)一個(gè)worker線程,因此,在高并發(fā)的場景中可能會(huì)出現(xiàn)數(shù)百個(gè)worker線程甚至更多;
          Expiry線程:從緩存中清理過期內(nèi)容;

          Varnish依賴“工作區(qū)(workspace)”以降低線程在申請或修改內(nèi)存時(shí)出現(xiàn)競爭的可能性。在varnish內(nèi)部有多種不同的工作區(qū),其中最關(guān)鍵的當(dāng)屬用于管理會(huì)話數(shù)據(jù)的session工作區(qū)。

          二、VCL簡介

          Varnish Configuration Language (VCL)是varnish配置緩存策略的工具,它是一種基于“域”(domain specific)的簡單編程語言,它支持有限的算術(shù)運(yùn)算和邏輯運(yùn)算操作、允許使用正則表達(dá)式進(jìn)行字符串匹配、允許用戶使用set自定義變量、支持if判 斷語句,也有內(nèi)置的函數(shù)和變量等。使用VCL編寫的緩存策略通常保存至.vcl文件中,其需要編譯成二進(jìn)制的格式后才能由varnish調(diào)用。

          Linux中的varnish服務(wù)解析

          VCL處理過程大致分為如下幾個(gè)步驟:

          (1)Receive 狀態(tài),也就是請求處理的入口狀態(tài),根據(jù) VCL 規(guī)則判斷該請求應(yīng)該是 Pass 或
          Pipe,或者進(jìn)入 Lookup(本地查詢)。
          (2)Lookup 狀態(tài),進(jìn)入此狀態(tài)后,會(huì)在 hash 表中查找數(shù)據(jù),若找到,則進(jìn)入 Hit 狀態(tài),否則進(jìn)
          入 miss 狀態(tài)。
          (3)Pass 狀態(tài),在此狀態(tài)下,會(huì)進(jìn)入后端請求,即進(jìn)入 fetch 狀態(tài)。
          (4)Fetch 狀態(tài),在 Fetch 狀態(tài)下,對請求進(jìn)行后端的獲取,發(fā)送請求,獲得數(shù)據(jù),并進(jìn)行本地
          的存儲。
          (5)Deliver 狀態(tài), 將獲取到的數(shù)據(jù)發(fā)送給客戶端,然后完成本次請求。

          三、varnish的安裝

          1、server1中:

          1.安裝varnish

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

          Linux中的varnish服務(wù)解析

          2.更改varnish全局配置

          vim /etc/sysconfig/varnish

          VARNISH_LISTEN_PORT=80 #更改varnish服務(wù)端口為80

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          3.更改varnish配置文件

          vim /etc/varnish/default.vcl

          backend default { #配置一個(gè)后端服務(wù)器
          .host = "172.25.4.2"; #更改訪問IP為172.25.4.2
          .port = "80";
          }

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          4.重新加載服務(wù)

          /etc/init.d/varnish reload

          Linux中的varnish服務(wù)解析

          2、server2中:

          1.安裝apache

          yum install httpd -y

          Linux中的varnish服務(wù)解析

          /etc/init.d/httpd start

          Linux中的varnish服務(wù)解析

          2.制作index.html

          cd /var/www/html

          vim index.html

          server2

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          3.重新加載服務(wù)

          /etc/init.d/httpd reload

          Linux中的varnish服務(wù)解析

          3、測試:

          物理機(jī)中打開firefox,訪問172.25.4.1,看到server2即配置成功

          Linux中的varnish服務(wù)解析

          四、測試緩存命中情況

          1、server1中:

          1.更改配置文件

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

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          2.重新加載服務(wù)

          /etc/init.d/varnish reload

          Linux中的varnish服務(wù)解析

          2、測試:

          物理機(jī)中:

          curl -I 172.25.4.1 第一次顯示 MISS from westos cache 緩存中沒有,前往后端獲取

          Linux中的varnish服務(wù)解析

          curl -I 172.25.4.1 第二次顯示 HIT from westos cache 緩存中直接獲取

          Linux中的varnish服務(wù)解析

          3、通過 varnishadm 手動(dòng)清除緩存

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

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

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

          測試:

          1.測試清除所有緩存

          物理機(jī)中curl -I 172.25.4.1兩次,使172.25.4.1緩存到cache中

          Linux中的varnish服務(wù)解析

          server1中執(zhí)行 varnishadm ban.url .*$ 清除所有緩存

          Linux中的varnish服務(wù)解析

          物理機(jī)中curl -I 172.25.4.1 ,發(fā)現(xiàn)顯示MISS from westos cache

          Linux中的varnish服務(wù)解析

          2.測試清除 index.html 頁面緩存

          物理機(jī)中curl -I 172.25.4.1/index.html兩次,使172.25.4.1/index.html緩存到cache中

          Linux中的varnish服務(wù)解析

          server1中執(zhí)行 varnishadm ban.url /index.html 清除 index.html 頁面緩存

          Linux中的varnish服務(wù)解析

          物理機(jī)中curl -I 172.25.4.1/index.html 發(fā)現(xiàn)顯示MISS from westos cache

          Linux中的varnish服務(wù)解析

          注意:

          此時(shí)如果cache中有172.25.4.1的緩存信息,使用curl -I 172.25.4.1訪問時(shí)會(huì)顯示HIT from westos cache,這是因?yàn)殡m然curl -I 172.25.4.1

          和curl -I 172.25.4.1/index.html訪問得到的結(jié)果一致,但是緩存到cache中的地址不同。cache緩存的是用戶訪問的url

          拓展:

          curl -I 172.25.4.1訪問的結(jié)果中Age表示緩存時(shí)間,默認(rèn)為120s后自動(dòng)清除,可在/etc/sysconfig/varnish中修改

          五、定義多個(gè)不同域名站點(diǎn)的后端服務(wù)器

          1、server3中:

          1.安裝acpache

          yum install httpd -y

          Linux中的varnish服務(wù)解析

          /etc/init.d/httpd start

          Linux中的varnish服務(wù)解析

          2.制作index.html

          cd /var/www/html

          vim index.html

          www.linux.org

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          3.重新加載服務(wù)

          /etc/init.d/httpd reload

          Linux中的varnish服務(wù)解析

          2、server2中:

          1.更改index.html

          cd /var/www/html

          vim index.html

          www.westos.org

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          2.重新加載服務(wù)

          /etc/init.d/httpd reload

          Linux中的varnish服務(wù)解析

          3、物理機(jī)中:

          1.添加本地解析

          vim /etc/hosts

          172.25.4.1 www.westos.org www.linux.org westos.org

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          4、server1中:

          1.更改配置文件

          vim /etc/varnish/default.vcl

          backend web1 {
          .host = "172.25.4.2";
          .port = "80";
          }

          backend web2 {
          .host = "172.25.4.3";
          .port = "80";
          }

          #當(dāng)訪問 westos.org 域名時(shí),自動(dòng)訪問 www.westos.org 域名

          #當(dāng)訪問 www.westos.org 域名時(shí)從 web1 上取數(shù)據(jù),訪問 www.linux.org 域名時(shí)到 web2 取數(shù)據(jù),訪問其他頁面報(bào)錯(cuò)

          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 ~ "^www.linux.org") {
          set req.backend = web2;
          } else {error 404 "westos cache";
          }
          }

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          2.重新加載服務(wù)

          /etc/init.d/varnish reload

          Linux中的varnish服務(wù)解析

          5、測試:

          物理機(jī)中:

          curl www.westos.org

          curl westos.org

          發(fā)現(xiàn)兩者得到的結(jié)果相同,均為server2中相應(yīng)的index.html文件內(nèi)容

          curl www.linux.org

          得到server3中相應(yīng)的index.html文件內(nèi)容

          Linux中的varnish服務(wù)解析

          六、定義負(fù)載均衡

          1、server3中:

          1.更改apache配置文件

          vim /etc/httpd/conf/httpd.conf

          打開

          NameVirtualHost *:80

          添加

          DocumentRoot /var/www/html
          ServerName www.linux.org


          DocumentRoot /www1
          ServerName www.westos.org

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          2.建立/www1/index.html

          mkdir /www1

          vim /www1/index.html

          www.westos.org-server3

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          3.重新加載服務(wù)

          /etc/init.d/httpd reload

          Linux中的varnish服務(wù)解析

          4.配置本地解析

          vim /etc/hosts

          172.25.4.3 server3 www.westos.org www.linux.org

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          5.測試配置是否生效

          curl www.linux.org

          curl www.westos.org

          得到相應(yīng)的index.html文件中的內(nèi)容

          Linux中的varnish服務(wù)解析

          2、server1中:

          1.更改varnish配置

          vim /etc/varnish/default.vcl

          #把多個(gè)后端聚合為一個(gè)組,并檢測后端健康狀況

          director lb round-robin {
          { .backend = web1; }
          { .backend = web2; }
          }

          sub vcl_recv {
          if (req.http.host ~ "^(www.)westos.org") {
          set req.http.host = "www.westos.org";
          set req.backend = lb;
          } elsif (req.http.host ~ "^www.linux.org") {
          set req.backend = web2;
          } else {error 404 "westos cache";
          }
          }

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          2.重新加載配置

          /etc/init.d/varnish reload

          Linux中的varnish服務(wù)解析

          3、測試:

          1.物理機(jī)中:

          curl www.westos.org 得到server2中相應(yīng)的index.html文件內(nèi)容

          Linux中的varnish服務(wù)解析

          2.server1中:

          varnishadm ban.url .*$ 清除所有緩存

          Linux中的varnish服務(wù)解析

          3.物理機(jī)中:

          curl www.westos.org 得到server3中相應(yīng)的index.html文件內(nèi)容

          Linux中的varnish服務(wù)解析

          注意:

          還可以更改server1中varnish配置文件,添加return (pass); 使得varnish緩存功能失效,客戶端直接去后端抓取內(nèi)容,可以獲得更好的

          測試對比效果

          4、server1中:

          1.更改varnish配置

          vim /etc/varnish/default.vcl

          sub vcl_recv {
          if (req.http.host ~ "^(www.)westos.org") {
          set req.http.host = "www.westos.org";
          set req.backend = lb;
          return (pass); #varnish緩存功能失效,客戶端直接去后端抓取內(nèi)容
          } elsif (req.http.host ~ "^www.linux.org") {
          set req.backend = web2;
          } else {error 404 "westos cache";
          }
          }

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          2.重新加載配置

          /etc/init.d/varnish reload

          Linux中的varnish服務(wù)解析

          5、測試:

          物理機(jī)中:

          curl www.westos.org

          curl www.westos.org

          curl www.westos.org

          curl www.westos.org

          發(fā)現(xiàn)循環(huán)得到server2和server3相應(yīng)的index.html內(nèi)容

          Linux中的varnish服務(wù)解析

          此時(shí)若server2的httpd服務(wù)關(guān)閉curl會(huì)一直讀取server3相應(yīng)的index.html內(nèi)容而不會(huì)報(bào)錯(cuò),這是因?yàn)関arnish擁有自動(dòng)的健康檢查功能,

          若開啟server2的httpd服務(wù),使用curl又能夠循環(huán)讀取到server2和server3相應(yīng)的index.html內(nèi)容

          server2中:

          /etc/init.d/httpd stop

          Linux中的varnish服務(wù)解析

          物理機(jī)中:

          curl www.westos.org

          curl www.westos.org

          發(fā)現(xiàn)一直得到server3相應(yīng)的index.html內(nèi)容

          Linux中的varnish服務(wù)解析

          server2中:

          /etc/init.d/httpd start

          Linux中的varnish服務(wù)解析

          物理機(jī)中:

          curl www.westos.org

          curl www.westos.org

          curl www.westos.org

          curl www.westos.org

          發(fā)現(xiàn)循環(huán)得到server2和server3相應(yīng)的index.html內(nèi)容

          Linux中的varnish服務(wù)解析

          七、varnish全局配置文件中的參數(shù)

          1、NFILES #所能夠打開的最大文件數(shù)

          server1中:

          1.查看內(nèi)核允許的打開文件數(shù)的最大值

          sysctl -a | grep file

          Linux中的varnish服務(wù)解析

          2.更改varnish配置文件

          vim /etc/sysconfig/varnish

          更改NFILES數(shù)值,小于內(nèi)核允許最大值

          NFILES=66655

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          3.更改系統(tǒng)限制文件

          vim /etc/security/limits.conf

          varnish nofile 66656

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          2、MEMLOCK #用多大內(nèi)存空間保存日志信息

          server1中:

          1.更改varnish用戶為可交互登陸模式,切換到varnish用戶

          usermod -s /bin/bash varnish

          su – varnish

          Linux中的varnish服務(wù)解析

          2.查看系統(tǒng)允許的最大值

          ulimit -l

          Linux中的varnish服務(wù)解析

          *拓展:

          ulimit -a #查看所有系統(tǒng)限制

          Linux中的varnish服務(wù)解析

          3.更改系統(tǒng)限制文件

          logout

          vim /etc/security/limits.conf

          varnish memlock 82000

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          3、NPROCS #進(jìn)程核心轉(zhuǎn)儲所使用的內(nèi)存空間,unlimited表示無上限

          server1中:

          1.切換到varnish用戶

          su – varnish

          Linux中的varnish服務(wù)解析

          2.查看系統(tǒng)允許的最大值

          ulimit -u

          Linux中的varnish服務(wù)解析

          3.更改系統(tǒng)限制文件

          logout

          vim /etc/security/limits.conf

          varnish nproc unlimited

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          4.還原varnish用戶登陸設(shè)置

          usermod -s /sbin/nologin varnish

          Linux中的varnish服務(wù)解析

          注意:/etc/security/limits.conf 與 /etc/sysconfig/varnish 配置文件均是即改即生效

          拓展:

          VARNISH_TTL=120 #聯(lián)系后端服務(wù)器的超時(shí)時(shí)間

          VARNISH_STORAGE_SIZE=1G #儲存的文件的大小

          VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin #基于文件存儲時(shí)的文件路徑

          Linux中的varnish服務(wù)解析

          varnish與squid的區(qū)別

          varnish和squid在中小規(guī)模的應(yīng)用上,varnish足夠輕量級,足夠好用,但是在巨大的并發(fā)請求來說,單個(gè)varnish所能夠承載的并發(fā) 訪問量大概在5000個(gè)連接請求左右,超出5000個(gè)可能就就得不穩(wěn)定了;而在這里squid就能表現(xiàn)出良好的性能了,并且squid擁有鄰居功能,因此在大規(guī)模的企業(yè)級應(yīng)用中仍然是以squid居多,而在中小規(guī)模的自己公司的反向代理緩存中varnish居多

          8、CDN推送平臺

          1、server1:

          1.安裝apache服務(wù)

          yum install httpd -y

          Linux中的varnish服務(wù)解析

          2.更改apache服務(wù)配置

          避免與varnish服務(wù)端口沖突

          vim /etc/httpd/conf/httpd.conf

          Listen 8080

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          3.下載bansys.zip包,安裝解壓縮命令

          yum install unzip -y

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

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          4.將解壓出來的目錄中的文件移動(dòng)至/var/www/html

          cd /var/www/html

          cd bansys/

          mv * ..

          Linux中的varnish服務(wù)解析

          5.安裝php服務(wù)

          yum install php -y

          Linux中的varnish服務(wù)解析

          6.開啟apache服務(wù)

          /etc/init.d/httpd start

          Linux中的varnish服務(wù)解析

          7.更改php服務(wù)配置文件

          cd /var/www/html

          vim config.php

          刪除其余內(nèi)容,保留內(nèi)容如下:

          //varnish主機(jī)列表
          //可定義多個(gè)主機(jī)列表
          $var_group1 = array(
          'host' => array('172.25.4.1'),
          'port' => '80',
          );
          //varnish群組定義
          //對主機(jī)列表進(jìn)行綁定
          $VAR_CLUSTER = array(
          'www.westos.org' => $var_group1,
          );
          //varnish版本
          //2.x和3.x推送命令不一樣
          $VAR_VERSION = "3";

          >

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          注意:

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

          telnet 模式需要關(guān)閉 varnish 服務(wù)管理端口的驗(yàn)證,注釋掉/etc/sysconfig/varnish 文件中的

          “ -S ${VARNISH_SECRET_FILE}”這行,重啟 varnish 服務(wù)即可

          如果是 http 模式需要對 varnish 做以下設(shè)置(本次試驗(yàn)采用http模式推送)

          8.更改varnish配置文件

          vim /etc/varnish/default.vcl

          #設(shè)置訪問控制

          acl westos {
          "127.0.0.1";
          "172.25.4.0"/24;
          }

          在sub vcl_recv {} 中添加

          if (req.request == "BAN") {
          if (!client.ip ~ westos) {
          error 405 "Not allowed.";
          }
          ban("req.url ~ " + req.url);
          error 200 "ban added";
          }

          刪除 return (pass);

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          9.重新加載varnish服務(wù)

          /etc/init.d/varnish reload

          Linux中的varnish服務(wù)解析

          2、測試:

          物理機(jī)中:

          用firefox訪問www.westos.org

          打開另外一個(gè)網(wǎng)頁,用firefox訪問 172.25.4.1:8080

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          推送模式:HTTP

          CDN群組:www.westos.org

          推送內(nèi)容:

          /index.html #文件

          /images/* #目錄

          本次試驗(yàn)推送文件 /index.html

          推送一次,再訪問172.25.4.1:8080一次,發(fā)現(xiàn)循環(huán)讀取到server2和server3相應(yīng)的index.html內(nèi)容

          Linux中的varnish服務(wù)解析

          Linux中的varnish服務(wù)解析

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號