May 7, 2009
便于管理的nginx配置[2009-03-18 01:15:05]
"我目前的nginx配置是拆散的,这样可以便于在很多个虚拟主机和目录里重用部分配置。\n总体是划分为这样一个结构:\nconf/ conf/nginx.conf conf/proxy.conf conf/rewrite.conf conf/location.conf conf/port.conf conf/upstream.conf conf/servers/ conf/servers/www.sudone.com conf/servers/www.163.com\n1、nginx.conf\n这就是nginx读取的主文件,没特殊情况是通用的\n2、proxy.conf\n代理的选项配置,也是通用的\n3、rewrite.conf\n所有主机的根目录公用的rewrite规则,默认是空文件,可以不使用。\n4、location.conf\n所有主机都会用到的location目录结构,默认是空文件,可以不使用。\n5、port.conf\n配置服务器绑定ip和端口,因为nginx如果各个主机ip端口配置有不同会有bug,所以最好是统一设定。\n6、upstream.conf\nupstream写在这里面,和业务分开,易 …"
May 7, 2009
nginx图片服务器的架构方案[2009-03-18 01:15:06]
"图片服务通常数据容量较大,而且访问也频繁,鉴于此,图片服务就会有两种问题,一是存储问题,二是访问量问题。\n存储问题就是硬盘容量问题,花钱买硬盘就可以了,看似简单,但着实也是最苦的问题。按目前探索来看,最好的方式是:在任何时刻遇到硬盘空间不够时,买颗硬盘插上,最多改改配置,就能立刻利用;另外,硬盘要能充分利用,不然图片存储量大再加上备份,很恐怖,最好是每颗硬盘都用上100%的空间。\n访问量也是个大问题,如果服务不允许防盗链,那么访问量会引起带宽、服务器压力等问题,有钱的话直接扔CDN,没钱或者有更多的钱,就自己做吧。根据垣古不变的真理“越老的图,访问量也相对较少”这一点,分成两大部分,一边处理最新的图片,一边处理老旧的图片。最新的图片访问量大,但存储量较少;老图片访问量低,但存储量大。\n大概分析完了,开始制定方案。\n一、拟定一个存储目录规则:\n在现有的/a/b/abcde.jpg这样的hash方式下多加一个日期的目录变成:/200810/16/a/b/abcde.jpg或者/2008/10/16/a/b/abcde.jpg。按日期制定这个目录规则后,就可以按年月来拆机器了。\n二、分机器, …"
May 7, 2009
图片服务器的hash架构[2009-04-19 23:17:00]
"如图,这是一个最简洁的架构。\n在这个架构里,负载均衡器都可以省了,用最为廉价的dns来替代,dns的优点就是廉价,不用维护,也不愁性能和稳定,还可以跨机房多用几条带宽作分流。另外,在图片服务中,可以选择用另一个域名做dns。优点是主站中的任何cookie等header不会带到图片服务中,省了不少上传流量和服务器可能有的处理时间;缺点是多花了点域名的钱。目前门户都喜欢用这办法,小站用的话,用另一个域名还附带有一个特别的优点:因为部分域名服务商允许添加的二级域名有限,所以用别的域名可以节约有限的域名资源。dns这一块也可以用泛域名,不过貌似国内的泛域名支持不是特别的稳定,有些网站的泛域名,在linux下不能解析windows就正常,比较奇怪,我也没法解释。\n在这个架构里我总共开了36个域名,但是一时没有那么多机器,所以有一些域名指向同一台机器。一般来说,一个刚上线的项目,放一台机也未尝不可,但是链接(包括域名)一定要固定下来,不然以后调整会非常痛苦。\n域名的事情还是比较简单的,只要照着填写web表单就完成了,配置四台nginx服务器当然也是非常简单的,因为不需要什么特殊的功能,所以四台机用 …"
May 7, 2009
新型的大型bbs架构(squid+nginx)[2009-03-18 01:15:06]
"这个架构基于squid、nginx和lvs等技术,从架构上对bbs进行全面优化和保护,有如下特点:\n1、高性能:所有的点击基本上全部由前端缓存负责,提供最快速的处理。\n2、高保障度:不需考虑应用程序稳定与否、程序语言是何种、数据库是何种,都能从架构上保证稳定。\n3、高可用性:对应用程序的修改达到最简化:在程序的某些地方加入清缓存的语句即可,当然还需要做页面静态化的工作和统计工作。\n首先看图,这个图比较大:\n这个架构的特点和一些流程的说明:\n1、主域名和图片域名分离\n域名分离可以使流量分离,缓存策略分离等等,好处诸多。bbs初期一定要做好规划,将图片用另外的域名独立服务,即使没有足够机器,域名也要先分开。另外,图片服务器可以使用有别于主域名的另一个域名,一个好处是可以减少读取cookie对图片服务器的压力,另一个是提高安全性,避免cookie泄露。\n2、使用LVS作为前端、二级代理和数据库的访问入口\n使用LVS作为入口,比其他任何一种方式都来得更优质。首先LVS的负载能力很强,因为它工作在网络协议的第4层,使用虚拟ip技术,所以它本身并不担负任何流量的处理,仅仅是一个封包转发的功能;第 …"
May 7, 2009
Nginx 简单的负载均衡配置示例
"www.haohtml.com 和 blog.haohtml.com 域名均指向 Nginx 所在的服务器IP。\n用户访问,将其负载均衡到192.168.1.2:80、192.168.1.3:80、192.168.1.4:80、192.168.1.5:80四台服务器。\n用户访问,将其负载均衡到192.168.1.7服务器的8080、8081、8082端口。\n以下为配置文件nginx.conf: 引用 user www www;\nworker_processes 10;\n#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;\n#pid logs/nginx.pid;\n#最大文件描述符 worker_rlimit_nofile 51200;\nevents { use epoll;\nworker_connections 51200; }\nhttp { include conf/mime.types; default_type …"
May 7, 2009
服务器的大用户量的承载方案 Nginx Squid Apache PHP MySQL
"一、前言\n二、编译安装\n三、 安装MySQL、memcache\n四、 安装Apache、PHP、eAccelerator、php-memcache\n五、 安装Squid\n六、后记\n一、前言,准备工作\n当前,LAMP开发模式是WEB开发的首选,如何搭建一个高效、可靠、稳定的WEB服务器一直是个热门主题,本文就是这个主题的一次尝试。\n我们采用的架构图如下:\n引用\n——– ———- ————- ——— ————\n| 客户端 | ===\u0026gt; |负载均衡器| ===\u0026gt; |反向代理/缓存| ===\u0026gt; |WEB服务器| ===\u0026gt; |数据库服务器|\n——– ———- ————- ——— ————\nNginx Squid Apache,PHP MySQL\neAccelerator/memcache\n准备工作:\n引用\n服务器: Intel(R) Xeon(TM) CPU 3.00GHz * 2, 2GB mem, SCISC 硬盘\n操作系统:CentOs4.4,内核版本2.6.9-22.ELsmp,gcc版本3.4.4\n软件:\nApache 2.2.3(能使用MPM模式)\nPHP …"
May 6, 2009
Drupal,开源cms里的巨擘。
"我从2002年底就开始关注drupal了,当时在国内看不到一点关于drupal的资料,2003年写过几篇关于drupal的介绍文章,到现在都经常看到很多介绍drupal的文章里引用我的话。记得2003年看到海微在研究drupal,并且发布了中文语言包,打开了drupal进入中国的大门。海微是我一直敬仰的一个人,以前一直致力于xoops的中文化工作,现在竟然搞Hiweed Linux操作系统了。\n海微发布drupal中文语言包后我就一直开始用drupal,不过都是当作普通的blog程序来用,基本上不装插件,也没改过风格。中途试着改过几次风格,但试了几次都放弃了,感觉很麻烦。\n最近看了几个用drupal做的强站,看了之后感觉就是震撼,根本看不出是用个开源代码的做的,看了之后我又萌发了修改drupal风格的念头,打算为我的极客集改个版。研究了两天,终于明白drupal模板的原理了,对CCK和views这两个超强模块也有了新的认识,把官方的主要模块都看了看,看得我眼都花了,实在是太多了,对drupal的评价就是:“只有想不到的,没有做不到的”你想要什么功能都有什么模块。这也是国外程序最大的特 …"
May 5, 2009
php判断浏览器类型
"UA = getenv(“HTTP_USER_AGENT”); $start = strpos($this-\u0026gt;UA,”(“)+1;//查看起始位置 $length = strpos($this-\u0026gt;UA,”)”)-$start;//查看结束位置 $middle = trim(substr($this-\u0026gt;UA,$start,$length)); //查看内容 $end = trim(substr($this-\u0026gt;UA,$start+$length+1));//附加内容 $message = explode(“;”,$middle);//转换成数组 //———-操作系统—————– $os = trim($message[‘2’]); $os_array = explode(” “,$os); $this-\u0026gt;PLATFORM = trim($os_array[‘0’]);//操作系统 //————浏览器———— $brower = trim($message[‘1’]);\nif(eregi(“msie”,$brower)){//IE …"
May 4, 2009
大中型网站架构探秘
"【eNet硅谷动力专稿】相信很多IT人士都有过搭建自己主页的经验,10多年前的个人主页都非常简单,很多由Frontpage构建,多属于静态HTML页面,最多加一点特效而已。不过10年间,技术的进步是惊人的。现在,一个网站绝不可能仅仅由几个HTML页面构成。我们随便举一个例子,国内图片网站yupoo.com,在chinarank排名1000左右,而Alexa排名则为5000左右,这个网站不算大,就是这样一个中型站点,拥有超过60台服务器,架构中涉及的Web服务器就包括了Lighttpd、Apache和 nginx。Yupoo的流量不算大,就已经拥有了60台服务器,事实上,排名前几位的网站,都拥有成千上万台服务器,如何协调这些服务器之间的工作负载,如何统一指挥调度,如何维护这些服务器硬件都是棘手的挑战。\n负载均衡:\n负载均衡是所有大中型网站必备的部署。显然,大型网站每天上千万独立IP的访问量,一个Web服务器根本承担不了,网站后台必需有多台服务器共同工作,因此各种负载均衡技术就应运而生了。\n较早的负载均衡是DNS负载均衡。原理很简单,只要在域名解析的时候,将多个地址配置成同一个域名,负载均 …"
May 3, 2009
ECC ,R-ECC,FBD ECC内存的分别
"FBD即Fully-buffer DIMM(全缓存模组技术),它是一种串行传输技术,可以提升内存的容量和传输带宽.是Intel在DDR2、DDR3的基础上发展出来的一种新型内存模 组与互联架构,既可以搭配现在的DDR2内存芯片,也可以搭配未来的DDR3内存芯片。FB-DIMM可以极大地提升系统内存带宽并且极大地增加内存最大容量。\nFB-DIMM技术是Intel为了解决内存性能对系统整体性能的制约而发展出来的,在现有技术基础上实现了跨越式的性能提升,同时成本也相对低廉。在整 个计算机系统中,内存可谓是决定整机性能的关键因素,光有快的CPU,没有好的内存系统与之配合,CPU性能再优秀也无从发挥。这种情况是由计算机原理所 决定的,CPU在运算时所需要的数据都是从内存中获取,如果内存系统无法及时给CPU供应数据,CPU不得不长时间处在一种等待状态,硬件资源闲置,性能 自然无从发挥。对于普通的个人电脑来说,由于是单处理器系统,目前的内存带宽已经能满足其性能需求;而对于多路的服务器来说,由于是多处理器系统,其对内 存带宽和内存容量是极度渴求的,传统的内存技术已经无法满足其需求了。这是因为目前的普 …"