大型网站的高可用分析

本文主要分析网站的高可用性,从应用需求、用户角度展开分析。

1.1 高可用性

“高可用性”(High Availability) 通常用来描述一个系统,经过特殊设计,减少停止服务的时间,从而使其服务保持高度的可使用性。

计算机系统的可靠性用平均无故障时间(MTTF)来度量,即计算机系统平均能够正常运行多长时间,才会发生一次故障。系统的可靠性能越高,平均无故障时间越长。可维护性用平均维修时间(MTTR)来度量,即系统发生故障后维修和重新恢复正常运行平均花费时间。系统的可维护性越好,平均维修时间越短。计算机系统的可用性定义为:MTTF/(MTTF+MTTR)*100%。

举例来说,淘宝网在2010年成交额为300亿,则每分钟成交额为5—10万,那么对淘宝来说,其后台系统的高可用,对企业运营非常重要。淘宝数据负责人宁海元指出,淘宝系统,可用性至少需要99.999%。那么对于taobao.com系统,在一年365天,系统停止服务时间为5分15秒。

1.2 确保高可用性

高可用性的衡量指标

%availability=(TotalElapsed Time – Sum of Inoperative Times) / Total Elapsed Time

其中:

TotalElapsed Time 为系统总时间,包括可提供服务时间+停止服务时间。

Sumof Inoperative Times 为停止服务时间,包括宕机时间+维护时间。

1.2.1 如何确保高可用

可用性越高越好,提高可用性主要从一下几个方面入手:

(1)系统架构

(2)容灾性

(3)监控报警

(4)故障转移

1.2.1.1 系统架构

系统架构,指整个网站后台系统的架构。好的系统架构,主要从下面几个方面考虑:

(1)操作系统的选择,从稳定性、安全性和可维护性考虑,unix和linux性能远远好于windows,从成本考虑,Linux远远低于windows 和unix。

(2)负载均衡器的选择,硬件负载均衡器性能和稳定性高于软件负载均衡器。但成本上,软件比如haproxy、LVS优于硬件(比如F5、Netscaler)。

(3)web server的选择,Nginx优于传统的Apache。

(4)各级缓存的选择与应用,varnish、squid、memcached。

(5)网站开发语言的选择,与开发有关,主要分为需要编译性的语言和不需要编译性的语言。

(6)数据库的选择,传统的关系数据库中,Oracle优于MySQL,但Oracle收费远远高于MySQL,实际上,Oracle有两种收费模式,一种是按用户数,一种是按主机处理器个数。而MySQL有免费的版本。

(7)底层存储设备的选择,比如机械磁盘和固态硬盘的选择。

(8)避免单点故障问题,在逻辑架构上,避免单点故障,避免出现割点。

1.2.1.2 容灾性

容灾性能对系统非常重要,比如服务器因为断电,导致数据文件的不一致,因为发生自然或者非自然灾害比如火灾导致的磁盘损坏,发生数据丢失等。所以容灾很重要,主要从以下几个方面提高容灾性能:

(1)服务器热备机的部署,当发生故障后,热备机能马上使用,提供服务。这里的服务器主要指web server 、应用服务器、数据库服务器等。

(2) 数据备份,比如做定期备份、热备份、增量备份,甚至需要做主从备份,来提高抗灾性能。并且从底层存储设备上进行备份,比如做RAID。

(3) 做双线网络交换,尽量优化设计网络,避免因为核心交换机故障,而影响服务。网络上避免单点故障。

1.2.1.3 监控报警

监控是指对在线服务和非服务的在线服务器和相应的进程进行状态检测,当出现宕机或者某项服务进程僵死之后,能够在尽量短的时间获得该信息,然后通过报警系统将信息发送到一线运维人员。所以,监控报警,直接影响宕机时间。监控报警,主要从以下几个方面展开:

(1)  监控主机CPU使用情况,负载情况。

(2)  监控主机内存使用情况。

(3)  监控主机IO外设,主要以磁盘为主。如磁盘的读写、磁盘使用量等。

(4)  监控主机网卡使用情况。网卡是否损坏,是否招到DDOS攻击。

(5)  监控应用进程,包括web server ,应用服务器等。

(6)  监控数据库使用情况。包括用户的请求数、缓存使用量等。

(7)  监控交换设备的使用情况。网络入、出的流量。

(8)  监控IDC机房温度、湿度等。

(9)  防火墙、入侵检测等安全检测、监控等。

