Nginx squid架构的七大关键流程介绍

开发 前端
Nginx squid架构一个神奇的架构,在很多Web服务器中都能看到他的身影,那么要如何才能掌握这个技术呢?下面的介绍就会给你一些启发。

Nginx squid架构的特点和一些流程的在很多人看来还是有些疑惑的,其实我们在使用中还是有不少的技巧可以掌握的。下面我们就来看看有关Nginx squid架构的相关流程介绍。

1、主域名和图片域名分离

域名分离可以使流量分离,缓存策略分离等等,好处诸多。bbs初期一定要做好规划,将图片用另外的域名独立服务,即使没有足够机器,域名也要先分开。另外,图片服务器可以使用有别于主域名的另一个域名,一个好处是可以减少读取cookie对图片服务器的压力,另一个是提高安全性,避免cookie泄露。#t#

2、使用LVS作为前端、二级代理和数据库的访问入口

使用LVS作为入口,比其他任何一种方式都来得更优质。首先LVS的负载能力很强,因为它工作在网络协议的第4层,使用虚拟ip技术,所以它本身并不担负任何流量的处理,仅仅是一个封包转发的功能;第二,LVS的配置相对简单而且稳定,一般去调整的几率比较低,也减少了因人为等因素而出现故障;第三,LVS可以处理任何端口的负载均衡,所以它基本可以做所有服务的负载均衡和容错。在这个架构中,除了处理http的80端口之外,LVS也处理了数据库mysql的3306端口,在数据库这个应用中是采用的双机热备策略。

3、使用Nginx squid架构作为最前端的缓存组合

在这个架构中,是最能体现app_Nginx_squid_Nginx架构的优势的。在这个架构中的bbs运行在缓存上,用户每发布一张帖子,都需要使用purge指令清除该帖子的缓存,如果是squid在最前端,那么每次发布一张帖子,都需要在所有的squid中调用purge指令,这样在机器比较多的时候,purge将成为一个巨大的压力。

所以在这里将Nginx squid架构放在最前端并使用手工url_hash的方式分流,将经常需要purge的帖子页面和列表页面按一个url对应一台squid的策略,分布到各台squid上,并提供了一台或一组backup的squid,个别squid出现异常时将自动使用backup的机器继续提供一段时间的服务直到其正常。在这样的架构下,purge就不再是关键问题,因为一个url只会对应到一台机器上,所以purge的时候,后端app_server找到对应的机器就可以了。

可以看到在前端中还有一台Nginx(purge)的机器,这台机器是专用于purge的,只要发送purge指令和需要清除的url到这台机器,就可以找到相应的服务器并清除缓存了。另外,purge时还需要清理backup机器上的缓存,所以无论前端机器增加到多少,purge指令只会在2台机器上执行,如果backup机器使用到2-3台,purge指令就会在3-4台机器上执行,仍然在可接受范围之内。

Nginx squid架构作为前端,另有的好处:

1/使用Nginx的日志统计点击量非常方便
2/Nginx也可作为缓存,一般可以直接负责favicon.ico和logo等固定的小图片

4、基于Nginx的中层代理

Nginx squid架构配合搭建的web服务器前端系统

在这个架构中,假如后端的app_server上把帖子页和列表页直接生成了静态页面,那么使用中层代理再做一次url_hash,将可以解决后端app_server的硬盘容量的压力,但是如果使用到url_hash的话,那做容错就相对麻烦了。所以建议不要采用生成静态页的方式,后端的压力一般不会非常的大,所以没有必要生成静态页。假如前端squid的命中率实在太低下,造成大量穿透,可以考虑使用二级代理暂顶。

5、基于LVS的数据库双机热备

在这个架构中,因为大量的并发和访问量都由前端的缓存处理掉了,所以后端的mysql主要压力来自于数据的写入,所以压力并不是非常大,并且负载比较稳定,一般不会随着访问量上升而提高过快,估计目前一台64位的机器,加满内存并使用高速的硬盘,前端负载数亿访问量时数据库都不会出现性能问题。在数据库这方面应主要考虑故障恢复,因为数据库崩溃的话,按照一般使用备份恢复的做法,耗时很长而且难免丢失数据,是很棘手的问题。使用双机热备的方案,出现故障时首先可由一台时刻同步着的备用数据库即刻充当主数据库,然后卸下的数据库可以有充分的时间对其进行维修,所以是个很安全有效的办法。

当然,数据库的优化还是要细心做的,参考:

mysql性能的检查和调优方法

细心地调一遍,性能会好很多。

6、图片服务器

图片服务器我在这个架构中没有特别详细的介绍,在大型的bbs系统下,图片常常会出现容灾现象——图片数量严重超过了单台前端服务器容纳能力,导致前端服务器命中率低下。处理容灾问题也是非常棘手的,往后会有更详细的介绍。

7、简单的点击量统计办法

1/使用js的script标签访问另一(台)组服务器的空文件,然后定期向数据库更新

2/在前端的Nginx上直接开启日志功能,按需要统计点击量的链接规则进行记录,然后定期更新数据库
 

责任编辑:张浩 来源: 互联网
相关推荐

2012-12-04 18:11:46

LanSecS堡垒主机堡垒机

2018-07-05 14:42:52

大数据企业数据挖掘

2015-04-20 09:03:50

混合云混合云评估IT管理

2016-10-27 14:02:56

大数据数据库

2016-10-26 14:40:28

大数据基础设施架构

2015-03-05 09:18:03

2010-12-30 14:52:33

云基础设施

2021-07-17 15:48:13

Rust编程语言关键字

2017-07-25 15:52:52

数据中心迁移

2012-09-04 13:58:40

2019-07-09 23:19:37

Black Hat U网络安全信息安全

2017-07-07 08:54:31

Node.js剪贴板管理器开源网络

2017-07-10 10:53:08

IT技术周刊

2021-12-09 10:19:35

微步在线网络安全

2018-04-11 14:13:29

物联网信息技术互联网

2020-04-09 09:33:30

创新领导者团队

2013-10-29 09:09:58

SDN关键

2020-12-22 09:55:55

IT首席信息官CIO

2020-12-18 10:35:27

IT技术领导者

2015-07-08 08:51:11

SDN
点赞
收藏

51CTO技术栈公众号