共计 2778 个字符,预计需要花费 7 分钟才能阅读完成。
一:环境介绍
1、操作系统
Web 网站基于 CentOS7 搭建的 LNMP 的电子商务网站,负载均衡器基于 CentOS6 的 Keepalived+Haproxy 的架构,缓存服务器是基于 CentOS7 的 Varnish 搭建的缓存服务。
2、服务安装
lnmp:
mariadb-server-5.5.52-1.el7.x86_64
nginx-1.10.2-1.el7.x86_64
php-fpm-5.4.16-42.el7.x86_64
php-mysql-5.4.16-42.el7.x86_64
keepalived+haproxy:
keepalived-1.2.13-5.el6_6.x86_64
haproxy-1.5.18-1.el6.x86_64
Varnish:
varnish-4.0.4-3.el7.x86_64
3. 实验环境
关闭 selinux, 关闭 iptables,时间同步
二:原理及拓扑图
1、浏览器缓存
第一种:首先会判断浏览器是否会有缓存,如果有缓存会判断是否过期,如果没有过期就会返回一个 200 的状态码,读取浏览器缓存。
第二种: 如果有缓存,并且已经过期,比如说刷新,就会查看 Etag 值是否发生改变,有 last-modified 是否发生了改变,如果没有改变就返回 304 的状态读取浏览器的缓存,如果都发生了改变,就返回 200 的状态,相当于去服务器拿取资源,跟强制刷新是一个概念。
第三种:强制刷新,直接返回 200 状态,去后端拿资源。
2、浏览器缓存拓扑图如下
3、varnish 简介
Varnish 是一款高性能的开源 HTTP 加速器,版本之间的跨度较大,varnish 支持 VCL 的开发语言,较为复杂,采用了 ”Page Cache” 技术,所有缓存数据都直接从内存读取(映射),所以更加高速,掉电缓存就没有了。
4、Keepalived+Haproxy+Varnish+LNMP 架构图
原理: 用户从外面访问内网的时候会首先经过调度器,然后再经过缓存服务器才能拿到想要访问的元数据,这个简单的架构的意就是通过 keepalived+haproxy 做一个高可用的负载均衡器,然后再通过 varnish 缓存服务器集群,查看是否有缓存的资源,如果有缓存就直接拿到资源返回,不再访问后端 server,如果没有缓存,就去后端拿资源,拿到资源后,会查看头部信息是否允许缓存,如果允许就缓存下来,然后就返回给用户。
三:配置文件
1、varnish 配置
主配置文件:default.vcl
2、性能配置文件:/etc/varnish/varnish.params
1、RELOAD_VCL=1
设置为 1 表示当使用 systemctl reload varnish 时,会自动重新装载 vcl 的配置文件,也就是能够让新的配置生效
2、VARNISH_VCL_CONF=/etc/varnish/default.vcl
加载的缓存策略的配置文件路径
3、VARNISH_LISTEN_ADDRESS=
varnish 服务监听的地址,默认是监听在本机所有可用的地址上
4、VARNISH_LISTEN_PORT=6081
varnish 监听的端口,因为 varnish 要作为 web 服务器的反代进行工作时,才能将 http 的内容缓存,一般要将其改为 80 端口,但是实际生产环境中,varnish 一般是处于前端调度器的后面,所以可以在前端调度器上将调度的端口改为此处的端口也可以。
5、VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1
varnish 管理接口监听的地址,监听在 127.0.0.1 表示只允许从本机登录进行管理
6、VARNISH_ADMIN_LISTEN_PORT=6082
varnish 管理接口监听的端口
7、VARNISH_SECRET_FILE=/etc/varnish/secret
varnish 管理时的秘钥文件
8、VARNISH_STORAGE=”file,/var/lib/varnish/varnish_storage.bin,1G”
varnish 缓存时,使用哪种存储方式对缓存内容进行存储,本处是指使用 file 文件方式,存在
/var/lib/varnish/varnish_storage.bin 文件中,总共使用 1G 大小的空间如果要使用内存缓存,则可以定义为:”malloc,400M” 在很多生产环境还是使用 file, 但是将文件放在固态硬盘,如果希望性能更好点,放在 PCI- E 的固态硬盘 fution-IO
9、VARNISH_TTL=120
如果后端服务器没有指明缓存内容的 TTL 时间,则 varnish 自身为缓存定义的 TTL 时间
10、VARNISH_USER=varnish
VARNISH_GROUP=varnish 管理时的秘钥文件
2、keepalived+haproxy 的配置
这个配置很简单,就不多说明了,可以参考 http://www.linuxidc.com/Linux/2017-11/149012.htm。
3、lnmp 的配置文件
lnmp 的架构也很简单, 查看 http://www.linuxidc.com/Linux/2017-11/149011.htm
四:测试
vip 测试:
缓存服务器访问:
缓存服务器 Varnish 概念篇 http://www.linuxidc.com/Linux/2014-05/101389.htm
缓存服务器 Varnish 概念篇 http://www.linuxidc.com/Linux/2014-05/101389.htm
CentOS 5.8 下 Varnish-2.1.5 的安装配置 http://www.linuxidc.com/Linux/2013-09/89916.htm
RedHat 脚本改用 CentOS 源更新安装 Nginx、PHP 5.3、Varnish http://www.linuxidc.com/Linux/2012-07/65801.htm
Red Hat Linux 7 下 Varnish 简单搭建 http://www.linuxidc.com/Linux/2016-03/129284.htm
Varnish 缓存实现动静分离 http://www.linuxidc.com/Linux/2016-11/137152.htm
高性能缓存服务器 Varnish 深入浅出部署 http://www.linuxidc.com/Linux/2017-02/140655.htm
Linux 中 Varnish 基础应用 http://www.linuxidc.com/Linux/2016-08/134025.htm
Varnish 的详细介绍 :请点这里
Varnish 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-11/149010.htm