三.CDN简介

CDN全称:Content Delivery Network,即内容分发网络

基本思路:是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快更稳定。

通过在网络各位置处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时的根据网络流量和各结点的连接,负载状态以及到用户的距离和响应时间等综合信息将用户的请求重新导向距离用户最近的服务节点上。

目的:使用户可就近取的所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。
varnish部署

在之前我们用过squid代理缓存服务器,那么我们今天来学习部署在市场上完全替代了squid的varnish来部署CDN
实验环境:共三台虚拟机

在这次实验中我们将server1作为cdn缓存服务器

1.在官网下载varnish安装包
varnish实现cdn高速缓存

2.安装
varnish实现cdn高速缓存
varnish实现cdn高速缓存3.配置varnish的服务端口

rpm -qc varnish-3.0.5-1.el6.x86_64  #查看varnish服务的配置文件

varnish实现cdn高速缓存

vi /etc/sysconfig/varnish 配置文件

NFILES=131072 ##最多能打开的文件数,varnish会自动调整该数值 
  MEMLOCK=82000 #最多能使用的内存空间,varnish会自动调整该数值 
  NPROCS="unlimited" #单个用户所能运行的最大线程数,varnish会自动调整该数值  
  66 VARNISH_LISTEN=80#修改varnish的端口为80

varnish实现cdn高速缓存4冲启服务
varnish实现cdn高速缓存

修改varnish用户的限制文件(因为varnish这个程序运行在varnish这个用户的私有空间内,内核对普通用户限制的最大文件数为1024.对varnish用户的最大文件限制为131072,在模拟中需要满足varnish用户的文件的最大值)

 sysctl -a | grep file #查看系统用户的文件数
 ulimit -l

varnish实现cdn高速缓存配置varnish用户的安全限制

  vim /etc/security/limits.conf

在该文件的最后面加:
varnish - nofile 131072
varnish - memlock 82000
varnish - nproc unlimited

varnish实现cdn高速缓存

varnish的配置文件中添加一个后端服务器

 vim /etc/varnish/default.vcl 

在文件中添加的内容如下:
backend default {
.host = “172.25.254.2”; ##后端服务器的IP
.port = “80”; ##后端服务器的端口

varnish实现cdn高速缓存
开启服务并重新加载服务

varnish实现cdn高速缓存

server2 的配置:

安装apache

varnish实现cdn高速缓存

varnish实现cdn高速缓存

开启服务并在默认发布目录下写入内容方便检测

varnish实现cdn高速缓存

检测:

在真机上:

varnish实现cdn高速缓存

Varnish缓存及其缓存清理

1.查看cdn缓存的命中情况

vim /etc/varnish/default.vcl #编辑配置文件
/etc/init.d/varnish restart #重启服务

varnish实现cdn高速缓存

varnish实现cdn高速缓存
检测如下:在物理机上

varnish实现cdn高速缓存

2.清理缓存

 varnishadm ban.url .*$  #清除所有缓存

varnish实现cdn高速缓存

检测(发现在之前是命中的状态,当再次查看的时候发现是MISS状态)

varnish实现cdn高速缓存
varnish实现cdn高速缓存
在server1上清理该页面的缓存

varnish实现cdn高速缓存

varnish实现cdn高速缓存我们共访问了三次server1,只有第一次显示的是MISS,其余两次均是HIT,这代表我们第一次是真实访问到了server2,实现反向代理,二后面的两次我们则是访问的server1的缓存内容,所以是HIT

配置多个后端服务器

添加server3 的配置,与server2配置一样,所以直接带过
varnish实现cdn高速缓存
varnish实现cdn高速缓存varnish实现cdn高速缓存

varnish的配置文件中添加解析
server1中

[[email protected] ~]# 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”;
}
}

varnish实现cdn高速缓存

varnish实现cdn高速缓存

2.测试

在物理机添加解析

varnish实现cdn高速缓存

varnish实现cdn高速缓存

测试如下:

varnish实现cdn高速缓存

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”;
}
}

varnish实现cdn高速缓存

varnish实现cdn高速缓存

在物理机上测试如下:
varnish实现cdn高速缓存
可以发现当访问www.westos.org时,因为有lb函数所以在后端服务器server2和server3之间进行轮询调度,而bbs.westos.org没有lb函数,所以只是显示server3后端realserver的内容。

一台主机有多个虚拟解析

在server3的httpd服务器上建立多个虚拟主机

在httpd配置文件中添虚拟主机

 cd /etc/httpd/conf

 vim httpd.conf 

编辑内容如下:
打开虚拟主机的80端口

varnish实现cdn高速缓存

varnish实现cdn高速缓存

添加虚拟主机所要发布的内容
varnish实现cdn高速缓存验证如下:

在物理机上添加解析

vim /etc/hosts

varnish实现cdn高速缓存

在物理机中访问测试

相关文章: