varnish部署
CDN简介
CDN(Content Delivery Network)是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需 内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
搭建CDN系统可以选择3种主流方案:
1. squid 2. varnish 3. Nginx+memcache
Varnish是一款高性能的开源HTTP加速器,Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存。 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能优越于Squid
VCL (Varnish Configuration Language)处理流程图
处理过程大致分为如下几个步骤:
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。
工作流程大致如下:
当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,下载软件安装软件,
2.修改/etc/sysconfig/varnish 修改监听端口号
3.修改配置文件
1.内核打开最大文件数
2.修改varnish配置最大打开文件数小于98866
3.系统内存空间和线乘数
3.vim /etc/security/limits.conf
4.启动varnish服务,/etc/init.d/varnish start
1.server2上面操作
yum install httpd -y
/etc/init.d/httpd start
编辑apache默认文件
server 1 上面指定监听服务器
vim /etc/varnish/deafult.vcl
/etc/init.d/varnish reload
在主机上面测试
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);
}
2.reload服务
3.编写主机hosts文件
4.测试。第一不命中,后续全部命中
3.
varnishadm ban.url .*$ ##清除所有
varnishadm ban.url /index.html ##清除 index.html 页面缓存
varnishadm ban.url /admin/$ ##清除 admin 目录缓存
在server1上面清除之后在主机上面测试
3.设置varnish访问不同ip web服务
1.vim /etc/varnish/default.vcl(修改后reload服务)
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";
}
}
2.测试
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";
}
}
server3 WEB 虚拟机设置
[aaa@qq.com ~]# mkdir /www1
[aaa@qq.com ~]# cd /www1/
[aaa@qq.com www1]# vim index.html
测试
上一篇: aws 部署
下一篇: wordpress部署
推荐阅读
-
Intellij IDEA 热部署处理方法(图解)
-
Python下Fabric的简单部署方法
-
Windows下部署Apache+PHP+MySQL运行环境实战
-
阿里云的WindowsServer2016上部署php+apache
-
Linux下部署.net core环境的步骤详解
-
IE浏览器的安全策略正确部署以及对组策略的设定
-
docker-compose一键部署redis一主二从三哨兵模式(含密码,数据持久化)
-
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
-
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
-
Elasticsearch单机双节点集群部署实战