作者:彼岸花芬芳 | 来源:互联网 | 2023-02-02 12:01
1.varnish主机的配置下载varnish包#安装varnishyuminstallvarnish-3.0.5-1.el6.x86_64.rpmvarnish-libs-3.
1.varnish主机的配置
下载varnish包
# 安装varnish
yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm -y
代理缓存apache服务,配置代理端口也为80
vim /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80
系统配置要求,打开文件最大个数
#然后配置系统文件,在最后加入以下参数,就是
vim /etc/security/limits.conf
#配置真实服务器
vim /etc/varnish/default.vcl
#启动varnish
2.测试
在准备一台server2安装http服务并启动
在真机访问server1得到结果是server2标示成功
测试命中
server1重配置如下,并清理varnish缓存
在真机继续测试,发现第一次没有命中vanish,之后结果都会命中
结论:varnish在http请求处理过程有一个负责接收http请求的线程,一直监听请求端口,当有请求过来时,负责唤起一个工作线程来处理请求。工作线程会分析http请求的uri,知道了这个请求想要什么,就到缓存中查找是否有这个对象。如果有,就把缓存对象直接返回给用户;如果没有,会把请求转给后端服务器处理,并等待结果。工作线程从后端得到结果内容后,先把内容作为一个缓存对象保存到缓存空间(以备下次请求这个对象时快速响应),然后再把内容返回给用户。
3.配置如下,varnish使用内存缓存,所以建议真实环境重修改配置后通过reload重新加载配置,而不是restart重新启动
测试结果,先配置本地解析,同样在准备一台server3与server2配置相同
vim /etc/hosts
#加入以下解析
172.25.70.1 www.westos.org bbs.westos.org
4.轮询配置这里通过轮询算法两台服务器的轮询,然后加入return(pass);这里取消缓存,否则每次都访问缓存轮询结果是无法看到的
测试结果
当一台服务器无法正常提供服务是,不会出现错误,但是工作压力都增加到其他的服务器,只要服务器恢复正常,又恢复到原来的状态,varnish对于后端轮询的服务器有状态判定
5.cdn推送界面搭建
下载所需软将,以及php编写的包
yum install unzip httpd php -y
解压到http的默认发布目录
配置config.php如下
修改httpd服务端口为8080,因为varnish在占用80端口,启动httpd服务
varnish配置如下,然后reload
最后测试,在浏览器中输入172.25.254.1:8080,选择HTTP推送模式,输入 .*$ 就可一清理缓存