- 浏览: 507686 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (422)
- 重要 (12)
- BUG解决备忘录 (32)
- 环境搭建 (17)
- 开源组件 (4)
- 数据库 (16)
- 设计模式 (4)
- 测试 (3)
- javascript (5)
- Android (14)
- jdk相关 (9)
- struts2 (10)
- freemark (3)
- 自定义扩展及工具类 (5)
- jdk5新特性及java基础 (13)
- ssh及其他框架 (15)
- linux (32)
- tcp-ip http协议 (8)
- 服务器集群与负载均衡 (34)
- 项目管理相关 (11)
- 实用小技术 (10)
- 架构相关 (14)
- firefox组件 (11)
- spider (6)
- 产品设计 (11)
- PHP (1)
- ws (4)
- lucene (10)
- 其他 (2)
- BI (1)
- NoSQL (3)
- gzip (1)
- ext (4)
- db (6)
- socket (1)
- 源码阅读 (2)
- NIO (2)
- 图片处理 (1)
- java 环境 (2)
- 项目管理 (4)
- 从程序员到项目经理(一):没有捷径 (1)
- bug (1)
- JAVA BASE (8)
- 技术原理 (0)
- 新框架新技术 (1)
- 量化与python (1)
- 系统编程 (0)
- C语言 (0)
- 汇编 (0)
- 算法 (0)
最新评论
-
hyspace:
别逗了,最后一个算法根本不是最优的,sort(function ...
数组去重——一道前端校招试题 -
washingtin:
楼主能把策略和路由的类代码贴出来吗
Spring + iBatis 的多库横向切分简易解决思路 -
sdyjmc:
初略看了一下,没有闹明白啊,均衡负载使用Nginx,sessi ...
J2EE集群原理 I -
shandeai520:
谢谢大神!请教大神一个问题:假如我有三台服务器,连接池的上限是 ...
集群和数据库负载均衡的研究 -
hekuilove:
给lz推荐一下apache commonsStringUtil ...
request 获取 ip
这个架构
基于squid、nginx
和lvs等技术
,从架构上对bbs进行全面优化和保护,有如下特点:
1、高性能
:所有的点击基本上全部由前端缓存
负责,提供最快速的处理。
2、高保障度:不需考虑应用
程序
稳定与否、程序语言
是何种、数据库
是何种,都能从架构上保证稳定。
3、高可用性:对应用程序的修改达到最简化:在程序的某些地方加入清缓存的语句即可,当然还需要做页面
静态化的工作和统计工作。
首先看图,这个图比较大:
这个架构的特点和一些流程的说明:
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的中层代理
前端的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上直接开启日志功能,按需要统计点击量的链接规则进行记录,然后定期更新数据库
发表评论
-
Spring + iBatis 的多库横向切分简易解决思路2
2011-12-26 16:43 2032Table of Contents I. 向Co ... -
Spring + iBatis 的多库横向切分简易解决思路
2011-12-26 16:36 11401.引言 笔者最近在做一个互联网的“类SNS” ... -
tomcat端口被长时间连接,CPU使用率高的原因分析
2011-11-20 23:50 1040tomcat使用的是电脑的80端口。 当客户端访问的 ... -
Nginx+keepalived做双机热备加tomcat负载均衡
2011-10-25 16:55 1625环境说明: nginx1: 192.168.2.4 ... -
MySQL 6.0 集群(cluster)+复制(replicate)
2011-05-05 02:08 1461http://www.net5 . 简介 本 ... -
centos下MySQL主从同步配置
2011-05-05 00:38 1019一、环境 主机: ... -
HadHoop分布式框架配置(二)
2011-03-16 21:42 1130我们假定,你已经下 ... -
HadHoop分布式框架简介(一)
2011-03-16 21:42 1447分布式系统基本原理 分布式系统被设计成可以存 ... -
利用nginx+apache+mysql+php+memcached+squid搭建门户网站
2011-03-06 04:27 1449转自:http://hi.csdn.net/rushcc200 ... -
CentOS 5.3上安装Apache+php+Mysql+phpMyAdmin
2011-03-03 22:00 10821、系统下载 CentOS 开发社区已发布了新的 5.3 版 ... -
1分钟完美安装最新 CentOS + Nginx + PHP-FPM + MySQL
2011-03-03 21:58 1297PHP 5.3.1 MySQL 5.0.89 Ngin ... -
集群和数据库负载均衡的研究
2011-03-01 03:34 1715http://dadupi.blogbus.com/logs/ ... -
Memcached集群/分布式的单点故障
2011-03-01 03:24 1889我看到过这样一段文字 “memcached如何处理容错的? ... -
Memcached 集群架构问题归纳
2011-03-01 02:54 1001集群架构方面的问题 o memcached是怎么工作的 ... -
nginx图片服务器的架构方案
2011-03-01 01:44 1713图片服务 通常数据 容量较大,而且访问也频繁,鉴于此,图片 ... -
解密大中型网站架构设计来自威鹏网信息化解决方案专家。
2011-03-01 01:38 987相信很多IT ... -
基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置
2011-03-01 00:59 1488基于mod_proxy+Apache 2.2.16+Tomca ... -
揭秘全球最大网站Facebook背后的那些软件
2011-03-01 00:53 10712010年6月,Google公布全球Top 1000网站 ... -
基于nginx的tomcat负载均衡和集群(超简单)
2011-03-01 00:46 1084今天看到"基于apache ... -
Lighttpd 的安装配置
2011-03-01 00:20 1176lighttpd(http://lighttpd.net/ ...
相关推荐
Linux CentOS下搭建DNS+squid+nginx+mysql高可用web服务器.zip
LVS+Keepalived+Squid+Nginx 不多说了,相关文件都在里面了。。包跟文档都有
Linux搭建Squid透明代理及squid+icap环境
squid和nginx配置正向代理访问API接口
公司项目,自我总结,资料
NULL 博文链接:https://annan211.iteye.com/blog/2157762
Nginx+Squid负载均衡相关的PPT
nginx+apache+mysql+php+memcached+squid搭建门户网站
希望可以帮助到需要进行配置代理服务器的朋友!这是我根据配置的时候一步一步做的文档,包括每一步遇到的错误及如何解决的方法都一一列出
squid+iptables+nat透明代理配置詳解,有示例供參考,可供LINUX初學者參考
RHEL5下Squid+IPtables经典案例(透明代理+防火墙配置
RHEL5下Squid+IPtables经典案例
Squid+MySQL验证排错经历.pdf
搭建nginx+apache+mysql+php+memcached+squid服务器集群.zip
【吐血推荐】nginx+apache+mysql+php+memcached+squid搭建集群web环境(二) 此乃本人N次服务器真机实验所得,所以分数高点,望体谅.. 按教程来做,你也可以搭建linux服务器... 注:此乃分卷二,
nginx和squid配合搭建的web服务器
实战 搭建一个大型网站架构的实验环境: ... 6搭建一个大型网站架构的实验环境(Squid缓存服务器篇) .pdf 7搭建一个大型网站架构的实验环境(Nginx代理服务器篇) .pdf 8搭建一个大型网站架构的实验环境(集成篇) .pdf
代理服务器配置 linux+squid 详细配置说明,供大家参考学习。
在Redhat Linux中,Iptalbes和Squid透明代理加防火墙的搭配配置是最常见的组合,也是非常实用的,下面就是详细的配置信息。
2009年资料包括: 图片服务器的hash架构剖析.ppt nginx和squid配合搭建的web服务器.ppt 等...