varnish基础入门使用

varnish:缓存、加速器,反向HTTP代理

varnish通过可以基于文件系统接口进行访问的共享内在区域来记录日志(shared memory log),共享内存日志大小默认一般为90MB,

分为两部分:前一部分为计数器,后一部分请求相关的数据

管理进程:编译VCL并应用新配置;监控vanish;初始化varnish;CLI接口;

Child/cache:

Acceptor:接收新的连接请求;

worker threads:处理用户请求;

Expiry:清理缓存中的过期对象;

vcl: Varnish Configuration Language

缓存策略配置接口;

基于“域”的简单编程语言;

varnish如何存储缓存对象:

file: 单个文件;不支持持久机制;

malloc: 内存;使用malloc()库调用在varnish启动时向内在申请指定大小的空间

persistent:基于文件的持久存储;

malloc-syntax: malloc[,size]

file-syntax: file[,path[,size[,granularity]]]

安装:yum install varnish epel源

配置文件:

配置进程相关参数:/etc/varnish/varnish.params

配置缓存功能:/etc/varnish/default.vcl

命令行工具:varnishadm -S /etc/varnish/secret -T IP:PORT  6082

缓存处理的步骤:接收请求 --> 解析请求 (提取请求的URL及各种首部)--> 查询缓存 --> 新鲜度检测 --> 创建响应报文 --> 发送响应 --> 记录日志

请求处理流程:

(1)请求的为可缓存:

a.命中:通过本地缓存响应

b.未命中:到后端服务器取得相应内容;

可缓存对象:先缓存再响应

缓存:定义缓存时间;自定义缓存键

不可缓存:不缓存直接响应

(2)请求的为不可缓存:直接到后端服务器取得相应内容

配置vcl使用:

1.定义在vcl_deliver中,向响应给客户端的报文添加一个自定义首部X-Cache;

if (obj.hits>0) {

set resp.http.X-Cache = "HIT"; "HIT via" + "   # " + server.ip;显示后端响应的服务器IP

} else {

set resp.http.X-Cahce = "MISS";

}

2.强制对某资源的请求,不检查缓存#以login、admin开头的不予缓存;

vcl: backend, backend的调用,健康状态检测的定义,负载均衡的实现,根据资源类型不同完成分发,控制哪些内容不查或查询缓存

3.backend server定义

backend name {

.attribute = "value";

}

常用选项:

.host: BE主机的IP;

.port:BE主机监听的PORT;

.probe: 对BE做健康状态检测;

.max_connections:并连接最大数量;

4.backend server的健康状态检查定义:

.url: 判定BE健康与否要请求的url;

.expected_response:期望响应状态码;默认为200;

.interval = 1s;间隔多长时间

.window = 8;基于最近多少次探测来做健康判断

.threadhold = 4;基于多少次探测成功多少次

.timeout = 2s;超时时间

例如:多个backend server基于不同的资源类型请求来调度,并做健康状态检测,实现动静分离

5.实现负载均衡:

import directors; #加载负载均衡

sub vcl_init {

new mycluster = directors.round_robin(); 定义负载均衡器名称:new NAME ,指明调度方法

mycluster.add_backend(websrv1);

mycluster.add_backend(websrv2);

}

vcl_recv {

set req.backend_hint = mycluster.backend();

}

调度算法:fallback, random, round_robin, hash

原文地址:http://blog.51cto.com/12580678/2150227

时间: 2024-11-08 21:46:51

varnish基础入门使用的相关文章

WEB缓存系统之varnish基础入门(一)

前文我们聊了下http协议里的缓存控制机制以及varnish架构组件介绍,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12620538.html:今天我们来聊一下怎样配置使用varnish: 前边我们说到过varnish有两个配置文件,一个是/etc/varnish/varnish.params,这个配置文件主要是定义varnishd主控进程的一些运行时参数以及定义varnishd监听在那个套接字上,以及连接varnish使用的密钥文件:另外一个配置文件

