例子:當西安的用戶,想要去訪問遠在深圳的騰訊服務器時。如果每次都直接訪問深圳騰訊服務器那麼,效率會及其底下。如果西安有一個騰訊的代理服務器,西安用戶只需要去訪問西安的代理服務器,第一次,西安代理服務器,也需要去深圳騰訊服務器訪問,只要西安的騰訊代理服務器緩存以後,其餘的用戶或者之後再訪問相同的內容,速度會很快。
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 ##查看第一個配置文件
8 NFILES=131072 ##最大可以開啓的數量
12 MEMLOCK=82000 ##佔用的內存
15 NPROCS="unlimited" ##線程數量不限制
我們需要查看系統最多可以打開多少文件,要大於varnish的數量
sysctl -a | grep file ##查看系統可以開啓的最大文件數量
free -m ##查看系統內存
sysctl -a | grep file
配置文件二
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 ##進程號是否限制
配置文件三:
[root@server1 ~]# vim /etc/varnish/default.vcl
7 backend default {
8 .host = "172.25.85.2";
9 .port = "80";
10 }
3)啓動varnish
/etc/init.d//varnish start
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地址
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);
}
完成後,重新加載
/etc/init.d/varnish reload
測試結果
第一次
沒有緩存
第二次
有緩存
清空緩存要在,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
測試結果
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";
}
}
完成後,重新加載
/etc/init.d/varnish reload
實驗結果
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>
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
重啓服務
/etc/init.d/httpd restart
測試
測試機vim/etc/hosts
172.25.85.2 server2 www.westos.org bbs.westos.org
結果
9)cdn推送管理,清除緩存
1、安裝相關軟件
yum install unzip httpd php -y
2、解壓unzip bansys.zip -d /var/www/html/
3、編寫bansys配置文件
cd /var/www/html/bansys/
vim config.php
編輯如下
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
使用測試機訪問cdn(vm1)服務器,可以看到cdn推送管理
172.25.85.1:8080
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";
}
}
重新加載varnish
/etc/init.d/varnish reload
測試:
測試機 訪問 172.25.85.1:8080
發送模式:HTTP
cdn www.westos.org
推送內容: .* ##清空緩存
在控制檯