web缓存服务器varnish-4.1.6的部署及配置详解

1.安装varnish4.1.6
安装依赖

yum install -y autoconf automake jemalloc-devel libedit-devel libtool ncurses-devel pcre-devel pkgconfig python-docutils python-sphinx

安装varnish yum仓库

# rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.1.el7.rpm
# yum install varnish -y

2.设置Varnish参数

# grep "^[a-Z]" /etc/varnish/varnish.params
RELOAD_VCL=1    # 重新启动服务时是否重新读取VCL并重新编译
VARNISH_VCL_CONF=/etc/varnish/default.vcl    # 默认读取的VCL文件
VARNISH_LISTEN_PORT=80    # 设置监听的端口(默认监听6081端口)
VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1    # 管理接口监听的地址
VARNISH_ADMIN_LISTEN_PORT=6082    # 管理接口监听的端口
VARNISH_SECRET_FILE=/etc/varnish/secret    # 使用的密钥文件
VARNISH_STORAGE="malloc,256M"    # 存储文件的大小
VARNISH_USER=varnish    # varnish默认用户
VARNISH_GROUP=varnish    # varnish默认组

定义VCL backend

# cat /etc/varnish/default.vcl |grep -v "#"

vcl 4.0;

backend web01 {
    .host = "192.168.3.12";
    .port = "80";
}

启动varnish
# systemctl start varnish
# systemctl enable varnish

3.定义VCL 后端的集合 director
VCL 可以把多个 backends 聚合成一个组,这些组被叫做 director,这样可以增强性能和弹力,当组里一个 backend 挂掉后,可以选择另一个健康的 backend。VCL 有多种 director,不同的 director 采用不同的算法选择 backend,主要有以下几种:
a. The random director
Random director 会根据所设置的权值(weight)来选择 backend,.retries 参数表示尝试找到一个 backend 的最大次数,.weight 参数表示权值
b. The round-robin director
Round-robin director 在选择 backend 时,会采用循环的方式依次选择。
c. The client director
Client director 根据 client.identity 来选择 backend,您可以设置 client.identity 的值为 session cookie 来标识 backend。

# vim /etc/varnish/default.vcl
vcl 4.0;                    # 指明varnish版本
backend web01 {                    # 定义后端服务器1
    .host = "192.168.3.12";
    .port = "80";
}

backend web02 {                    # 定义后端服务器2
    .host = "192.168.3.13";
    .port = "80";
}

import directors;                # 定义directors
sub vcl_init {                    # 定义vcl_init子例程
        new cluster1 = directors.round_robin();
        cluster1.add_backend(web01);
        cluster1.add_backend(web02);
}

sub vcl_recv {                    # 定义vcl_recv子例程
        set req.backend_hint = cluster1.backend(); #指定后端directors
}

详情:https://www.varnish-cache.org/docs/4.1/reference/vmod_directors.generated.html#object-hash

4.设置响应是否命中

sub vcl_deliver {                   # 定义子例程
        if (obj.hits > 0) {
                set resp.http.X-Cache = "HIT via" + " " + server.ip;
        } else {
                set resp.http.X-Cache = "MISS via" + " " + server.ip;
        }             # 判断如果命中就在http响应首部设置X-Cache为HIT,否则就在http响应首部设置X-Cache为MISS。
}

然后再到页面上访问看一下是否已经生效,可以看到第一次访问的时候是MISS第二次的时候就是HIT了

5.指定某些文件不能查缓存

sub vcl_recv {
        if (req.url ~ "^/test.html$") {
                return(pass);
        }            ##定义请求的文件中如果匹配test.html就pass,不查缓存
}

通过测试可以看到连续访问http://192.168.3.198/test.html都是MISS

6.进行健康检查
Varnish可以检测后端主机的健康状态,在判定后端主机失效时能自动将其从可用后端主机列表中移除,而一旦其重新变得可用还可以自动将其设定为可用。为了避免误判,Varnish在探测后端主机的健康状态发生转变时(比如某次探测时某后端主机突然成为不可用状态),通常需要连续执行几次探测均为新状态才将其标记为转换后的状态。
每个后端服务器当前探测的健康状态探测方法通过.probe进行设定,其结果可由req.backend.healthy变量获取,也可通过varnishlog中的Backend_health查看或varnishadm的debug.health查看。

backend web01 {
    .host = "192.168.10.132";
    .port = "80";
    .probe = {
        .url = "/";            # 指定哪个url需要varnish请求
        .timeout = 2s;         # 指定超时等待时间
        .interval = 5s;         # 指定检查时间间隔
        .window = 5;            # 最多尝试5次
        .threshold = 3;          # 至少有3次成功就宣告backend健康
    }
}

backend web02 {
    .host = "192.168.3.13";
    .port = "80";
    .probe = {
        .url = "/";
        .timeout = 2s;
        .interval = 5s;
        .window = 5;
        .threshold = 3;
    }
}

