前言:

在不同地域的用户访问网站的相应速度存在差异,为了提高用户访问的相应

速度,优化现有internet中的信息流动,需要在用户和服务器之间加入中间层CDN,

是用户能以最快的速度从最近的地方获得所需的信息,加速解决网络的拥塞,提高

响应的速度,是目前大型互联网站使用的流行应用方案。

使用·Vanish实现CDA的节点集群

vanish的工作原理如下:

Varnish处理请求流程大致可以分为如下几个步骤:

1、首先当请求到达时,接受vcl_recv函数的检查,在这个函数中,可以执

行pass、pipe、lookup、error操作。

2、如果在vcl_recv函数执行lookup操作,则会在缓存中查看是否有该缓存对象。

如果有,则表示缓存命中,则在接受vcl_hit函数的检 查。在该函数下可以将缓

存对象直接返回给客户端,即执行deliver操作。也可以不使用本地缓存对象,

从后端服务器获取请求对象,即执行pass操作。 如果本地没有该缓存对象,则表

示缓存丢失,则会接受vcl_miss函数检查。该函数会从后端服务器获取最新资源,

即将会执行pass或fetch操作。

3、如果在vcl_recv函数执行pass操作,则表示不再本地缓存查找,直接从后端服务器

进行获取,即将会接受vcl_pass函数的检查。

4、如果在vcl_recv函数处执行pipe操作,则表示不再本地缓存中查找,并且客户端和

后端服务器建立管道,后续客户端的keep-alive连 接中的请求数据传输将在管道中进行,

并且请求数据接受vcl_pipe函数的检查。直到数据传输完成时关闭该管道连接。

5、当需要从后端服务器获取资源或数据时,需要调用vcl_fetch函数,并且根据某种条

件判断该数据或资源是否缓存在本地,即执行deliver操 作;或者直接将该资源返回给客

户端,不缓存在本地,即执行hit_for_pass操作 最后,不管是从本地缓存中响应的数据

还是从后端原始服务器获取到的数据返回给客户端都需要调用vcl_deliver函数来完成。

正文:

这里我们使用一台物理机和三台虚拟机进行实验

主机:172.25.68.250

server1:172.25.68.1  (使用varnish工具实现CDN的节点集群)

server2 172.25.68.2 (充当后台的服务器)

server3 172.25.68.3 (充当后台的服务器)

在varnish的缓存原理简单分为以下两种:

当varnish上灭有用户想要请求数据的缓存时

--------------------------------------------------------

Client -> dns -> cdn -> server -> cdn -> cache -> Client

当varnish 上具有用户的缓存时

--------------------------------------------------------

Client ->dns ->cdn ->cache -> Client

一、对Vatnish进行软件的下载和相关服务的配置

1、进行varnish软件的安装

yum install varnish-*  -y         ###进行varnish相关软件的安装

2、进行varnish监听端口的设定

vim /etc/sysconfig/varnish         ###进行varnish监听端口的修改

3、进行主机安全限制文件的修改(保证流量大时,服务器可以正常工作)

打开文件的最大数:有如下关系:内核操作>操作系统>软件

内核允许的打开文件的最大数:

(1)、进行varnish打开文件数的查看

(2)、进行内存的修改,时内核打开的文件数大于varnish打开的软件数

(3)、进行主机安全的限制

vim /etc/security/limits.conf        ###进行主机安全文件的配置

4、默认配置文件的修改和服务的开启和服务端口是否开启

vim /etc/varnish.default.vcl                ###进行默认配置文件的编辑
/etc/init.d/varnish  start                  ###进行服务的开启
netstat  -tnlp                              ###进行端口的查看

二、在后台服务器进行相关的配置

在server2主机上进行httpd 软件的安装和服务的开启和默认发布文件的编辑

1、进行软件的安装和服务的启动

yum install httpd -y      ###进行httpd 软件的安装
/etc/init.d/httpd start   ###进行软件服务的开启

2、进行默认发布文件的编辑

vim /var/www/html/index.html      ###进行默认发布文件的编辑

三、在真机上进行相应的测试(判断varnish是否完成代理功能)

四、进行缓存是否名命中的查看

在server1中:

1、在配置文件中进行相应的设定进行服务的重新加载

vim /etc/varnish/default.vcl     ###进行配置文件的编辑
/etc/init.d/varnish   reload     ###进行varnish的重新加载

2、进行是否击中的测试

curl -I 172.25.68.1     ###进行是否击中的查看
varnishadm ban.url .*$  ###进行缓存的清除

