欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

varnish部署

程序员文章站 2022-07-12 18:15:05
...

CDN简介

CDN(Content Delivery Network)是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需 内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
搭建CDN系统可以选择3种主流方案:
1. squid 2. varnish 3. Nginx+memcache


Varnish简介

Varnish是一款高性能的开源HTTP加速器,Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存。 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能优越于Squid

Varnish工作原理图

varnish部署


VCL (Varnish Configuration Language)处理流程图

varnish部署

处理过程大致分为如下几个步骤:

(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。


加速工作过程

工作流程大致如下:

当varnish上没有缓存时:
varnish部署
当varnish上有缓存数据的时候:
varnish部署


实验环境

三台虚拟机+一台真实主机

主机名

IP

服务

server1

172.25.7.1

Varnish

server2

172.25.7.2

Apache

server3

172.25.7.3

Apache

foundation7

172.25.7.250

Client

1,下载软件安装软件,

varnish部署

2.修改/etc/sysconfig/varnish 修改监听端口号

varnish部署

3.修改配置文件

  1.内核打开最大文件数

varnish部署

  2.修改varnish配置最大打开文件数小于98866

varnish部署

3.系统内存空间和线乘数

varnish部署

3.vim  /etc/security/limits.conf

varnish部署

4.启动varnish服务,/etc/init.d/varnish start

varnish部署

1.server2上面操作

yum install httpd -y

/etc/init.d/httpd start

编辑apache默认文件

varnish部署

server 1 上面指定监听服务器

vim /etc/varnish/deafult.vcl

varnish部署

/etc/init.d/varnish reload

在主机上面测试

varnish部署

2.命中缓存函数

1.vim /etc/varnish/default.vcl

backend default {
  .host = "172.25.81.12";
  .port = "80";
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}

varnish部署

2.reload服务

varnish部署

3.编写主机hosts文件

varnish部署

4.测试。第一不命中,后续全部命中

varnish部署

3.

varnishadm ban.url .*$         ##清除所有
varnishadm ban.url /index.html ##清除 index.html 页面缓存
varnishadm ban.url /admin/$    ##清除 admin 目录缓存

在server1上面清除之后在主机上面测试

varnish部署

3.设置varnish访问不同ip web服务

  1.vim /etc/varnish/default.vcl(修改后reload服务)

varnish部署

sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = web1;
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}

 

varnish部署

2.测试

varnish部署

 

4设置负载均衡

server1

vim /etc/varnish/default.vcl

backend web1 {
.host = "172.25.81.12";
.port = "80";
}
backend web2 {
.host = "172.25.81.13";
.port = "80";
}
director linux round-robin {
{.backend = web1;}
{.backend = web2;}
}

sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = linux;
return (pass);
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {
error 404 "westos cache";
}
}

varnish部署

server3 WEB 虚拟机设置

[aaa@qq.com ~]# mkdir /www1
[aaa@qq.com ~]# cd /www1/
[aaa@qq.com www1]# vim index.html

varnish部署 

varnish部署

测试

varnish部署

 

 

 

 

 

上一篇: aws 部署

下一篇: wordpress部署