Linux筆記之代理緩存器-----cdn之varnish

例子:當西安的用戶,想要去訪問遠在深圳的騰訊服務器時。如果每次都直接訪問深圳騰訊服務器那麼,效率會及其底下。如果西安有一個騰訊的代理服務器,西安用戶只需要去訪問西安的代理服務器,第一次,西安代理服務器,也需要去深圳騰訊服務器訪問,只要西安的騰訊代理服務器緩存以後,其餘的用戶或者之後再訪問相同的內容,速度會很快。

CDN的全稱是Content Delivery Network,即內容分發網絡。CDN是構建在網絡之上的內容分發網絡,依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。CDN的關鍵技術主要有內容存儲和分發技術。

Squid是一個高性能的代理緩存服務器,Squid支持FTP、gopher、HTTPS和HTTP協議。和一般的代理緩存軟件不同,Squid用一個單獨的、非模塊化的、I/O驅動的進程來處理所有的客戶端請求。

一:實驗準備工作
1、修改主機名

vi /etc/sysconfig/network

server1
server2
server3
2、修改本地解析

vi /etc/hosts

172.25.85.1 server1

172.25.85.2 server2

172.25.85.3 server3
3、修改ip地址

vi /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/init.d/network restart

4、配置yum源

vi /etc/yum.repos.d/rhel-source.repo
yum clean all
yum repolist

5、安裝vim,openssh 和 lftp

yum install vim openssh-clients lftp -y

6、刪除70-persistent-net.rules文件    ##如果有這個文件,快照會報錯,因爲裏面含有mac地址

   18  cd /etc/udev/
   19  ls
   20  cd rules.d/
   21  ls
   22  rm -rf 70-persistent-net.rules

7、關閉selinux

vi /etc/sysconfig/selinux

SELINUX=disabled

8、關閉防火牆並開機不啓動

   13  /etc/init.d/iptables stop
   14  /etc/init.d/ip6tables stop
   15  chkconfig iptables off
   16  chkconfig ip6tables off

2)利用快照安裝三臺虛擬機:

 cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -b origin.qcow2 vm1.qcow2
qemu-img create -f qcow2 -b origin.qcow2 vm2.qcow2
qemu-img create -f qcow2 -b origin.qcow2 vm3.qcow2

1、複製三張虛擬機的vm1,vm2,vm3
2、安裝三臺虛擬機vm1,vm2,vm3
3、修改三臺虛擬機的主機名和ip地址
vi /etc/sysconfig/network
vi /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/init.d/network restart

二、varnish服務的安裝

1)varnish的介紹
2)第一臺服務器vm1安裝varnish,並修改好配置文件

1、下載號安裝包varnish-3.0.5-1.el6.x86_64.rpm  varnish-libs-3.0.5-1.el6.x86_64.rpm,並安裝

yum install varnish-* -y

2、修改配置文件    

rpm -qc varnish-     ##查看配置文件

配置文件一

 vim /etc/sysconfig/varnish      ##查看第一個配置文件
Linux筆記之代理緩存器-----cdn之varnish

  8 NFILES=131072             ##最大可以開啓的數量

 12 MEMLOCK=82000      ##佔用的內存

 15 NPROCS="unlimited"    ##線程數量不限制
我們需要查看系統最多可以打開多少文件,要大於varnish的數量

sysctl -a | grep file ##查看系統可以開啓的最大文件數量
Linux筆記之代理緩存器-----cdn之varnish
free -m ##查看系統內存
Linux筆記之代理緩存器-----cdn之varnish
Linux筆記之代理緩存器-----cdn之varnish
sysctl -a | grep file
Linux筆記之代理緩存器-----cdn之varnish
配置文件二

vim /etc/sysconfig/varnish     ##修改端口
 66 VARNISH_LISTEN_PORT=80

修改系統內置的配置文件,使得達到varnish的要求。
vim /etc/security/limits.conf
 51 varnish         -       nofile          131072        ##最大開啓文件的數量
 52 varnish         -       memlock         82000    ##佔用的內存
 53 varnish         -       nproc           unlimited    ##進程號是否限制
Linux筆記之代理緩存器-----cdn之varnish
配置文件三:

[root@server1 ~]# vim /etc/varnish/default.vcl
7 backend default {
8 .host = "172.25.85.2";
9 .port = "80";
10 }
Linux筆記之代理緩存器-----cdn之varnish
3)啓動varnish

/etc/init.d//varnish start
Linux筆記之代理緩存器-----cdn之varnish
cat /etc/passwd              ##系統會多一個varnish的用戶
ps aux | grep varnish    ##查看進程有兩個,一個爲root,一個爲varnish
cat /proc/1035/status     ##查看進程號的狀態,root只有一個線程
ps aux | grep varnish
at /proc/1036/status     ##varnishi有109個線程

4)第二臺服務區vm2安裝httpd服務

