cdn:内容分发网络(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理(Traffic Management)是CDN的核心所在。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。
varnish:Varnish是一款高性能的开源HTTP加速器,用于CDN加速。
实验环境:
三台服务器,一台作为 director,两台作为 real server。
director 内网ip(172.25.20.1),
两个 real server 上只有内网 ip (172.25.20.2) 和 (172.25.20.3),
并且需要把两个 real server 的内网网关设置为 director 的内网 ip(172.25.20.1)
[server1]安装varnish
yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm -y
[server2,server3]配置好两个rs的http(以server2为例)
yum install httpd -y
/etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server’s fully qualified domain name, using 172.25.20.2 for ServerName [ OK ]
默认发布目录建立默认发布文件,作为区别
cd /var/www/html/
echo server2 > index.html
[server1]
vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80 监听端口改为80
vim /etc/varnish/default.vcl 更改主配置文件
backend default { 搭建http服务的虚拟机ip
.host = "172.25.20.2";
.port = "80";
}
/etc/init.d/varnish start
sysctl -a | grep file-max ##显示内核最大支持的缓存文件数371487
测试 用物理机curl 172.25.20.1 出现在server2中所写的即为成功
查看最大线程数
sysctl -a | grep file
修改系统重varnish最大线程数
vim /etc/security/limits.conf
修改主配置文件中varnish最大线程数
vim /etc/sysconfig/varnish
查看缓存命中
编辑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
[测试]
物理机中:
curl 172.25.20.1
当缓存命中时,执行HIT from westos cache
当缓存不命中时,执行MISS from westos cache
使用 varnishadm ban.url .* 用来清空所有的缓存
使用 varnishadm ban.url .*$
使用 varnishadm ban.url /index.html 用来清空html 缓存
域名访问
vim /etc/varnish/default.vcl
backend web1 {
.host = "172.25.20.3";
.port = "80";
}
backend web2 {
.host = "172.25.20.2";
.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";
}
}
if (req.http.host ~ “^(www.)?westos.org”) {
此处用于当前面不管是什么域名当后面为westos.org 时,都会缓存到同
一个www.westos.org的目录
} else {error 404 “westos cache”;
此处不能显示为IP地址访问,因为其匹配的是域名,而不是IP地址
[物理机]
修改解析文件
vim /etc/hosts
172.25.20.1 www.westos.com bbs.westos.com www.westos.org bbs.westos.org
测试:
添加本地解析
curl www.westos.org
curl westos.org
curl bbs.westos.org
负载均衡
backend web1 {
.host = "172.25.20.3";
.port = "80";
}
backend web2 {
.host = "172.25.20.2";
.port = "80";
}
director lb round-robin {
{ .backend = web1;}
{.backend = web2;
}
}
sub vcl_recv {
if (req.request == "BAN") {
if (!client.ip ~ westos) {
error 405 "Not allowed.";
}
ban("req.url ~ " + req.url);
error 200 "ban added";
}
}
[server2]
DocumentRoot /var/www/html
ServerName bbs.westos.org
DocumentRoot /www
ServerName www.westos.org
curl www.westos.org
curl bbs.westos.org
Cdn推送平台
安装php
yum install httpd -y
/etc/init.d/httpd restart
安装unzip插件
yum install -y unzip
将 bansys.zip解压到apache默认发布目录中unzip bansys.zip -d /var/www/html/ 把解压后目录中的所有文件移动到html下
解压 unzip bansys.zip
mv /mnt/bansys /var/www/html/
mv bansys/* .
bansys 有两种工作模式,分别是:telnet 和 http 模式。
telnet 模式需要关闭 varnish服务管理端口的验证,注释掉/etc/sysconfig/varnish 文件中的 “ -S ${VARNISH_SECRET_FILE}”这行,重启 varnish 服务即可。如果是 http 模式需要对 varnish
做以下设置:
PHP主配置文件
vim config.php
vim /etc/varnish/default.vcl
acl westos {
#设置访问控制
"127.0.0.1";
"172.25.20.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";
}
}
# service varnish reload