分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

varnish实现web加速缓存

发布时间:2023-09-06 02:15责任编辑:彭小芳关键词:缓存

一.Varnish简述

varnish是一款高性能且开源的方向代理服务器和HTTP加速器,它的开发者poul-Henning kamp是FreeBSD 核心的开发人员之一。varnish采用全新的软件体系机构,和现在的硬件体系配合紧密,varnish是一个轻量级的cache和反向代理软件。先进的设计理念和成熟的设计框架是varnish的主要特点。挪威最大的在线报纸 Verdens Gang 使用3台Varnish服务器 代替了原来的12台Squid服务器,结果性能比以前更好。

二.varnish的特点

1、基于内存进行缓存,重启后数据将消失。

2、利用虚拟内存方式,I\O性能好。

3、支持设置0~60秒的精确缓存时间。

4、VCL配置管理比较灵活。

5、具有强大的管理功能,例如top、stat、admin、list 等。

6、状态机设计巧妙、结构清晰。

7、利用二叉堆管理缓存文件,可达到积极删除目的。

三.varnish处理缓存的过程

(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或 Pipe,或者进入 Lookup(本地查询)。

(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进 入 miss 状态。

(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。

(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地 的存储。

(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。

四.varnih的使用

实验所需环境:三台配置好网络的虚拟机,分别设置主机名为server1、server2、server3

1.安装服务

在server1中打开官网,下载rpm包进行安装

yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm -y

2.配置服务

编辑系统配置文件,文件的参数需要根据实际的系统内核及系统还有相关硬件设定

vim /etc/security/limits.conf写入:varnish ?????????- ????nofile ?????6555 ??????##最大文件数varnish ?????????- ????memlock ????82000 ?????##最大内存空间varnish ?????????- ????nproc ??????unlimited ?##子线程数

编辑服务配置文件

vim /etc/sysconfig/varnish ?????##varnish的配置文件,配置 varnish 服务端口VARNISH_LISTEN_PORT=80 ??    ##varnish监听端口
vim /etc/varnish/default.vcl ???##配置一个后端服务器,缓存配置backend default {.host = "172.25.3.2";      ##host指定要缓存的后端服务器地址.port = "80";}

3.启动服务

/etc/init.d/varnish start

4.测试

在server2中配置好http服务,并编写一个网页文件index.html,内容任意

在真机中打开浏览器输入server1的IP地址,可以看到server2中的发布页面内容

5.查看缓存命中情况

在varnish服务器上

vim default.vcl 12 sub vcl_deliver {13 if (obj.hits > 0) {14 set resp.http.X-Cache = "HIT from westos cache";    #命中显示15 }16 else {17 set resp.http.X-Cache = "MISS from westos cache";    ##没命中显示18 }19 return (deliver);20 }/etc/init.d/varnish reload   #varnish支持热插拔

6.清除缓存

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

varnishadm ban.url /index.html    ##清除 index.html 页面缓存

varnishadm ban.url /admin/$      清除 admin 目录缓存

五.varnish的扩展使用

1多个不同域名对应后端服务器

在varnish服务器上

vim default.vc backend web1 {.host = "172.25.3.2";.port = "80";}backend web2 {.host = "172.25.3.3";.port = "80";}sub vcl_recv {if (req.http.host ~ "^(www.)?westos.org") { #当域名为以www.westso.org开头或westos.org时去web1主机缓存set req.http.host = "www.westos.org";set req.backend = web1;} elsif (req.http.host ~ "^bbs.westos.org") { #当域名以bbs.westos.org开头 时去web2主机缓存set req.backend = web2;} else {error 404 "westos cache";}}/etc/init.d/varnish reload ??###重新加载

2负载均衡

VCL文件中可以把多个 backends 聚合成一个组,这些组被叫做 director,当组里一个 backend 挂掉后,可以选择另一个健康的 backend。VCL 有多种 director,不同的 director 采用不同的算法选择 backend,主要有以下几种: ..Random director 会根据所设置的权值(weight)来选择 backend,.retries 参数表示尝试找到一个 backend 的最大次数,.weight 参数表示权值 ..Round-robin director 在选择 backend 时,会采用循环的方式依次选择。

在server3中配置好http服务器,并建立两个apache虚拟主机,注意不同的虚拟机的发布目录不能设置为同一个目录

vim /etc/httpd/conf/httpd.conf #配置虚拟主机NameVirtualHost *:80       ##去掉该行的注释<VirtualHost *:80>DocumentRoot /var/www/htmlServerName www.westos.org</VirtualHost><VirtualHost *:80>DocumentRoot /wwwServerName bbs.westos.org</VirtualHost>

在server1中

vim default.vc #这里用round-robin做实验backend web1 {.host = "172.25.3.2";.port = "80";}backend web2 {.host = "172.25.3.3";.port = "80";}director westos round-robin { #建立一个名为lb的组,实现web1和web2之间的轮询{ .backend = web1; }{ .backend = web2; }}sub vcl_recv {if (req.http.host ~ "^(www.)?westos.org") { #当客户端搜索符合条件的域名时,用westos组实现轮询set req.http.host = "www.westos.org";set req.backend = westos;return (pass); ?} elsif (req.http.host ~ "^bbs.westos.org") {set req.backend = web2;} else {error 404 "westos cache";}}/etc.init.d/varnish reload

varnish实现web加速缓存

原文地址:https://www.cnblogs.com/ChairmanYSL/p/9691382.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved