热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实现基于Keepalived+Haproxy+Varnish+LNMP企业级架构

nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd

一:环境介绍

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的配置

这个配置很简单,就不多说明了,可以参考 2017-11/149012.htm。

3lnmp的配置文件

lnmp的架构也很简单,查看 2017-11/149011.htm

四:测试

vip测试:

 

a5dc41167a92bbcf9d9930b351d478c5.png

 

 

缓存服务器访问:

 

68599bce5cd4345d71fe97c55ab82d53.png

缓存服务器Varnish概念篇 2014-05/101389.htm

缓存服务器Varnish概念篇 2014-05/101389.htm

CentOS 5.8下Varnish-2.1.5的安装配置 2013-09/89916.htm

RedHat脚本改用CentOS源更新安装Nginx、PHP 5.3、Varnish 2012-07/65801.htm

Red Hat Linux 7 下Varnish简单搭建 2016-03/129284.htm

Varnish缓存实现动静分离  2016-11/137152.htm

高性能缓存服务器Varnish深入浅出部署  2017-02/140655.htm

Linux中Varnish基础应用  2016-08/134025.htm

Varnish 的详细介绍:请点这里
Varnish 的下载地址:请点这里


推荐阅读
  • 2023年最新:PHP本地端口配置详解
    本文详细介绍了PHP在不同环境下的本地端口配置方法及常见问题解决方案,帮助开发者更好地理解和配置PHP端口。 ... [详细]
  • 增强Tomcat安全性:有效防止后台攻击
    在构建可靠的系统架构时,确保安全是至关重要的一步。本文将重点探讨Tomcat这一流行的开源Web应用服务器的安全配置,以帮助开发者和运维人员提高其应用程序的安全性。 ... [详细]
  • 本文探讨了Go语言(Golang)的学习价值及其在Web开发领域的应用潜力,包括其独特的语言特性和为什么它是现代软件开发的理想选择。 ... [详细]
  • Mario Peshev,自1999年起从事编程工作,现任DevriX首席执行官。本文最初发布于Quora,探讨了计算机技术与编程语言的区别及其对软件开发的影响。 ... [详细]
  • 本文详细分析了一个生产系统中遇到的 Apache Axis2 403 Forbidden 错误,并提供了具体的排查步骤和解决方案。 ... [详细]
  • 本文探讨了Java异常处理的本质,提出了设计模式以优化异常处理,并分析了在AOP模型中异常处理的应用。文章强调了正确使用Java异常对于提升代码质量和维护性的关键作用。 ... [详细]
  • 本文探讨了如何利用 Application 对象在 PHP 应用程序中共享数据,特别是在多用户环境中保持数据的一致性和安全性。文章还介绍了 Application 对象的基本结构、方法和事件,并提供了实际应用示例。 ... [详细]
  • 死锁的概念“死锁”指的是:多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能进行,而导致两个或者多个线程都在等待对方释放资源 ... [详细]
  • 本文详细记录了在Ubuntu 9.10操作系统上从零开始搭建LAMP(Linux, Apache, MySQL, PHP)环境的过程,包括遇到的问题及解决方案。旨在为初次尝试搭建LAMP环境的开发者提供参考。 ... [详细]
  • 2023年PHP处理请求超时的全面指南
    本文详细介绍了在PHP中处理请求超时的各种方法,包括设置脚本执行时间、处理file_get_contents函数超时以及优化AJAX请求等,适合开发者参考学习。 ... [详细]
  • 本文详细介绍了使用Apache的AB工具和Webbench进行服务器性能测试的过程,分享了实际操作中的测试结果,并探讨了测试过程中遇到的问题及可能的解决方案。 ... [详细]
  • 远程访问用户 Kindle通过电子书实现控制
    介绍自2007年以来,亚马逊已售出数千万台Kindle,令人印象深刻。但这也意味着数以千万计的人可能会因为这些Kindle中的软件漏洞而被黑客入侵。他 ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 本文探讨了在使用 ClickOnce 部署方式时遇到的自动更新失败问题,包括本地安装与服务器安装的不同表现,并提供了详细的解决方案。 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
author-avatar
zJv老方有点坑爹额B
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有