CDN
CDN的全稱是Content Delivery Network,即內容分發網絡。其目的是通過在現有的Internet中增加一層新的網絡架構,將網站的內容發佈到最接近用戶的網絡"邊緣",使用戶可以就近取得所需的內容,解決Internet網絡擁擠的狀況,提高用戶訪問網站的響應速度。從技術上全面解決由於網絡帶寬小、用戶訪問量大、網點分佈不均等原因所造成的用戶訪問網站響應速度慢的問題。
easy-cdn它使您能夠快速、簡單的部署CDN系統,所用工具爲squid+bind(view),
varnish
一 操作環境:
物理機一臺,三個6.5的虛擬機server1-server3
二 操作過程:
1.後端服務器的配置
物理主機訪問server1,事實是訪問server2
Server1:
(1)###安裝varnish軟件包
129 yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm -y
(2)###配置一個後端服務器:
132 cd/etc/varnish/
133 ls
134 vim default.vcl
7 backend web1{
8 .host = "172.25.21.2";
9 .port = "80";
10 }
(3)###配置 varnish 服務端口:
135 vim/etc/sysconfig/varnish
66 VARNISH_LISTEN_PORT=80
137 /etc/init.d/varnish start ###開啓varnish服務
138 netstat -antlp ####查看有沒有80端口
截圖:
Server2:
安裝httpd,在共享目錄下建立共享文件建立
16 yum install httpd -y
17 /etc/init.d/httpd start
18 cd/var/www/html
19 ls
20 vim index.html
21 cat index.html
截圖:
物理機測試:
[root@foundation21~]# vim /etc/hosts ###本地解析截圖:
[root@foundation21~]# curl www.westos.org
<h1>server2</h1>
瀏覽器輸入:172.25.21.1
截圖:
2.緩存配置:
Server1:
###查看緩存命中情況:
[root@server1varnish]# vim default.vcl
12 sub vcl_deliver {
13 if (obj.hits > 0) {
14 set resp.http.X-Cache = "HIT from westos cache";
15 }
16 else {
17 set resp.http.X-Cache = "MISS fromwestos cache";
18 }
19 return (deliver);
20 }
[root@server1 varnish]#/etc/init.d/varnish reload
截圖:
物理機:
###測試緩存命中:
[root@foundation21~]# curl -I 172.25.21.1
HTTP/1.1 200 OK
Server:Apache/2.2.15 (Red Hat)
Last-Modified:Thu, 20 Jul 2017 02:43:21 GMT
ETag:"40026-12-554b6b639ddea"
Content-Type:text/html; charset=UTF-8
Content-Length: 18
Accept-Ranges:bytes
Date: Thu, 20 Jul2017 03:06:35 GMT
X-Varnish:1716317952
Age: 0
Via: 1.1 varnish
Connection:keep-alive
X-Cache: MISS from westos cache #未命中
[root@foundation21~]# curl -I 172.25.21.1
HTTP/1.1 200 OK
Server:Apache/2.2.15 (Red Hat)
Last-Modified:Thu, 20 Jul 2017 02:43:21 GMT
ETag:"40026-12-554b6b639ddea"
Content-Type:text/html; charset=UTF-8
Content-Length: 18
Accept-Ranges:bytes
Date: Thu, 20 Jul2017 03:08:04 GMT
X-Varnish:1716317953 1716317952
Age: 89
Via: 1.1 varnish
Connection:keep-alive
X-Cache: HIT from westos cache #命中
### 通過 varnishadm 手動清除緩存:
[root@server1 varnish]#varnishadm ban.url .*$ #清除所有
[root@server1 varnish]#varnishadm ban.url/index.html #清除 index.html 頁面緩存
[root@server1varnish]# varnishadm ban.url /admin/$ #清除 admin 目錄緩存
3. 定義多個不同域名站點的後端服務器
Server1:
(1)###定義多個不同域名站點的後端服務器
backend web1 {
.host ="172.25.21.2";
.port ="80";
}
backend web2 {
.host ="172.25.21.3";
.port ="80";
}
[root@server1varnish]# vim default.vcl
[root@server1varnish]# /etc/init.d/varnish reload
Loading vcl from/etc/varnish/default.vcl
Current runningconfig name is reload_2017-07-20T11:05:50
Using new configname reload_2017-07-20T11:22:36
Message fromVCC-compiler:
Unused backendweb2, defined:
('input' Line 11Pos 9)
backend web2 {
--------####--
RunningVCC-compiler failed, exit 1
VCL compilationfailed
Command failedwith error code 106
varnishadm -S/etc/varnish/secret -T 127.0.0.1:6082 vcl.load failed
有問題需要進行(2)
(2)#當訪問 www.westos.org 域名時從 web1 上取數據,訪問 bbs.westos.org 域名時到 web2 取數據, 訪問其他頁面報錯。
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";
}
}
[root@server1varnish]# vim default.vcl
[root@server1varnish]# /etc/init.d/varnish reload
Loading vcl from/etc/varnish/default.vcl
Current runningconfig name is reload_2017-07-20T11:05:50
Using new configname reload_2017-07-20T11:31:05
VCL compiled.
available 0 boot
available 2 reload_2017-07-20T11:05:50
active 0 reload_2017-07-20T11:31:05
Done
配置文件內容截圖:
server3:
10 yum install httpd -y
11 /etc/init.d/httpd start
12 cd /var/www/html
13 ls
14 vim index.html
15 cat index.html
截圖:
物理機:
[root@foundation21~]# vim /etc/hosts ###本地解析截圖:
[root@foundation21~]# curl 172.25.21.1 ##訪問ip出錯。只能訪問域名
<?xmlversion="1.0" encoding="utf-8"?>
<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>404 westos cache</title>
</head>
<body>
<h1>Error 404 westos cache</h1>
<p>westos cache</p>
<h3>Guru Meditation:</h3>
<p>XID: 1716317954</p>
<hr>
<p>Varnish cache server</p>
</body>
</html>
[root@foundation21~]# curl www.westos.org
<h1>server2</h1>
[root@foundation21~]# curl bbs.westos.org
<h1>server3</h1>
4.負載均衡
Server2:
[root@server2html]# mkdir /www/bbs -p
[root@server2html]# mkdir /www/westos
[root@server2html]# cd /www/bbs/
[root@server2bbs]# ls
[root@server2bbs]# vim /etc/httpd/conf/httpd.conf
[root@server2bbs]# /etc/init.d/httpd restart
Stoppinghttpd: [ OK ]
Startinghttpd: httpd: Could not reliably determine the server's fully qualified domainname, using 172.25.21.2 for ServerName
[ OK ]
[root@server2bbs]# vim /etc/hosts
[root@server2bbs]# vim index.html
[root@server2bbs]# cd /www/westos/
[root@server2westos]# ls
[root@server2westos]# vim index.html
Server1:
[root@server1 varnish]# vim default.vcl
[root@server1 varnish]# /etc/init.d/varnish reload
截圖:
測試:
物理機瀏覽器:www.westos.org bbs.westos.org