Android基础入门教程——10.12 传感器专题(3)——加速度-陀螺仪传感器

Android基础入门教程--10.12 传感器专题(3)--加速度/陀螺仪传感器 标签(空格分隔): Android基础入门教程 本节引言: 本节继续来扣Android中的传感器,本节带来的是加速度传感器(Accelerometer sensor)以及 陀螺仪传感器(Gyroscope sensor),和上一节的方向传感器一样有着x,y,z 三个轴, 还是要说一点:x,y轴的坐标要和绘图那里的x,y轴区分开来!传感器的是以左下角 为原点的!x向右,y向上!好的,带着我们的套路来学本节的传感器吧

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来

Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2

Android基础入门教程--8.1.2 Android中的13种Drawable小结 Part 2 标签(空格分隔): Android基础入门教程 本节引言: 本节我们继续来学习Android中的Drawable资源,上一节我们学习了: ColorDrawable:NinePatchDrawable: ShapeDrawable:GradientDrawable!这四个Drawable~ 而本节我们继续来学习接下来的五个Drawable,他们分别是: BitmapDrawable:Insert

Android基础入门教程——2.3.12 Date & Time组件(下)

Android基础入门教程--2.3.12 Date & Time组件(下) 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来继续学习Android系统给我们提供的几个原生的Date & Time组件,他们分别是: DatePicker(日期选择器),TimePicker(时间选择器),CalendarView(日期视图),好吧, 其实一开始让我扣这几个玩意我是拒绝的,因为在我的印象里,他们是这样的: 简直把我丑哭了,有木有,终于知道为什么那么多人喜欢自定义这种类型的

Android基础入门教程——2.1 View与ViewGroup的概念

Android基础入门教程--2.1 View与ViewGroup的概念 标签(空格分隔): Android基础入门教程 本节引言: 告别了第一章,迎来第二章--Android中的UI(User Interface)组件的详解, 而本节我们要学习的是所有控件的父类View和ViewGroup类!突发奇想,直接翻译官方文档对 这两个东西的介绍吧,对了,天朝原因,google上不去,Android developer上不去,我们可以 改hosts或者用vpn代理,当然也可以像笔者一样使用国内的API

DAX基础入门 – 30分钟从SQL到DAX — PowerBI 利器

看到漂漂亮亮的PowerBI报表,手痒痒怎么办?! 有没有面对着稀奇古怪的DAX而感到有点丈八金刚摸不着头脑或者干瞪眼?! 有没有想得到某个值想不出来DAX怎么写而直跳脚!? 看完这篇文章,你会恍然大悟,捂脸偷笑.呼呼呼~ 前言: 这篇文章对于具有一点SQL查询基础人会十分容易理解,譬如:掌握SELECT,SUM,GROUP BY等. 注:此文不涉及到Filter Context(筛选上下文)的介绍. 正文: 对于对SQL有一定了解的人来说,咋看DAX,怎么都不习惯. 但是,如果理解以下几个后,

Linux 基础入门----推荐课程

Linux 基础入门课程:https://www.shiyanlou.com/courses/1 很好的一门Linux基础课,精炼.简洁!推荐! 课程内容: 第1节 Linux 系统简介 https://www.shiyanlou.com/courses/1/labs/1/document 第2节 基本概念及操作 https://www.shiyanlou.com/courses/1/labs/2/document 第3节 用户及文件权限管理 https://www.shiyanlou.com/

从零基础入门JavaScript(1)

从零基础入门JavaScript(1) 1.1  Javascript的简史 1995年的时候   由网景公司开发的,当时的名字叫livescript    为了推广自己的livescript,搭了java顺风车,改名为javascript 与此同时,     微软因此在自身的浏览器里,也推出了自己的脚本语言 jscript 1997年时候,  由ECMA(欧洲计算机制造商协会)出面,推出了一套javascript的规范,Ecmascript ,规范提出js由三部分组成 JS的组成: ECMAS