当用户进行第一次访问时:没有缓存(可以看到没有进行击中)

当用户进行第二次访问时:此时具有缓存,(可以看到被击中)

3、在真机上进行本地解析的设定,查看使用域名是否击中的测试

vim /etc/hosts            ###进行本地解析的设定
curl -I www.westos.org    ###通过域名进行服务器的访问,查看是否击中

第一次进行访问时,没有缓存,没有击中:

进行第二次访问时,已经具有了缓存,结果击中

注意的是:缓存存在的时间为120s,我没可以在配置文件可以进行设定

我们可以通过varnishadm进行手动清除缓存

在varnish服务端(server1)进行缓存的清除,然后在客户端进行测试

varnishdam ban.url .*$  :清除所有的缓存

varnishdam ban.url /index.html    :清除页面的缓存

五、定义多个不同域名站点的后端服务器

1、进行Varnish配置文件的编辑

vim /etc/varnish/default.vcl     ###进行配置文件的编辑
/etc/init.d/varnish reload       ###进行服务的重新加载

2、在真机上进行本地解析的设定

3、在server3上进行apache软件的安装和默认发布文件的编辑

yum install httpd -y           ###进行apache软件的安装
vim /var/www/html/index.html   ###进行默认发布文件的编辑
/etc/init.d/httpd start        ###进行apache软件的启动

4、在真机上进行相关的测试:

当访问其他的页面时进行报错:

我们可以观察到:通过不同的域名进行访问时,varnish会根据不同的

域名访问不同的服务器

六、实现负载均衡的轮番

1、在Varnish配置文件中进行相关的设定

2、在server3进行相关的配置

(1)进行apache配置文件的修改

vim /etc/httpd/conf/httpd.conf    ###进行apache配置文件的编辑

(2)进行发布目录和文件的建立

mkdir /www   /bbs                 ###进行发布目录的建立
vim /www/index.html               ###进行发布文件的编辑
vim /bbs/index.html               ###进行发布文件的编辑

(3)进行服务的重启和Varnish服务的重新加载

/etc/init.d/httpd restart          ###进行服务的重启
/etc/init.d/varnish reload         ###进行服务的重新加载

3、在真机上进行相关的测试

通过测试我们可以看到:在主机进习www.westos.org时,实现负载均衡的轮询

,当访问bbs.westos.org时,访问指定的服务器的特定的资源,与配置文件所设定的

一致。

七、使用bansys.zip进行批量推送清除缓存

在server1中

1、进行相关软件的下载

2、进行压缩包的解压(这里我们不介绍解压过程)

unzip bansys.zip -d /var/www/html    ###进行压缩包的解压
ls /var/www/html     ###进行压缩包解压之后结果的查看

3、对配置文件进行编辑

vim /rvar/www/html/config.conf       ###进行配置文件的编辑

4、进行httpd服务端口的改变(因为varnish已经占用了80端口)

vim /etc/httpd/conf/httpd.conf         ###进行httpd配置文件的编辑

5、对varnish配置文件进行编辑

vim /etc/varnish/default.vcl           ###进行varnish配置文件的编辑

6、进行httpd服务的重启和varnish服务的重新加载

/etc/init.d/httpd    restart          ###进行httpd服务的重启
/etc/init.d/varnish   reload          ###进行服务的重新加载

7、进行测试

在真机的浏览器中:172.25.68.1:8080

(1)这里我们选择httpd进行推送,设定的为8080端口

推送内容为:.*$(用于缓存的清除)

查看缓存信息是否被清除:通过curl  www.westos.org 进行是否击中测定,

通过测试,可以看到缓存已经被清除

(2)如果选择talnet模式,则需要如下配置

telnet 模式需要关闭 varnish 服务管理端口的验证,

注释掉/etc/sysconfig/varnish 文件中的 “ -S ${VARNI

SH_SECRET_FILE}”这行,重启 varnish 服务即可

8、在真机上进行相关的测试

通过推送清除进行再次访问时,可以看到缓存已经被清除

Vanish搭建CDN的节点集群相关推荐

  1. docker-compose 搭建 nats-streaming 3节点集群

    nats-streaming-cluster Nats-Streaming Cluster By Docker Compose Nats-Streaming Cluster By Kubernetes ...

  2. 搭建Kubernetes多节点集群

    文章目录 1. 实验环境 2. 系统网络配置 3. 修改节点Hostname 4. 关闭防火墙.SeLinux.Swap分区 5. 设置docker和k8s的yum源 5.1 docker源的配置 5 ...

  3. hadoop 多节点集群_设置Apache Hadoop多节点集群

    hadoop 多节点集群 我们正在分享有关在基于Linux的机器(多节点)上安装Apache Hadoop的经验. 在这里,我们还将分享我们在各种故障排除方面的经验,并在将来进行更新. 用户创建和其他 ...

  4. 设置Apache Hadoop多节点集群

    我们正在分享有关在基于Linux的机器(多节点)上安装Apache Hadoop的经验. 在这里,我们还将分享我们在各种故障排除方面的经验,并在将来进行更新. 用户创建和其他配置步骤– 我们首先在每个 ...

  5. 【Docker系列】Docker Swarm 多节点集群

    三节点集群搭建 创建3节点swarm cluster的方法 https://labs.play-with-docker.com/ play with docker 网站, 优点是快速方便,缺点是环境不 ...

  6. SpringCloud 使用Docker搭建Consul节点集群

    一.Docker 环境Consul 集群搭建 1,准备工作,为后面要创建的容器准备consul数据卷 我们在linux 主机上任意一个目录下创建三个不同的目录,为后面创建容器时创建不同的数据容器卷使用 ...

  7. ActiveMQ的多节点集群

    概述 基于zookeeper和LevelDB搭建ActiveMQ集群. 集群仅提供主备方式的高可用集群功能,避免单点故障. 集群实现方案 基于shareFileSystem共享文件系统(KahaDB) ...

  8. Ambari安装之部署单节点集群

    前期博客 大数据领域两大最主流集群管理工具Ambari和Cloudera Manger Ambari架构原理 Ambari安装之Ambari安装前准备(CentOS6.5)(一) Ambari安装之部 ...

  9. 利用kubeadm安装kubernetes1.21.2单节点集群

    利用kubeadm安装kubernetes集群 环境: 1.关闭防火墙, 2.配置好/etc/hosts k8s-master:192.168.248.128 k8s-node01: 192.168. ...

最新文章

  1. 1.2、什么是函数?什么是方法
  2. python库学习笔记——分组计算利器:pandas中的groupby技术
  3. CG CTF WEB 签到2
  4. php 导出csv设置列宽度,php数据库导出excel表格数据-php从数据库导出csv格式的Excel表格是,字段本身就......
  5. Sencha Touch 给 Panel 注册点击事件(tap)和其他touchstart,touchend 等事件
  6. 七年级上册计算机教学反思,七年级信息技术上册教学反思范文.docx
  7. 怎么把竖线去掉_3小时完成一个logo设计,我是怎么做到的?
  8. javascript中定时器interval的使用
  9. 20世纪50年代开始,数字技术出现,数字计算机开始代替模拟计算机,我们从电气时代逐渐走到了信息时代,电脑重塑了社会的架构与价值。...
  10. 一种基于memcache或redis缓存架构的验证码
  11. [20180423]表空间闪回与snapshot standby
  12. VS2015 更换exe的图标
  13. 基于SSM 的图书馆管理系统
  14. 吞食天地2重制版巫妖王panny版存档_11年前的冷饭—Nintendo 任天堂 Switch《宵星传奇 重制版》评测...
  15. python图像差分法目标检测_OpenCV实现帧差法检测运动目标
  16. LeCun、Bengio、Hinton三巨头曾合体,Nature发文综述深度学习(论文精华)
  17. JavaScript实现解析xml文件数据
  18. dell台式计算机恢复出厂设置,戴尔电脑如何恢复出厂设置
  19. vue 高德获取当前经纬度
  20. Win10安装了Office右键没有新建Word,excel,PPT等选项解决方法

热门文章

  1. 使用超临界二氧化碳进行精密表面清洁
  2. [移动硬盘]笔记本移动硬盘盒选择
  3. 计算机的串口波特率,什么是波特率_波特率9600是什么意思_串口通信为什么要设置波特率?...
  4. 安鸾渗透telnet暴力破解
  5. 【解禁】钉钉直播回放下载
  6. C语言if-else逻辑——想通了,再碰到就是小菜一碟!
  7. 会计学原理学习笔记——第三章——账户与复式记账(3.2资金筹集业务的核算——借入资本的核算)
  8. 自选股同步:文华财经、同花顺、大智慧、通达信
  9. 首次发布!《5G移动通信基站电磁辐射环境监测方法》征求意见
  10. 升级版剪刀石头布(表格的处理方法)