大型网站的高可用分析

news/2024/5/10 13:32:12/文章来源:https://blog.csdn.net/weixin_34106122/article/details/86090357

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

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的故障转移和主机系统的故障转移。

声明:本文档可以随意更改,但必须署名原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_764095.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站安全技术—预防脚本攻击

阅读目录 一:脚本攻击 二:模拟脚本攻击 三:运行效果 四:预防脚本攻击的主要方法 一:脚本攻击 脚本攻击是指将恶意的字符插入到网页中来,浏览器无法验证这些插入的字符,并且会将它们作为网页的一…

We7网站群的共享机制

2019独角兽企业重金招聘Python工程师标准>>> 1.独立部署共享服务器 独立布署共享服务器 共享服务器作为一个独立的服务,允许布署在不同的物理服务器上,从而满足更大负载与更佳性能的要求。 技术支撑:信息打包技术 信息通过数据…

windows server 2008 配置1个服务器多个网站

简略:创建网站的三种虚拟技术:①多IP地址;②一个IP地址多个端口号;③主机头名。1、多IP地址架设多个网站 增加另一个网站:测试成功运行两个网站:2、同一IP地址 多端口3、同一IP地址 不同主机名增加域名…

详细的图文介绍如何利用XAMPP本地建站的环境配置教程

原文:详细的图文介绍如何利用XAMPP本地建站的环境配置教程WordPress 是一个简便快捷,用途广,人气旺的一个开源的博客建站程序。很有很多等您去发现。 简便快捷:在性能上易于操作、易于浏览; 用途广:可以建博客&#xf…

ExtJs学习网站

为什么80%的码农都做不了架构师?>>> ExtJs 入门教程: http://www.cnblogs.com/iamlilinfeng/archive/2012/12/31/2840663.html Sencha Docs 脚本娃娃 (Ext4.1.0 Doc中文版 V1.0.0 Beta) http://extjs-doc-cn.github.io/ext4api/#!/api/Ext ExtJs云盘下载…

网站运维——Chrome 神奇的21秒

2019独角兽企业重金招聘Python工程师标准>>> 1、报障 ①、用户使用chrome进行访问(下载),需要等待一段时间,才会提示下载框,debug发现时间都花在Stalled,状态显示pending,无论是跳转…

.net网站常见问题及解决方案

1、解决方法:三个文件放到项目Bin文件夹2、解决方法 : requestValidationMode"2.0" 加到 3、 你在浏览器输入网址报这样的错误 然后打开你的internet信息服务(IIS)管理器 点击“应用程序池” 在右边找到你的网站名字&a…

检测到目标url存在客户端(javascript)cookie引用_利用Zabbix监控系统自动检测网站运行状态...

我们要检测一个网站是否正常运行,最好的方式是啥呢?我想最直接的办法就是打开浏览器输入要访问的网址,能打开网页说明网站是正常运行的,不能打开了则说明网站存在问题。通过上一篇文章《HTTP协议及其工作原理介绍》,我…

linux搭建cdn教程_云计算视频教程:Linux大型网站高并发架构及自动化运维

随着互联网技术的不断进步和发展,对运维人员提出了更高的要求和挑战,如何才能将运维工作自动化,提升工作的效率?让大家学完后可以具备企业真正的大型网站搭建能力以及自动化运维的实战能力。在企业中运用zabbix监控企业数据&#…

springboot做网站_面试中必须掌握的15道《Spring Boot 高频面试题》

做 Java 开发,没有人敢小觑 Spring Boot 的重要性,现在出去面试,无论多小的公司 or 项目,都要跟你扯一扯 Spring Boot,扯一扯微服务,不会?没用过? Sorry ,我们不合适&…

服务器架设了网站还能架设游戏吗,可以在云服务器里架设游戏吗

可以在云服务器里架设游戏吗 内容精选换一换标签是弹性云服务器的标识。为弹性云服务器添加标签,可以方便用户识别和管理拥有的弹性云服务器资源。您可以在创建弹性云服务器时添加标签,也可以在弹性云服务器创建完成后,在云服务器的详情页添加…

javaweb-41:网站注册发送邮件实现

发送带图片及附件的邮件 核心代码: package com.gongyi;import com.sun.mail.util.MailSSLSocketFactory;import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.internet.InternetAddress; imp…

0基础做网站

1.vscode下载 https://az764295.vo.msecnd.net/stable/784b0177c56c607789f9638da7b6bf3230d47a8c/VSCodeUserSetup-x64-1.71.0.exe 2. vscode安装 3.安装完毕 安装插件 ctrlshiftx 安装liveserver 4. 下载git文件路径 打开终端 altt altN mkdir website 回车 cd website…

《Flash建站技术》系列6-LoadVars数据提交与表单处理

1.LoadVars vs getURL send()getURL有很多的限制,LoadVars则弥补了这一点Flash时间轴脚本:System.useCodepagetrue;signBtn.onReleasefunction(){var formVars:LoadVarsnew LoadVars();formVars.userNamesignForm.userName.text;formVars.userPasssignForm.userPass…

网站架构演变过程-------从传统项目到分布式项目再到微服务

网站架构演变过程 传统项目(单点应用)----》分布式架构 (以项目进行拆分)----》SOA架构(面向服务架构)----》微服务架构 传统项目的架构: 传统项目框架其实就是SSH或SSM,属于单点应用&#x…

推荐12个优秀的 HTML5 网站设计案例欣赏

HTML5 有用很多新特性,网页设计师和开发人员可以使用这些特性制作出更加优秀的网站。这篇文章收集了12个HTML5网站设计案例,让大家感受一下HTML5网站的魅力,一起欣赏。 The Wired Mind Nike Better World Ben The Bodyguard Quentind Analog …

图解大型网站技术架构演变过程!

1、大型网站的特点 高并发,大流量:PV量巨大。即页面浏览量;用户每1次对网站中的每个网页访问均被记录1次。用户对同一页面的多次访问,访问量累计。 高可用:7*24小时不间断服务。 海量数据:需要储存、管理…

用tomcat部署和花生壳内网映射进行远程访问自己电脑上的网站

第一步&#xff1a;将编写好的html页面放在tomcat安装目录Tomcat 6.0\webapps\下[新建个目录如&#xff1a;myhtml]里面。 第二步&#xff1a;在tomcat安装目录[Tomcat 6.0\conf\]下用记事本/其他文本软件打开server.xml文件&#xff0c; 文件末尾</Host>前添加 <Cont…

Python爬虫(三)Beautiful Soup 实战,爬取前程无忧网站

Beautiful Soup介绍 Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。Beautiful Soup自动将输入文档转换为Unicode编码&#xff0c;输出文档转换为utf-8编码。Beautiful Soup已成为和lxml、html5lib一样出色的python解释器&#xff0c;为…

ASP.NET MVC5 网站开发实践 - 概述

原文地址为&#xff1a; ASP.NET MVC5 网站开发实践 - 概述前段时间一直在用MVC4写个网站开发的demo&#xff0c;由于刚开始学所有的代码都写在一个项目中&#xff0c;越写越混乱&#xff0c;到后来有些代码自己都理不清了。1月26日晚上在群里跟怒放 他们讨论这个问题&#xff…