nginx反代varnish缓存服务器实现后端amp动静分离架构

简介:

1.前端nginx做调度器及反代服务器,将用户的请求调度至后端的两台varnish,缓存调度算法使用一致性hash算法保证缓存命中率;

2.两台varnish反向代理用户请求至三个(组)后端主机,分别为存储静态资源(htm,html,css,js),应用程序服务器(可以部署wordpress或Discuz!),图片统一保存至图片服务器;

3.用户登录后,可以通过wordpress发布新的博文,并且可以上传图片;

4.如果后端主机全部宕机,varnish可以使用过期缓存响应客户端;

             

实验规划:

director1:    172.16.1.4 nginx+keepalived 主

director2:    172.16.1.2 nginx+keepalived 备

varnish1:     172.16.1.5

varnish2:     172.16.1.6

static server:  172.16.1.10

php server:   172.16.1.3

 

拓扑图

blob.png

一、配置两台nginx调度器主机

 

director1的keepalived配置

11111.PNG  

director2的keepalived配置

22222.PNG

两台nginx的配置

 

在nginx.conf配置文件中的http段内添加upstream内容,将后端两台varnish服务器加入到该upstream中,同时做一致性hash算法保证缓存命中率。

后端健康状态检查设置:max_fails=1设定Nginx与服务器通信的尝试失败的次数。在fail_timeout参数定义的时间段内,如果失败的次数达到此值,Nginx就认为服务器不可用。在下一个fail_timeout时间段,服务器不会再被尝试。

33333.PNG 

 

二、两台varnish主机的配置

 

更改varnish的监听端口为80

[root@varnish1 ~]# vim /etc/varnish/varnish.params

VARNISH_LISTEN_PORT=80

 

varnish配置文件内容

[root@varnish1 ~]# vim /etc/varnish/default.vcl

4444.PNG

5555.PNG


编译使配置生效

 