yum install httpd -y
reboot
cd /var/www/html/
ls
vim index.html        ##編寫默認發佈目錄
/etc/init.d/httpd start

測試:

在測試主機curl vm1的ip地址
Linux筆記之代理緩存器-----cdn之varnish
5)實現varnish的緩存功能

在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筆記之代理緩存器-----cdn之varnish
完成後,重新加載
/etc/init.d/varnish reload

測試結果

第一次
Linux筆記之代理緩存器-----cdn之varnish
沒有緩存
第二次
Linux筆記之代理緩存器-----cdn之varnish
有緩存
清空緩存要在,varnish服務端進行。

清空緩存:varnishadm ban.url .*$                                       
varnishadm ban.url /index.html  訪問方式不同         
要使用 curl -I 172.25.38.1/index.html
6)設置兩個網頁

在vim /etc/varnish/default.vcl編寫如下
backend web1 {
  .host = "172.25.85.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.85.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";
    }
}

完成後,重新加載
/etc/init.d/varnish reload

在測試機,加入本地解析

vim /etc/hosts

172.25.85.1 server1 www.westos.org bbs.westos.org
Linux筆記之代理緩存器-----cdn之varnish
測試結果
Linux筆記之代理緩存器-----cdn之varnish
7)如何實現負載均衡(輪詢訪問web1和web2)

在vim /etc/varnish/default.vcl編寫如下

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;                ##訪問www.westos.org 論尋
        return (pass);                            ##不會緩存,否則看不到效果
    }elsif ( req.http.host ~ "^bbs.westos.org" ){
        set req.backend = web2;
    }else{
        error 404 "westos cache";
    }
}
Linux筆記之代理緩存器-----cdn之varnish
完成後,重新加載
/etc/init.d/varnish reload
實驗結果
Linux筆記之代理緩存器-----cdn之varnish
8)虛擬主機的安裝

在server2或者server3實現

1、編輯配置文件vim /etc/httpd/conf/httpd.conf

990 NameVirtualHost *:80

1004 <VirtualHost :80>
1005     DocumentRoot /www
1006     ServerName www.westos.org
1007 </VirtualHost>
1008
1009 <VirtualHost
:80>
1010     DocumentRoot /bbs
1011     ServerName bbs.westos.org
1012 </VirtualHost>
Linux筆記之代理緩存器-----cdn之varnish
2、創建目錄

[root@server3 html]# mkdir /www
[root@server3 html]# mkdir /bbs

3、編輯內容

[root@server3 html]# cd /www
[root@server3 www]# vim index.html
[root@server3 www]# cd /bbs/
[root@server3 bbs]# vim index.html
Linux筆記之代理緩存器-----cdn之varnish
重啓服務

/etc/init.d/httpd restart

測試

測試機vim/etc/hosts
172.25.85.2 server2 www.westos.org bbs.westos.org
Linux筆記之代理緩存器-----cdn之varnish
結果
Linux筆記之代理緩存器-----cdn之varnish
9)cdn推送管理,清除緩存

1、安裝相關軟件

yum install unzip httpd php -y
Linux筆記之代理緩存器-----cdn之varnish
2、解壓unzip bansys.zip -d /var/www/html/

3、編寫bansys配置文件

cd /var/www/html/bansys/
vim config.php

編輯如下
 
Linux筆記之代理緩存器-----cdn之varnish
4、修改端口號爲8080

vim /etc/httpd/conf/httpd.conf
 136 Listen 8080
啓動http服務
/etc/init.d/httpd start

5、將所有bansys的配置文件移動到aphache目錄下

mv * ../

測試:

測試機
vim /etc/hosts
172.25.85.1 server1 www.westos.org bbs.westos.org
Linux筆記之代理緩存器-----cdn之varnish
使用測試機訪問cdn(vm1)服務器,可以看到cdn推送管理
172.25.85.1:8080
Linux筆記之代理緩存器-----cdn之varnish
6、編寫varnish的配置文件            

vim /etc/varnish/default.vcl

編寫
acl westos{
"127.0.0.1";
"172.25.85.0"/24;      ##85段的IP允許
}

sub vcl_recv {
    if (req.request == "BAN"){
        if (!client.ip ~ westos){
            error 405 "Not allowed.";
        }
    ban("req.url ~ " + req.url);
        error 200 "ban added";
    }
}
Linux筆記之代理緩存器-----cdn之varnish

Linux筆記之代理緩存器-----cdn之varnish
重新加載varnish
/etc/init.d/varnish reload

測試:

測試機 訪問 172.25.85.1:8080
發送模式:HTTP
cdn www.westos.org
推送內容: .* ##清空緩存
Linux筆記之代理緩存器-----cdn之varnish
Linux筆記之代理緩存器-----cdn之varnish
在控制檯
Linux筆記之代理緩存器-----cdn之varnish
Linux筆記之代理緩存器-----cdn之varnish

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