三.CDN简介
CDN全称:Content Delivery Network,即内容分发网络
基本思路:是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快更稳定。
通过在网络各位置处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时的根据网络流量和各结点的连接,负载状态以及到用户的距离和响应时间等综合信息将用户的请求重新导向距离用户最近的服务节点上。
目的:使用户可就近取的所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。
varnish部署
在之前我们用过squid代理缓存服务器,那么我们今天来学习部署在市场上完全替代了squid的varnish来部署CDN
实验环境:共三台虚拟机
在这次实验中我们将server1作为cdn缓存服务器
1.在官网下载varnish安装包
2.安装
3.配置varnish的服务端口
rpm -qc varnish-3.0.5-1.el6.x86_64 #查看varnish服务的配置文件
vi /etc/sysconfig/varnish 配置文件
NFILES=131072 ##最多能打开的文件数,varnish会自动调整该数值
MEMLOCK=82000 #最多能使用的内存空间,varnish会自动调整该数值
NPROCS="unlimited" #单个用户所能运行的最大线程数,varnish会自动调整该数值
66 VARNISH_LISTEN=80#修改varnish的端口为80
4冲启服务
修改varnish用户的限制文件(因为varnish这个程序运行在varnish这个用户的私有空间内,内核对普通用户限制的最大文件数为1024.对varnish用户的最大文件限制为131072,在模拟中需要满足varnish用户的文件的最大值)
sysctl -a | grep file #查看系统用户的文件数
ulimit -l
配置varnish用户的安全限制
vim /etc/security/limits.conf
在该文件的最后面加:
varnish - nofile 131072
varnish - memlock 82000
varnish - nproc unlimited
varnish的配置文件中添加一个后端服务器
vim /etc/varnish/default.vcl
在文件中添加的内容如下:
backend default {
.host = “172.25.254.2”; ##后端服务器的IP
.port = “80”; ##后端服务器的端口
开启服务并重新加载服务
server2 的配置:
安装apache
开启服务并在默认发布目录下写入内容方便检测
检测:
在真机上:
Varnish缓存及其缓存清理
1.查看cdn缓存的命中情况
vim /etc/varnish/default.vcl #编辑配置文件
/etc/init.d/varnish restart #重启服务
检测如下:在物理机上
2.清理缓存
varnishadm ban.url .*$ #清除所有缓存
检测(发现在之前是命中的状态,当再次查看的时候发现是MISS状态)
在server1上清理该页面的缓存
我们共访问了三次server1,只有第一次显示的是MISS,其余两次均是HIT,这代表我们第一次是真实访问到了server2,实现反向代理,二后面的两次我们则是访问的server1的缓存内容,所以是HIT
配置多个后端服务器
添加server3 的配置,与server2配置一样,所以直接带过
varnish的配置文件中添加解析
server1中
[root@server1 ~]# vim /etc/varnish/default.vcl
文件编辑内容如下:
backend web1 { ##后端的第一个服务器web1
.host = “172.25.254.2”; #将server2www.westos.org作为第一个服务器的主机名
.port = “80”; }
backend web2 { #后端的第二个服务器web2
.host = “172.25.254.3”; #将server3 bbs.westos.org作为第二个服务器的主机名
.port = “80”;
}
当访问www.westos.org时从web1也就是server2上取数据
当访问bbs.westos.org时从web2也就是server3上取数据
访问其它页面会报错
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”;
}
}
2.测试
在物理机添加解析
测试如下:
varnish做调度器,实现负载均衡
1.负载均衡的基本概念
负载均衡(Load Balance,简称LB)是一种服务器或网络设备的集群技术。负载均衡将特定的业务分担给多个服务器或网络设备,从而提高业务处理能力。
负载均衡的算法有很多种,在varnish中常采用的算法是轮询法
2.负载均衡的实现
在varnish主机server1的defaults文件中写入负载均衡函数
vim /etc/varnish/default.vcl
director lb round-robin { # 采用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; # 调用平衡轮叫函数
#return (pass); # 写pass表明不经过缓存直接去后端服务器拿数据
} elsif (req.http.host ~ “^bbs.westos.org”) {
set req.backend = web2; }
else {error 404 “westos cache”;
}
}
在物理机上测试如下:
可以发现当访问www.westos.org时,因为有lb函数所以在后端服务器server2和server3之间进行轮询调度,而bbs.westos.org没有lb函数,所以只是显示server3后端realserver的内容。
一台主机有多个虚拟解析
在server3的httpd服务器上建立多个虚拟主机
在httpd配置文件中添虚拟主机
cd /etc/httpd/conf
vim httpd.conf
编辑内容如下:
打开虚拟主机的80端口
添加虚拟主机所要发布的内容
验证如下:
在物理机上添加解析
vim /etc/hosts
在物理机中访问测试