[root@varnish1 ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082

200       

-----------------------------

Varnish Cache CLI 1.0

-----------------------------

Linux,3.10.0-327.el7.x86_64,x86_64,-smalloc,-smalloc,-hcritbit

varnish-4.0.5 revision 07eff4c29

 

Type 'help' for command list.

Type 'quit' to close CLI session.

 

vcl.list

200       

available       0 boot

active          0 myconf3

 

varnish> vcl.load conf1 default.vcl

200       

VCL compiled.

 

vcl.use conf1

200       

VCL 'conf1' now active

 

vcl.list

200       

available       0 boot

available       0 myconf3

active          0 conf1

 

三、后端wordpress主机配置

 

wordpress的主要如下步骤,详细步骤不做赘述

 

下载安装配置wordpress

cp wp-config-sample.php wp-config.php

 

数据库配置

MariaDB [(none)]> create database wordpress;

MariaDB [(none)]> grant all on wordpress.* to 'wpuser'@'172.16.%.%' identified by '123456';

MariaDB [(none)]> flush privileges;

 

 

在动态主机的/var/www/html/下创建health.php用于动态健康状态检查

<h1>DynamicServer is Health.</h1>

 

在静态主机的/var/www/html/下创建health.html用于静态健康状态检查

<h1>StaticServer is Health.</h1>

 

四、测试

对后端主机健康状态检查

 

[root@varnish1 ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082

200       

-----------------------------

Varnish Cache CLI 1.0

-----------------------------

Linux,3.10.0-327.el7.x86_64,x86_64,-smalloc,-smalloc,-hcritbit

varnish-4.0.5 revision 07eff4c29

 

Type 'help' for command list.

Type 'quit' to close CLI session.

 

backend.list

200       

Backend name              Refs   Admin      Probe

default(127.0.0.1,,8080)       2      probe      Healthy (no probe)

dynamic(172.16.1.10,,80)       1      probe      Healthy 3/3

static(172.16.1.3,,80)        1      probe      Healthy 3/3

 

 

客户端登陆keepalived生成的虚拟ip地址172.16.1.100

 

第一次查看静态页面,未缓存X-Cache为miss

blob.png

 

刷新一下,缓存服务器就缓存了X-Cache为HIT

blob.png

 

查看动态页面

blob.png

登陆wordpress可以看到刚才正常上传图片的博客

blob.png



本文转自 Runs_ 51CTO博客,原文链接:http://blog.51cto.com/12667170/2049990,如需转载请自行联系原作者

相关文章
|
19天前
|
Java 关系型数据库 API
探索后端技术:构建高效、可靠的服务器端应用
在当今数字化时代,后端技术是任何成功应用程序的基石。它涉及服务器、数据库和应用程序之间的交互,处理数据存储、业务逻辑和系统性能等关键任务。本文将深入探讨后端开发的核心概念、常见技术栈及其实际应用,帮助读者更好地理解和掌握构建高效、可靠后端系统的技巧与策略。
|
12天前
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
45 0
|
15天前
|
监控 关系型数据库 Serverless
探索后端技术:构建高效、可靠的服务器端应用
本文将深入探讨后端开发的核心概念和关键技术,从服务器架构到数据库管理,再到安全防护,为读者提供全面的后端技术指南。无论是初学者还是经验丰富的开发者,都能从中汲取灵感,提升自己的技术水平。
|
11天前
|
设计模式 API 开发者
探索现代后端开发:微服务架构与API设计
【10月更文挑战第6天】探索现代后端开发:微服务架构与API设计
|
1天前
|
Java 持续交付 微服务
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过具体案例分析,揭示了其如何助力企业应对业务复杂性、提升系统可维护性和可扩展性。文章首先概述了微服务的核心概念及其优势,随后详细阐述了实施微服务过程中的关键技术选型、服务拆分策略、容错机制以及持续集成/持续部署(CI/CD)的最佳实践。最后,通过一个真实世界的应用实例,展示了微服务架构在实际项目中的成功应用及其带来的显著成效。 ####
|
1天前
|
负载均衡 监控 API
后端开发中的微服务架构实践
【10月更文挑战第15天】 在当今的软件开发领域,微服务架构已成为一种流行的技术趋势。本文将探讨微服务架构的基本概念、优势以及在实际后端开发中的应用。我们将通过具体案例分析,了解如何设计和实现一个高效的微服务系统,以及如何应对在实施过程中可能遇到的挑战。
11 1
|
3天前
|
消息中间件 监控 Kubernetes
后端开发中的微服务架构实践与挑战####
本文将深入探讨微服务架构在后端开发中的应用,通过实际案例分析其优势与面临的挑战。我们将从微服务的基本概念入手,逐步剖析其在现代软件开发中的重要性及实施过程中需注意的关键因素。无论你是后端开发的新手还是资深工程师,这篇文章都将为你提供有价值的见解和启发。 ####
|
9天前
|
监控 Serverless API
利用云函数实现后端服务的无服务器化
【10月更文挑战第7天】本文介绍了无服务器架构中的核心组件——云函数,探讨了其概念、优势及应用。云函数使开发者能在无需管理服务器的情况下运行代码,具备自动扩展、成本效益、快速迭代和聚焦业务逻辑等优势。文章还详细说明了实施云函数的步骤,并分享了实战技巧,旨在帮助读者更好地理解和应用这一技术。
|
16天前
|
消息中间件 监控 数据管理
后端开发中的微服务架构实践与挑战
在当今软件开发领域,微服务架构因其高度的模块化和灵活性而备受关注。它通过将应用程序分解为小型、独立的服务来运行,从而简化了开发、部署和扩展过程。本文将探讨微服务架构的基本概念、实践方法以及在实际应用中面临的挑战,旨在帮助读者更好地理解和应用这一现代技术趋势。
|
18天前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
36 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例

热门文章

最新文章