通过上面的各项监控、得到相应数值,应用监控绘图软件,把相应的数值绘画出来,现有监控绘图软件有mrtg、cacti、nagios等。然后设置一个报警阈值,如果超过该阈值,那么通过报警系统,比如短信、msn、邮件、甚至是声音完成报警功能。典型的报警系统如图3-2-1-3所示。

图3-2-1-3

如图3-2-1-3所示,监控服务器从servers上收集系统信息,如果发现系统的某项状态指数超过预设的阈值,则发送邮件到运维人员。同时,把相应的报警信息发送到短信运营商的短信网关服务器,然后短信网关服务器发送短信到运维人员手机中,完成短信报警。上述报警过程,传送邮件报警信息,是基于TCP/IP协议,而传送短信报警信息,是基于gprs网络。

1.2.1.4 故障转移

故障转移是指,当对用户提供服务的服务器或者相应的应用进程发生故障后,比如服务器宕机、进程僵死之后,备用服务器能够在尽量短的时间内启用,提供服务。这样能够最大限度减少损失,保证用户的正常服务。所以,做好故障转移,要解决以下两个问题:

(1)  实时监测故障问题。

(2)  准确快速切换服务器问题。

针对不同层次的服务,监测机制也不同,详细情况,在3.2.1.3已经阐述。下面主要论述一下故障切换问题。

故障切换包括负载均衡器的故障切换、主机os的故障切换、web server的故障切换、应用进程的故障切换、数据库的故障切换、存储系统的故障切换、DNS的故障切换、交换设备的故障切换等。下面主要分析进程僵死的故障转移和服务器宕机的故障转移。

进程僵死故障转移案例,常见的web server僵死故障转移如图3-2-1-4所示。

图3-2-1-4-1

如图3-2-1-4-1所示,当主机172.29.141.112的web server 对外提供服务时,通过在主机172.29.141.113上部署监控程序Monitor_nginx.sh来监控主机172.29.141.112上面的web server进程运行情况,一旦发现172.29.141.112上web server停止服务,马上报警,先更改172.29.141.113的ip地址为172.29.141.112,再启用其自身的web server,完成故障转移。此外,也可以在两服务器上同时部署监控程序Monitor_nginx.sh,完成互相监控。

服务器宕机故障转移案例,常见的服务器宕机故障转移,如图3-2-1-4-2所示。

图3-2-1-4-2

如图3-2-1-4-2所示,服务器A和服务器B同时部署,但服务器A提供服务,而服务器B作为热备机。监控系统单独部署。当服务器A宕机之后,监控系统会检测到这一信息,然后通过浮动更改服务器B的ip地址,完成故障切换。

1.3 本文小结

本文主要阐述了网站后台系统的高可用性,分析了高可用性的定义和应用需求,重点阐述了如何做到高可用。通过从不同应用级别,如主机、存储、网络、外设、数据库、安全等各个级别进行分析,最后详细论述了web server的故障转移和主机系统的故障转移。

时间: 2024-08-09 02:18:43

大型网站的高可用分析的相关文章

读书笔记5大型网站的高可用架构

一.网站实现高可用的手段 实现高可用架构的主要手段是数据和服务的冗余备份和失效转移,一旦某些服务器宕机,就将服务切换到其他可用的服务器上,如果磁盘损坏,则从备份的磁盘读取数据 二.可用性度量与考核 首先,不得不说:要保证一个网站永远完全可用几乎是一件不可能完成的任务(Mission Impossible,是不是有点碟中谍的感觉). (1)如何度量网站可用性? 一个神奇的数字—9!你有几个9,就代表了你的可用性.例如QQ可用性达到了4个9:99.99% ①2个9=基本可用 ②3个9=较高可用 ③4

谈谈运行稳定性好效率高的千万级大型网站系统架构性分析

千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题. 数据库海量数据处理:负载量不大的情况下select.delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题.另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的.索引和更新是一对天生的冤家. 高并发死锁:平时我们感觉不到,但数据库死锁在高并发的

学习笔记6:《大型网站技术架构 核心原理与案例分析》之 万无一失:网站的高可用架构

一.网站可用性度量 1.网站不可用性度量:网站不可用也称为网站故障,业界常用多少个9来衡量网站的可用性. 2.网站可用性考核 二.高可用性网站架构 1.应用层 位于应用层的服务器通常为了应对高并发的访问请求,会通过负载均衡设备将一组服务器组成一个集群对外提供服务,当负载均衡设备通过心跳检测等手段监控到某台 应用服务器不可用时,就将其从集群中剔除,并将请求分发到集群中其他可用的服务器上. 2.服务层 服务层与应用层类似,只是负责的方向不同,应用层主要与用户交互,服务层则接受来自应用层的请求,处理业

