cdn加速

            Cdn

Cdn是一個代理緩存服務器。其實就是減少網絡中冗餘數據的重複傳輸。Cdn就是將網站內容發佈到最接近用戶的網絡“邊緣”,使用戶可以就近快速的取得自己想要的內容。在cdn整體部署的時候包括分佈式存儲,負載均衡,網絡重定向。

傳統的網絡訪問方式

wKioL1eoBfWBf4ZFAAA5zKoz-3M619.png

Cdn加速

wKiom1eoBhKD-5vWAACCkKx6L5k214.png

Server2  varnish  關閉防火牆,selinux時disabled狀態

Server3  apache

Server4  apache

[root@server2 ~]#yum localinstall -yvarnish-3.0.3-1.el6.x86_64.rpm varnish-libs-3.0.3-1.el6.x86_64.rpm

[root@server2 ~]# vim/etc/varnish/default.vcl  ###### 配置一個後端服務器

backend default {

 .host = "172.25.137.3";    #########後端的server的ip

 .port = "80";

}

 

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

}

[root@server2 ~]# vim/etc/sysconfig/varnish  ####配置varniash服務器監聽端口

VARNISH_LISTEN_PORT=80     ########66行,varnish監聽的端口

VARNISH_TTL=60               ########緩存的時間    

[root@server2 ~]# /etc/init.d/varnish start

[root@server3 ~]# /etc/init.d/httpd start

[root@server3 html]# vim/var/www/html/index.html  給server3做一個測試頁

server3.example.com

瀏覽器測試頁,當訪問server2,其實時時訪問的後端的server3

wKioL1eoBlORW8T5AAAaTRFfKbU123.png

[root@foundation137cdn]# curl -I 172.25.137.2  測試緩存

HTTP/1.1200 OK

Server:Apache/2.2.15 (Red Hat)

Last-Modified:Fri, 05 Aug 2016 10:20:17 GMT

ETag:"2087-14-5395069bc66f6"

 

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

Content-Length:20

Accept-Ranges:bytes

Date:Fri, 05 Aug 2016 12:51:41 GMT

X-Varnish:565160603

Age:0

Via:1.1 varnish

Connection:keep-alive

X-Cache:MISS from westos cache

 

[root@server2varnish]# varnishadm ban.url .*$ 清空緩存

[root@server2varnish]# varnishadm ban.url /index.html 清空頁面緩存

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

 

 

 backend web1 {

    .host = "172.25.137.3";

    .port = "80";

  }

 backend web2 {

    .host = "172.25.137.4";

    .port = "80";

  }

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

subvcl_recv {

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

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

                set req.backend = web1;

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

        set req.backend = web2;

        } else {

        error 404 "westos cache";

        }

}

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

物理界解析

[root@foundation137~]# vim /etc/hosts

wKioL1eoBn3BfNk6AAAbt81w-Ms726.png

wKiom1eoBpWw8Zi3AAAVRXeSrQk447.png

wKiom1eoBrHA8rxaAAAiZ3OB3RA034.png

wKioL1eoBt-wmi8PAAATfR6osuU659.png

[root@server2~]# vim /etc/varnish/default.vcl

directorIB round-robin{            #######把多個後端聚合爲一個組,並檢測後端健康狀態

{.backend = web1; }

{.backend = web2; }

}

 

subvcl_recv {

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

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

                set req.backend = IB;         ####後端組      

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

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

        set req.backend = web2;

        } else {

        error 404 "westos cache";

        }

}

 

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

 

[root@server4html]# vim /etc/httpd/conf/httpd.conf

wKiom1eoB3bANR5fAAAIrdcNoK8415.png

wKioL1eoB5PAG6wZAABD5HJyJp0772.png

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

wKiom1eoB7bzsrL_AABmQ9uDfyI787.png

wKiom1eoB8zTNSNKAAASngQpI-0240.png

[root@server2~]# varnishadm ban.url .*$     清空緩存

 

 

 

#####varniashcdn推送平臺 (推送主要是清空緩存)

需要安裝php ,apache

[root@server2~]# yum install -y httpd -y

[root@server2~]# yum install php -y

[root@server2~]# yum install unzip

[root@server2~]# unzip bansys.zip -d /var/www/html/

[root@server2html]# cd bansys/

[root@server2bansys]# mv * ..

[root@server2html]# vim config.php  文件中的多於的可以註釋

wKioL1eoCGWghecWAACfdjncd04300.png

對於羣組的定義值有定義了羣組了才能推送(推送是因爲當後端服務器內容更新後,cdn裏有健康檢查,會進行內容推送) 

 

[root@server2html]# vim /etc/httpd/conf/httpd.conf 修改apache監聽的端口,因爲varnish監聽的端口是80,把apache監聽端口改爲8080

[root@server2html]# /etc/init.d/httpd start

 

aclwestos {                  ###########設置控制訪問

"127.0.0.1";

"172.25.0.0"/24;

}

backendweb1 {

  .host = "172.25.137.3";

  .port = "80";

}

backendweb2 {

  .host = "172.25.137.4";

  .port = "80";

}

 

directorIB round-robin{

{.backend = web1; }

{.backend = web2; }

}

subvcl_deliver {

        if (obj.hits > 0) {

                set resp.http.X-Cache = "HITfrom westos cache";

}

        else {

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

}

return(deliver);

}

 

subvcl_recv {

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

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

                set req.backend = IB;

                return (pass);

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

        set req.backend = web2;

        } else {

        error 404 "westos cache";

        }

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

                if (!client.ip ~ westos) {

                        error 405 "Notallowed.";

                }

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

                error 200 "banadded";

        }

}

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

wKioL1eoCIGwTIjvAABClIEKcaY652.png

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

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

{VARNISH_SECRET_FILE}”這行,重啓 varnish 服務即可。此實驗中是用的http方式

wKioL1eoCXGQGarzAABQYqNsQrs835.png

wKioL1eoCYeCsO4sAAA1eF24za4436.png



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