varnish实现cdn高速缓存

三.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

在这里插入图片描述

在物理机中访问测试

springboot052基于Springboot+Vue旅游管理系统毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值