大型网站技术架构,5网站的高可用架构之高可用网站的软件质量保证

5.6 高可用网站的软件质量保证 在网站运维实践中,除了网络.服务器等硬件故障导致的系统可用性风险外,还有来自软件系统本身的风险. 本节不再赘述传统的软件测试和软件质量保证管理,而是讲一些不同的质量保证手段. 5.6.1 网站发布 网站的发布过程事实上和服务器宕机效果相当,其对系统可用性的影响也和服务器宕机相似. 由于应用的不断发布,用户需要面对的是每周一到两次的宕机故障. 但是,网站发布毕竟是一次提前预知的服务器宕机,所以过程可以更柔和,对用户影响更小.通常使用发布脚本来完成发布,其流程如下图

五、网站的高可用架构

5.1 网站可用性的度量与考核 网站的可用性描述网站可有效访问的特性. 网站的页面能完整呈现在用户面前,需要经过很多环节,任何一个环节出问题,都会导致网站页面不可访问. DNS会被劫持.CDN服务可能会挂掉.网站服务器可能会宕机.网站交换机可能会失效.硬盘会损坏.网卡会松掉.机房会停电.空调会失灵.程序会有Bug.黑客会攻击.促销引来大量的访问.第三方合作伙伴的服务不可用..... 5.2  高可用的网站架构 网站高可用架构设计的主要目的就是保证服务器硬件故障时服务依然可用.数据依然保存并能够被

网站架构高可用小结

对于一个网站而言,最重要的事情就是保证网站一直"可用",也就是能够被访问到, 先不管你可以支持多少并发,也不要管后台数据的收集和整理有没有很成熟,首先不论怎样你都必须网站可用. 在前面我们已经阐述了网站高可用的一些手段,下面会进行一些整体的论述. 怎样来阐述一个网站的可用性手段了? 我们应该依据网站的架构,一次从前往后来进行阐述,也就是应用层.服务层和数据层,最后在阐述一些综合性的问题. 1.应用高可用 我们知道应用是无状态的,应用层应该只对请求做逻辑处理. 首先我们保证其高可用的手段

Keepalived+LVS实现LNMP网站的高可用部署

项目需求   当我们访问某个网站的时候可以在浏览器中输入IP或者域名链接到Web Server进行访问,如果这个Web Server挂了,那么整个系统都无法使用,用户也就不能进行正常的访问,这种情况将对公司产生一定的影响.这就是我们常说的系统中的单点故障.这部分的单点故障可以通过引入负载均衡器和至少另一个Web Server来缓解.同时由于有多台服务器同时提供服务,也加大了系统的负载能力提高了性能.   因此我们采用LVS的负载均衡技术,将前端请求按照设定规则调度到后端服务器,并与keepali

大型网站系统架构的演进(三)如何提高网站的高可用和高性能

随着网站的业务越来越多,网站的服务就变的很重要,假设某天你的服务器挂了,会不会是一个天大的灾难呢?而且这种事情发生的概率还不小,断电了,服务器硬盘坏了,内存坏了等等,都会使你的系统挂掉,而且高并发的访问有时候也会使系统资源耗尽,然后导致服务器宕机,那么解决方案呢,那就是集群,将相同的系统分别放到不同的web服务器或者硬件服务器,这样其中一个挂掉了,网站还可以正常运营. Web应用集群 首先我们应该对web前置做集群,我们的方案是用Haproxy做http协议层的负载均衡,后端部署多个web前置,

《大型网站技术架构:核心原理与案例分析》读书笔记

由于网站的访问流量是缓慢增长的(PS除了垄断的12306),所以一般网站的架构也是不断的演化的,没有一开始就搞出个支持大并发的网站.无论从开发到发布的时间.消耗的资源上来看,或者是说从开发.维护的难度上看,或者从开发的防止"过度设计"的维度思考,绝大多数网站设计是一个演化的过程.这也是植根于需求的表现. 分析目前大型互联网可以从两个维度,用户需求.结构框架.当然是前者决定后者.从用户需求特点分析,大型网站要求高可用.高性能两个最"简单"的要求.从设计的角度讲还要满足