企业部分--Varnish反向代理

一、Varnish 是什么??

Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。

二、Varnish与Squid

相同点:Varnish是高性能开源的反向代理服务器和HTTP缓存服务器,Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存
不同点:Varnish和Squid是从硬盘读取缓存的数据,而Varnish把数据存放在内存中,直接从读取内存,避免了频繁在内存、磁盘中交换文件,所以Varnish要相对更高效,但也有缺点,内存中的缓存在服务器重启后会丢失

三、Varnish 如何工作

在这里插入图片描述

step1.初始化过程

Varnish 的master进程负责启动工作,master进程读取配置文件,根据指定的空间大小(例如管理员分配了2G内存)来创建存储空间,创建并管理child进程
child进程来处理后续任务,它会分配一些线程来执行不同的工作,例如
>接受http请求
>为缓存对象分配存储空间
>清除过期缓存对象
>释放空间 ;碎片整理

step2:http请求处理过程

有一个专门负责接收http请求的线程,一直监听请求端口,当有请求过来时,负责唤起一个工作线程来处理请求
工作线程会分析http请求的uri,知道了这个请求想要什么,就到缓存中查找是否有这个对象
如果有,就把缓存对象直接返回给用户
如果没有,会把请求转给后端服务器处理,并等待结果,工作线程从后端得到结果内容后,先把内容作为一个缓存对象保存到缓存空间(以备下次请求这个对象时快速响应),然后再把内容返回给用户

step3:分配缓存过程

有一个对象需要缓存时,根据这个对象的大小,到空闲缓存区中查找大小最适合的空闲块,找到后就把这个对象放进去
如果这个对象没有填满这个空闲块,就把剩余的空间做为一个新的空闲块
如果空闲缓存区中没地方了,就要先删除一部分缓存来腾出地方,删除是根据最近最少使用原则

step4:释放缓存过程

有一个线程来负责缓存的释放工作,他定期检查缓存中所有对象的生存周期,如果某个对象在指定的时间段内没有被访问,就把这个对象删除,释放其占用的缓存空间
释放空间后,检查一下临近的内存空间是否是空闲的,如果是,就整合为一个更大的空闲块,实现空间碎片的整理

四、搭建简单的varnish服务。

varnish服务器:node1
1.安装varnishi
yum install varnish-libs-3.0.5-1.el6.x86_64.rpm varnish-3.0.5-1.el6.x86_64.rpm ##必须同时安装,他们之间有依赖性

安装的包不在yum源内,需要手动把安装包移动到虚拟机上。

2.配置varnish
vim /etc/security/limits.conf         ##修改系统极限文件

编辑:

    varnish         -       nofile          131072    \
    varnish         -       memlock         82000     -          Varnish运行的要求,
    varnish         -       nproc           unlimited /

在这里插入图片描述

vim /etc/sysconfig/varnish      ##修改Varnish配置文件

编辑:

VARNISH_LISTEN_PORT=80            ##改监听端口为80(apache)端口

在这里插入图片描述

vim /etc/varnish/default.vcl

在这里插入图片描述

ulimit -a               ##查看系统限制
3.开启varnish
/etc/init.d/varnish start
web服务器(node2)

1.安装http

2./etc/init.d/httpd start

3.vim /var/www/html/index.html
在这里插入图片描述

测试:

在这里插入图片描述
在主机上curl varnish服务器,显示的是web服务器(node2)的页面。反向解析成功。

五、Varnish其他拓展

1.查看缓存命中:

vim /etc/varnish/default.vcl
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
}
else {
set resp.http.X-Cache = "MISS";
}
return(deliver);
}

在这里插入图片描述

测试:
/etc/init.d/varnish reload                         ##varnish服务修改之后reload重载,restart会使其丢失资料
varnishadm   ban.url    .*$						   ##清理缓存

在这里插入图片描述
在这里插入图片描述
第一次MISS因为没有缓存,第二次HIT命中成功。

########################################

2.定义不同域名站点的后台服务器

将不同的站点服务隔开。
首先,在node3上下载apache服务。配置node3服务器的发布文件为server3。

varnishi服务端:

在这里插入图片描述

真机(测试端)

编写地址解析。
172.25.64.1 www.westos.org westos.org bbs.westos.org dd.org

测试

在这里插入图片描述

3.负载均衡—>轮询

varnish服务器(node1):
vim  /etc/varnish/default.vcl

在这里插入图片描述

director lb round-robin {
{  .backend = web1;  }
{  .backend = web2;  }
}
    #把多个后端聚合为一个组,并检测后端健康状况
return (pass);           #为了测试方便,不进行缓存。

在这里插入图片描述

web服务器(node3):

cd /var/www/html/
mkdir www
mkdir bbs
cd www
vim index.html
在这里插入图片描述
cd bbs
vim index.html
在这里插入图片描述
重启apache。

测试

在这里插入图片描述
##################################################

3.CDN推送管理

step1

在虚拟机node1上安装unzip php httpd

step2

解压bansys.zip到/var/www/html/下。

step3

vim config.php
在这里插入图片描述

step4
vim /etc/httpd/conf/httpd.conf
 136 Listen 8080                   ###因为80端口已占用
vim /etc/varnish/default.vcl

在这里插入图片描述

重启apache,重载varnish

step5测试:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值