`
xiangxingchina
  • 浏览: 520150 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

大型bbs架构(squid+nginx)实例分享

阅读更多

这个架构 基于squid、nginx 和lvs等技术 ,从架构上对bbs进行全面优化和保护,有如下特点:

1、高性能 :所有的点击基本上全部由前端缓存 负责,提供最快速的处理。

2、高保障度:不需考虑应用 程序 稳定与否、程序语言 是何种、数据库 是何种,都能从架构上保证稳定。

3、高可用性:对应用程序的修改达到最简化:在程序的某些地方加入清缓存的语句即可,当然还需要做页面 静态化的工作和统计工作。

首先看图,这个图比较大:
archi_bbs.png

这个架构的特点和一些流程的说明:

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

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

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放在最前端并使用手工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作为前端,另有的好处:

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

4、基于nginx的中层代理

app_nginx_squid.png



前端的lvs和squid,按照安装方法,把epoll打开,配置文件 照搬,基本上问题不多。

这个架构和app_squid架构的区别,也是关键点就是:加入了一级中层代理,中层代理的好处实在太多了:

 


1、gzip压缩
压缩可以通过nginx做,这样,后台应用服务器不管是apache 、resin、lighttpd甚至iis或其他古怪服务器,都不用考虑压缩的功能问题。

2、负载均衡和故障屏蔽
nginx可以作为负载均衡代理使用,并有故障屏蔽功能,这样,根据目录甚至一个正则表达式来制定负载均衡策略变成了小case。

3、方便的运维管理 ,在各种情况下可以灵活制订方案
例如,如果有人用轻量级的ddos穿透squid进行攻击,可以在中层代理想办法处理掉;访问量和后台负载突变时,可以随时把一个域名或一个目录的请求扔入二级cache服务器;可以很容易地控制no-cache和expires等header。等等功能。。。

4、权限清晰
这台机器就是不写程序的维护人员负责,程序员 一般不需要管理这台机器,这样假如出现故障,很容易能找到正确的人。
对于应用服务器和数据库服务器,最好是从维护人员的视线中消失,我的目标是,这些服务只要能跑得起来就可以了,其它的事情全部可以在外部处理掉。

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

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

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

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

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

6、图片服务器

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

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

1/使用js的script标签访问另一(台)组服务器的空文件,然后定期向数据库更新
2/在前端的nginx上直接开启日志功能,按需要统计点击量的链接规则进行记录,然后定期更新数据库

分享到:
评论

相关推荐

    Linux CentOS下搭建DNS+squid+nginx+mysql高可用web服务器.zip_nginx转发mysql

    Linux CentOS下搭建DNS+squid+nginx+mysql高可用web服务器.zip

    LVS+Keepalived+Squid+Nginx

    在构建高性能、高可用性的Web服务架构中,`LVS(负载均衡服务器)`、`Keepalived`、`Squid`(代理缓存服务器)和`Nginx`(反向代理服务器)是四个非常关键的组件。下面将详细介绍这四个技术及其相互配合的工作原理。 1. *...

    电子商务网站基础架构 nginx + memcached + tomcat + squid 集群

    在构建高性能、高可用性的电子商务网站时,常常采用一种混合技术架构,如“nginx + memcached + tomcat + squid 集群”。这种架构旨在优化性能、提高可扩展性和提供负载均衡,确保即使在高流量情况下也能保持稳定的...

    Linux搭建Squid透明代理及squid+icap环境

    二、Squid+ICAP环境搭建 1. 安装ICAP服务器 例如,你可以使用mod_security作为ICAP服务器,它提供内容过滤功能。首先,安装mod_security: ```bash sudo apt-get install libapache2-mod-security2 # Ubuntu/...

    BSD+Squid+DansGuardian

    标题 "BSD+Squid+DansGuardian" 涉及的是一个基于BSD操作系统,结合Squid代理服务器和DansGuardian内容过滤系统的网络管理解决方案。这个项目可能旨在为公司的网络环境提供安全、高效的互联网访问控制。 BSD...

    squid和nginx配置正向代理访问API接口.rar

    在这个场景中,"squid"和"nginx"都是流行的开源软件,它们可以被配置为正向代理来转发请求到API接口。下面我们将深入探讨这两个工具以及如何配置它们。 首先,让我们了解一下 Squid。Squid 是一个高性能的代理缓存...

    Nginx+Squid负载均衡相关的PPT

    **Nginx与Squid负载均衡详解** 在现代互联网架构中,负载均衡扮演着至关重要的角色,它能够有效地分发网络流量,提高系统的可用性和响应速度,同时增强容错能力。Nginx和Squid是两种常用的开源工具,分别以反向代理...

    squid+mysql用户认证配置安装详细版

    希望可以帮助到需要进行配置代理服务器的朋友!这是我根据配置的时候一步一步做的文档,包括每一步遇到的错误及如何解决的方法都一一列出

    nginx+apache+mysql+php+memcached+squid搭建门户网站

    ### Nginx+Apache+MySQL+PHP+Memcached+Squid 搭建门户网站 #### 一、前言与架构概述 随着互联网技术的发展,如何构建一个高效、稳定且能够应对高并发访问的Web服务器成为了许多企业和开发者关注的重点。本文将...

    RHEL5下Squid+IPtables经典案例

    RHEL5下Squid+IPtables经典案例

    Squid+MySQL验证排错经历.pdf

    Squid+MySQL验证排错经历.pdf

    squid+iptables透明代理配置詳解

    ### squid+iptables透明代理配置详解 #### 一、概述 本文档旨在详细介绍如何配置一个结合squid和iptables的透明代理服务器。此配置适用于Linux环境下的内部网络管理需求,特别是对于那些希望实现不同用户级别的...

    新型大型BBS架构资料

    此架构方案针对大型BBS的需求进行了全面优化,通过Squid+Nginx+LVS的组合,实现了高效率、高稳定性和高可用性的目标。通过对流量的有效管理和合理分配,以及对关键组件的优化设计,可以确保系统在面临海量用户访问时...

    nginx+apache+mysql+php+memcached+squid搭建集群web环境(二)

    【吐血推荐】nginx+apache+mysql+php+memcached+squid搭建集群web环境(二) 此乃本人N次服务器真机实验所得,所以分数高点,望体谅.. 按教程来做,你也可以搭建linux服务器... 注:此乃分卷二,

    搭建nginx+apache+mysql+php+memcached+squid服务器集群.zip_nginx正向代理

    同时,定期检查Squid的缓存命中率和Nginx的负载均衡效果,以确保集群正常运行。 在面对大用户量时,这样的服务器集群架构能提供良好的扩展性,通过增加服务器节点或调整负载均衡策略,可以轻松应对流量的增长。通过...

    nginx和squid配合搭建的web服务器

    nginx和squid配合搭建的web服务器

    nginx+apache+mysql+php+memcached+squid搭建集群web环境

    在这个架构中,nginx作为负载均衡器,负责分发请求;apache与php结合处理动态内容;mysql作为关系型数据库存储数据;memcached提供高速缓存;而squid则用作反向代理和缓存,进一步提高响应速度。 在开始搭建之前,...

    nginx+squid广州技术沙龙资料2009

    【压缩包子文件的文件名称列表】"530演讲"暗示了可能有一场主题为"530"的演讲,可能详细介绍了如何在实际操作中部署Nginx和Squid,分享了最佳实践和案例研究,涵盖了配置、性能优化、故障排查等方面的知识。...

    十几种经典web架构及场景分析

    架构3:新型的大型BBS架构(Squid+Nginx) 该架构基于Squid、Nginx和LVS等技术,从架构上对BBS进行全面优化和保护,有如下特点: 1. 高性能:所有的点击基本上全部由前端缓存负责,提供最快速的处理。 2. 高保障度...

    实战 搭建一个大型网站架构的实验环境

    实战 搭建一个大型网站架构的实验环境: ... 6搭建一个大型网站架构的实验环境(Squid缓存服务器篇) .pdf 7搭建一个大型网站架构的实验环境(Nginx代理服务器篇) .pdf 8搭建一个大型网站架构的实验环境(集成篇) .pdf

Global site tag (gtag.js) - Google Analytics