7.设定缓存时长

sub vcl_backend_response {
    if (bereq.url ~ "\.(jpg|jpeg|gif|png)$") {
        set beresp.ttl = 2h;
    }                 # 如果url是以图片格式结尾的缓存2小时
    if (bereq.url ~ "\.(html|css|js|jsp)$") {
        set beresp.ttl = 30m;
    }                  # 如果url是以html|css|js|jsp结尾的缓存30分钟
}
时间: 2024-08-01 22:52:27

web缓存服务器varnish-4.1.6的部署及配置详解的相关文章

第二十天 TCP 及socket通信原理、http协议及web服务、httpd核心配置详解

一.TCP及socket通信原理详解 二.http协议及web服务原理(一) 三.http协议及web服务原理(二) 四.httpd核心配置详解 1.tcp.udp是一种传输协议,实现进程地址标记,套接字是一个虚拟设备,用来表明主机上的某个进程      众所周知:0-1023:管理员才有权限使用,永久地分配给某应用使用(由IANA分配)      注册端口:1024-41951:只有一部分被注册,分配原则上非特别严格.      动态端口或私有端口:41952-65535:由内核分配临时端口,

缓存服务器varnish概念篇

一.Varnish 简介 Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好. Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已经复杂许多.在1975年时,储存媒介只有两种:内存与硬盘.但现在计算机系统的内存除了主存外,还包括了CPU内的L1.L2,甚至有L3快取.硬盘上也有自己的快取装置,因此Squid Cac

web缓存及varnish 使用基础

Web缓存及varnish 使用基础 ================================================================================ Web Page Cache:  1.介绍 ★概念: 缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找.由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行. ★程序的运行具有局部性特征: 时

缓存服务器varnish实践篇

一.实验环境 服务器 IP地址 系统版本 varnish服务器 172.16.8.1 Centos6.5 web1服务器 172.16.8.5:81 Centos6.5 web2服务器 172.16.8.5:82 Centos6.5 img1服务器 172.16.8.5:83 Centos6.5 img2服务器 172.16.8.5:84 Centos6.5 php1服务器 172.16.8.5:85 Centos6.5 php2服务器 172.16.8.5:86 Centos6.5 二.安装v

高性能缓存服务器Varnish架构配置

Varnish跟Squid都是一款内容加速缓存服务器,我们可以使用它们来对我们的网页内容进行缓存,以此来从某个方面提高用户体验度,提升网站整体的抗压能力. 目前自建的CDN中,有很多都是基于Squid.Varnish等相关缓存软件,经过内部的二次开发实现了更好的内容加速及管理. 那今天我们一起来学习一下Varnish简单的搭建及日常的维护,深入的东西后期分享,跟大家一起来交流.这里直接上Shell脚本自动初始化并安装: #!/bin/sh #auto install varnish #2014-

缓存varnish的管理及配置详解

一 工作原理 在当前主流的Web服务架构体系中,Cache担任着越来越重要的作用.常见的基于浏览器的C/S架构,Web Cache更是节约服务器资源的关键.而最近几年由FreeBSD创始人之一Kamp开发的varnish更是一个不可多得的Web Cache Server.严格意义上说,Varnish是一个高性能的反向代理软件,只不过与其出色的缓存功能相比,企业更愿意使用其搭建缓存服务器.同时,由于其工作在Web Server的前端,有一部分企业已经在生产环境中使用其作为旧版本的squid的替代方

缓存varnish配置详解

一 工作原理 在当前主流的Web服务架构体系中,Cache担任着越来越重要的作用.常见的基于浏览器的C/S架构,Web Cache更是节约服务器资源的关键.而最近几年由FreeBSD创始人之一Kamp开发的varnish更是一个不可多得的Web Cache Server.严格意义上说,Varnish是一个高性能的反向代理软件,只不过与其出色的缓存功能相比,企业更愿意使用其搭建缓存服务器.同时,由于其工作在Web Server的前端,有一部分企业已经在生产环境中使用其作为旧版本的squid的替代方

varnish安装及配置详解

varnish系统架构: varnish主要运行两个进程:Management进程和Child进程(也叫Cache进程). Management进程主要实现应用新的配置.编译VCL.监控varnish.初始化varnish以及提供一个命令行接口等.Management进程会每隔几秒钟探测一下Child进程以判断其是否正常运行,如果在指定的时长内未得到Child进程的回应,Management将会重启此Child进程. Child进程包含多种类型的线程,常见的如:Acceptor线程:接收新的连接

web服务之httpd-2.2配置详解01

本文旨在复习httpd2.2常用配置.复习http协议相关知识.httpd2.2配置文件相关配置介绍.配置httpd的身份验证.配置httpd虚拟主机 等等. 知识储备: http协议知多少? http协议: HTTP:hyper text transfer protocol,超文本传输协议,是互联网上应用最为广泛的一种网络协议.HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准.通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接.HTTP