首页IT技术系统 › 大型互联网网站运维架构

大型互联网网站运维架构

了解了一些大型互联网的运维架构比较多,对每个配件基本也做了比较一些研究。


1.前端肯定是CDN(存静态页面、css、js)+智能DNS(亚马逊云、阿里云、dnspod都有提供)


2.L4的负载均衡(大型网站用F5之类的硬件,中等的可以用LVS软件来实现)。LVS有两种模式,NAT模式可以隐藏真实服务器,避免被直接攻击,而DR模式因为只是转发上行流量,下行流量不需要经过Director,所以性能极佳。一般用得比较多的是DR模式。


3.L7的负载均衡(nginx或haproxy等),同时实现后端服务器的健康状态检查。也有一些网站会把L4和L7层的负载均衡合并成一层。


注:对web访问来讲,负载均衡会引入一个问题:会话保持!如果同一会话的数据包被分到不同的服务器,那会话状态将无法保持。所以,一般可以通过源IP hash来使得来自同一IP的流量被固定引到相同的服务器上。


4.静态页面缓存(varnish、squid、nginx都可以实现,varnish属于新贵,设计上比较超前,前景也比较好)


5.WEB层(apache、nginx),通过RPC调用后端的业务层。


6.service层,提供真正业务。(SOA架构),不同业务之间可互相调用访问。


注:对于5和6这两点,不同网站不太一样。也有是如下这样的:

使用tomcat、nginx(+fastcgi+xcache)或apache(+xcache)等直接提供动态页面服务。再在后端使用nosql(比如memcached、redis)进行数据缓存(特别是session数据,可以避免前端服务器故障导致用户session断开)。memcached数据只保存在内存中,并且只支持key-value存储;而redis在内存存储同时也支持持久化,支持的类型也多。不幸的最,刚好就在这两天,redis暴出了漏洞,即服务器的authorized_key文件会被修改,实现免密码登陆。


7.数据库(mysql),一般是一主多从、读写分离架构。主服务器负责写,而从服务器负责读。另外,还有NFS或mogileFS之类的来存储图片等静态文件。(如果使用NFS,可以使用rsync+inotify做实时备份)


以上只是一个大概的架构,篇幅所限,具体细节没法全写出来。整体上的思想就是:能在前端就返回给用户的,就尽量往前;能用缓存数据的,就不会用原始数据。而一般整个架构最大的瓶颈仍是在最后端的数据库。


既然那么多台服务器,管理也不可能每次修改都一台台服务器登陆去操作,所以一般会开发自动化运维平台(调用puppet、saltsatck或ansible,个人最看好saltstack)、监控系统zabbix(个人觉得zabbix已远远超越了nagios+cacti)、open-falcon(小米开源监控系统,适合监控数据量大的系统)


从去年开始,docker迅速地火起来,所以也有不少有技术实力的网站开始使用了docker来封装。减少运维人员和开发人员之间的责任推脱。

原文出自: http://blog.too2.net/?p=226
转载请注明转自:辛碌力成【http://blog.too2.net】

发表评论