Web应用程序的100%正常运行时间


312

今天,我们收到了一个来自客户的有趣的“要求”。

他们希望在Web应用程序上实现非现场故障转移的100%正常运行时间。从我们的Web应用程序的角度来看,这不是问题。它旨在能够在多个数据库服务器等之间扩展。

但是,从网络问题来看,我似乎无法弄清楚如何使其工作。

简而言之,该应用程序将驻留在客户端网络内的服务器上。内部和外部人员都可以访问它。他们希望我们维护该系统的异地副本,以便在其场所发生严重故障时能够立即接管并接管。

现在我们知道,绝对没有办法为内部人员(信鸽吗?)解决此问题,但是他们希望外部用户甚至不会注意到它。

坦率地说,我对如何做到这一点尚不了解。看来,如果他们失去了Internet连接,那么我们将不得不进行DNS更改以将流量转发到外部计算机……这当然需要时间。

有想法吗?

更新

我今天与客户进行了讨论,他们澄清了这个问题。

他们坚持使用100%的数字,说即使在发生洪水的情况下,应用程序也应保持活动状态。但是,只有在我们为他们托管时,该要求才会生效。他们说,如果应用程序完全位于服务器上,他们将满足正常运行时间的要求。你可以猜得出我的回应。


49
不要小看黑客造成的巨大停机时间,请看一下Sony和PlayStation网络。您可以保证他们有相同的%100正常运行时间构想以及用于支持它的金钱/硬件。与客户明确表示100%正常运行时间是不可行的期望,即使是Google技术人员也会m咕“ 100%正常运行时间”。提示是要研究使用动态DNS,它们只能缓存60秒,这应该包括操作系统和本地DNS服务器。
Silverfire

182
我本人会尽快从此客户端运行。我怀疑这不是他们可能拥有的最后一个疯狂想法(从技术角度来看)。
GregD 2011年

137
希望我能投票给您的客户。
joeqwerty

81
如果您确定100%的正常运行时间,请告诉我。我将用它创建一个业务并将其出售给Google。不可能保证100%。甚至像Microsoft,Amazon或Google这样的公司也不会走高,因为他们知道这是不可能的。我见过的最好的是99.999%,甚至是一个拉伸(一年5分钟)。您可能要做的最好的办法就是可靠地达到99.99%。
马特

39
只需弥补一个疯狂的高价就可以提出他们的疯狂要求。那可能会使他们恢复理智。要么,要么它将使他们离开,寻找愿意对他们说谎的人。
Nate CK

Answers:


368

这是Wikipedia的简便易用图表:

在此处输入图片说明

有趣的是,在2007年排名前20位的网站中,只有3个能够达到神话般的5个9或99.999%的正常运行时间。它们分别是Yahoo,AOL和Comcast。在2008年前4个月,一些最受欢迎的社交网络甚至还没有达到这个水平。

从图表中可以明显看出,追求100%正常运行时间是多么可笑...


62
Pingdom也不会每秒检查一次。最重要的是,那些达到五分之九的设备可能仍然存在Pingdom可能未检测到的局部中断,或者故障导致某些服务无法使用,同时仍在响应ping。
ceejayoz

8
这本身就使五个九变了……
GregD 2011年

5
精确地 他们有数十亿美元可以合作!
ceejayoz

43
很抱歉打扰到正在进行的聊天,但是OP的问题是如何在技术层面上朝着100%正常运行时间的目标迈进,而不是从概念上讲,我相信他知道并非总是可能的,因为硬件会自然发生和环境。我们可以帮他吗?
大卫·德·弗雷塔斯

5
致OP:我已经看到SLA在“正常维护之外”的情况下保证了正常运行时间。当然,通常每月都会安排一次正常维护,以进行更新,修补程序等,这些时间通常发生在每月最不繁忙的一天中的每月最不繁忙的时间(通常在深夜)。他们必须对业务有某种类型的度量标准。在那段时间,您才能为他们提供更好的正常运行时间(4个9)。
GregD 2011年

186

要求他们定义100%以及如何在什么时间段内进行测量。它们可能意味着尽可能承受接近100%的费用。给他们成本。

详细说明。这些年来,我一直在与客户讨论可能有荒谬要求的问题。在所有情况下,它们实际上只是使用不够精确的语言。

他们经常以看起来绝对的方式来构架事物,例如100%,但实际上,在更深入的研究中,它们足够合理,可以进行成本/收益分析,而成本/收益分析则需要对降低风险的数据进行成本计算。问他们如何衡量可用性是一个至关重要的问题。如果他们不知道这些,那么您必须向他们建议这需要首先定义。

我会请客户定义如果站点在以下情况下发生故障,将会对业务影响/成本产生什么影响:

  • 在他们最忙的时间x个小时
  • 至少在x个小时的繁忙时间

以及他们如何衡量这一点。

通过这种方式,您可以与他们一起确定“ 100%”的正确水平。我怀疑通过问这些问题,他们将能够更好地确定其他需求的优先级。例如,他们可能想要支付一定级别的SLA并损害其他功能才能实现此目的。


21
同意 他们可能只是意味着“非常高”的正常运行时间(超过90s?),并且具有相当可靠的故障转移策略。如果没有,那么对所涉及成本规模的解释将有望说服他们……
Martin Dow

32
+1表示不跳到结论,而只是要求客户解释他们的想法。
sleske 2011年

4
我赞同“不跳到结论”的说法...如果客户意味着100%的正常运行时间(减去计划的维护),那么这可能是更合理的要求。
蒂姆·雷迪

1
关于业务影响,我们实际上完全了解并了解他们的业务,并且该站点停机所涉及的成本不是财务上的。更像是当地人用干草叉,潜在的绞肉等出现;;)想象有40,000人在您的前门尖叫着出现。那就是他们想要满怀激情地避免的事情。
NotMe 2011年

7
@ChrisLively那么,更多的理由是需要对风险有一个成熟的理解。安全工程的主要范例是概率风险评估。有些系统可能会杀死(而不只是烦扰)成千上万的人,但他们的失败概率仍然很低,希望人们能很好理解,但概率不为零。
poolie 2011年

140

您的客户很疯狂。无论您花多少钱,都不可能实现 100%的正常运行时间。简单明了-不可能。看一下Google,Amazon等。他们几乎无休止地投入基础设施,但他们仍然设法停机。您需要向他们传达此信息,如果他们继续坚持要求他们提出合理的要求。如果他们没有意识到一定程度的停机是不可避免的,那就放弃他们。

也就是说,您似乎具有扩展/分发应用程序本身的机制。网络部分将需要涉及到不同ISP的冗余上行链路,获取ASN和IP分配,并深入了解BGP和实际路由设备,以便IP地址空间可以在需要时在ISP之间移动。

显然,这是一个非常简洁的答案。您没有需要这种正常运行时间的应用程序的经验,因此,如果您想获得接近神话般的100%正常运行时间的信息,则确实需要聘请专业人员。


7
同意 完全。疯。
jdw 2011年

2
他们曾经??
Sirex

2
@Sirex提到最近的CERN实验,发现中微子的传播比光快。结果尚未得到独立科学家的证实。
TC1

9
@ TC1我敢打赌,您的200美元没有筹到。
dpatchery 2011年

4
@ErikA要求100%正常运行时间表示无视系统的技术特征。没关系,因为客户的工作是做什么的。您的工作是设计IT系统。像这样的困难客户可能是噩梦,但他们也可能成为您最好的客户。
duffbeer703

54

好吧,那绝对是一个有趣的话题。我不确定我是否想让自己按合同规定必须100%正常运行时间,但是如果我必须这样做,我会看起来像这样:

从完全不在网络上的负载均衡器上的公共IP开始,并构建至少两个公共IP,以便一个可以故障转移到另一个。诸如Heatbeart之类的程序可以帮助自动进行故障转移。

Varnish主要被称为缓存解决方案,但它也实现了非常不错的负载平衡。也许这将是处理负载平衡的好选择。可以将其设置为具有1到n个后端(可选地按控制器分组),以随机或循环方式负载均衡。可以使Varnish足够聪明,以检查每个后端的运行状况,并将不正常的后端退出循环,直到它重新联机。后端不必位于同一网络上。

这些天,我有点喜欢Amazon EC2中的Elastic IP,因此我可能会在不同区域或至少在同一区域的不同可用性区域中的EC2中构建负载均衡器。如果需要的话,您可以选择手动(禁止上帝使用)旋转新的负载平衡器,然后将现有的A记录IP移到新的盒子中。

不过,Varnish无法终止SSL,因此,如果您担心这一点,则可以改用Nginx之类的东西。

您可以将大多数后端都放在客户网络中,而将一个或多个后端放在他们的网络之外。我相信,但不是100%肯定,您可以确定后端的优先级,以便您的客户端计算机将获得优先级,直到它们全部不正常为止。

如果执行此任务并毫无疑问地完善它,那就是从那里开始的。

但是,正如@ErikA指出的那样,这是Internet,并且总会有部分网络不受您的控制。您需要确保您的法律只将您与您所控制的事物联系在一起。


2
一段时间以来,我一直在考虑将Amazon和MS用于云部署,但是在过去的几个月中,这两家公司都发生了重大故障。SSL至关重要。
NotMe 2011年

3
如果要使用Amazon,则肯定要在5个可用区域周围分布计算机。他们的所有区域都不可能同时消失。
jdw 2011年

11
+1用于实际解决OP的主要问题。
菲尔,

只要链中存在未分布的事物(在您的情况下为心跳,除非您在远程计算机上同时运行多个实例,并且它们彼此监视,否则您总是会出现故障点jdw)服务器,由于路由过程中出现网络故障,它们中的任何一个都可能会或可能不会看到)。这使我们陷入“宕机”。如果故障不在路由路径中,则服务器可能已启动并且正在运行,并且对于客户端而言仍然不可用,而没有心跳检测到它。
jwenting 2011年

同意 正如所有人都指出的那样,没有100%的正常运行时间。您所能做的就是尝试,而我所描述的就是我将如何尝试。
jdw 2011年

30

没问题-合同措词略有修改:

...确保正常运行时间为100%(四舍五入到小数点后零位)。


2
+1表示100%不是100,0%或100,000%等。十进制数字很重要,它们表示精度;)
Danubian Sailor

4
根据某些约定,“ 100%”只有一个有效数字,因此,介于二分之一和一之间的所有数字都将舍入为“ 100%”;50%将舍入到100%。
Thomas Levine

1
根据计数的标准,有些人会说50%具有两个meeningfull数,而100%具有三个meeningful数。50,5和100同样精确。其他人将计算小数点后的位数。那么50,5和100,4一样准确。如果没有其他说明,我将假设100%为99.5%以上。100.0%为99.95%,同比增长等等
Tillebeck

26

如果Facebook和Amazon无法做到这一点,那么您就无法做到。就这么简单。


17
他可能比他们所有人民的总和更聪明,谁知道:p
Matt Matt

3
100%的正常运行时间不一定非得是真正的人-这意味着:在需要的时间内100%可用。例如,银行系统应始终可用,并且运行良好。仅仅因为他们每年停机1秒钟,并不意味着他们未能达到其100%正常运行时间目标。
大卫·德·弗雷塔斯

13
@DavidFreitas-我认为合同中的内容通常很直译……
UpTheCreek 2011年

2
@Matt仅仅是因为Facebook / Amazon无法做到这一点,并不意味着一个较小的网站就无法做到。与小型网站相比,许多大型网站面临的难题要克服得多。
Xorlev 2011年

1
因此,您要说的是,由于有一些客户端出错,因此您没有100%的正常运行时间。加上dns并不是即时开关,因为您的ISP忽略了短TTL
Mike

25

从黑客新闻中添加oconnore的答案

我不明白问题是什么。客户希望您为灾难做计划,而他们并不是以数学为导向,因此要求100%的概率听起来是合理的。就像工程师一样,这位工程师想起了prob&stat 101的第一天,却没有考虑到客户可能不会这样做。当他们这么说的时候,他们并没有考虑核冬天,而是在考虑Fred将咖啡倒在办公室服务器上,磁盘崩溃或ISP崩溃了。此外,您可以完成此操作。借助地理位置不同,独立的自我监控服务器,您基本上不会停机。3台服务器以独立(1)的速度运行,三台9台可靠性,并具有良好的故障转移模式,因此您的预期停机时间不到每年一秒钟(2)。即使这一次发生 您仍处于合理的Web连接SLA范围内,因此实际上不存在停机时间。客户仍然必须处理世界末日的情况,但是哥斯拉将其排除在外,他​​将获得“始终”运行的服务。

(1)洛杉矶的服务器与波士顿的服务器相当独立,但是是的,我知道有一些涉及核战争,中国黑客使电网崩溃的交叉路口等。我不认为您的客户会因为这个。

(2)DNS故障转移可能会增加几秒钟。您仍然处于客户必须每年重试一次请求的情况,这又是在合理的SLA范围内,并且通常不将其与“停机时间”联系在一起。使用在故障时自动重新路由到可用节点的应用程序,这可能不会引起注意。


6
问题在于他们是用合同话说的。这意味着,如果确实发生了灾难并且您需要十多秒钟的时间才能通过备份使站点恢复在线状态,那么他们将有资格提起诉讼。
2011年

@Shadur:如果他们真的想要,那么你必须真的向他们收费。将服务器分布在各地,希望不会到处都有灾难。
丛林猎人

3
我看过一个提供100%正常运行时间保证或退款的网站。诀窍是他们收了船货,分成了几个月。因此,有些月份没有薪水,您可以安排一切工作,并在可以的几个月内弥补损失。
jldugger 2011年

17

您被要求做一些不可能的事情。

在此处查看其他答案,与您的客户坐下,并解释为什么这是不可能的,并评估他们的反应。

如果他们仍然坚持100%的正常运行时间,请礼貌地告知他们无法完成,并拒绝合同。您将永远无法满足他们的需求,如果合同不能完全解决您的问题,您将被罚款。


2
需要定义100%,即除了进行维护或升级时100%可用,而且该时间最多只能限制在每个月几个小时的安静时间内。在这种情况下,这完全取决于 Web应用程序的用途和用途……
David d C e Freitas

1
并定义“停机时间”。从理论上讲,即使您不能控制他们之间的整个网络,也无法保证他们能够从其位于费尔班克斯的办公室访问奥马哈的服务器(尽管可以保证服务器已启动并正在运行)。
jwenting 2011年

恕我直言,这些定义是否要求“ 100%正常运行时间”是无关紧要的:即使您协商预定的维护并建立N + N冗余(如果一个小故障导致计划外的重新引导或服务闪烁),您也会破坏SLA。 如果您正在协商3、4或5个9个SLA,则绝对相关。
voretaq7 2011年

但是取决于SLA的条款,不是吗?如果您每月获得10万美元的报酬,并且每分钟的停机时间需支付1000美元的罚款,那么这可能是完全可行的(如果您还有其他合同来分摊24/7现场系统管理员的费用)。
Michael Borgwardt

@MichaelBorgwardt绝对有一些方法可以从纯数字的角度来看使其“正常工作”,但是由于潜在的不良公关,我仍然会拒绝($ _CLIENT在Twitter上告诉世界'我们倒闭了,因为$ _PROVIDER不称职而且无法达到他们的SLA!')。我个人宁愿有10个较小的,更合理的客户每月给我$ 10ka :-)
voretaq7

13

相应地定价,然后在合同中规定,超过SLA的任何停机时间将按其支付的价格退款。

我上一份工作的ISP就是这样做的。我们可以选择正常运行时间为99.9%的“常规” DSL线路,价格为$ 40 / mo,或者是T1s的绑定三人组,正常运行时间为99.99%,价格为$ 1100 / mo。每月经常发生10个小时以上的停机,这使他们的正常运行时间大大低于40美元/月的DSL,但我们只退还了大约15美元左右,因为这就是每小时*小时的费用。他们从这笔交易中弄得像土匪。

如果您每月为$ 450,000支付100%正常运行时间的费用,而您只达到99.999%,则需要向他们退还$ 324。我愿意打赌,假设完全分布式的colos,多个1层上行链路,fantpant硬件等,基础设施成本达到99.999%的水平大约为每月$ 45,000。


3
如果您看到有人承诺100%的正常运行时间,那么这正是他们在做什么。保证100%的正常运行时间与交付正常运行时间之间存在差异。如果客户试图向您报价竞争对手的SLA,最好向客户解释这一点。
sjbotha 2011年

10

如果专业人士质疑99.999%的可用性是否切实可行或在财务上可行,那么99.9999%的可用性就更不可能或不可行。更不用说100%了。

您将无法长时间满足100%可用性的目标。您可能会花上一周或一年的时间,但是随后会发生某些事情,您将承担责任。支出的范围可能从声誉受损(您答应过,没有兑现)到因合同罚款而破产。


10

有两种类型的人要求100%的正常运行时间:

  1. 完全不了解计算机,计算机系统或Internet的人。*
  2. 有意冒充自己的人,要么测试您说“不”的能力(Google“橙汁测试”),要么尝试获得某种合同SLA杠杆,以免日后付钱给您。

我的建议在很多情况下都遇到了这两种类型的客户,我的建议是不要选择此客户。让他们发疯。

*同一个人可能会毫无疑问地询问光速旅行,恒动,冷聚变等问题。


2
橙汁测试+1。我喜欢但不知道:)
Oliver M Grech 2013年

8

我会与客户沟通以确定他们100%正常运行时间的含义。他们可能没有真正看到99%正常运行时间和100%正常运行时间之间的区别。对于大多数人(即不是服务器管理员),这两个数字是相同的。


6

100%正常运行时间?

这是您需要的:

多个(&冗余)DNS服务器,指向世界各地的多个站点,并且每个ISP都具有正确的SLA。

确保DNS服务器设置正确,并且可以有效识别TTL。


1
是的,DNS是一个好的开始-例如nslookup google.com,如果其中一些不起作用,则返回6个不同的IP以实现冗余。另外,请访问RobTex.com一个不错的网站,以了解某些域的配置,例如robtex.com/dns/google.com.html#records
David d C e Freitas

6

这很容易。Amazon EC2 SLA明确指出:

“年度正常运行时间百分比”是通过从100%中减去Amazon EC2处于“区域不可用”状态的服务年中5分钟的百分比得出的。

http://aws.amazon.com/ec2-sla/

只需将“正常运行时间”定义为相对于整个服务包,您实际上可以100%地保持运行时间,并且应该没有问题。

另外,值得指出的是,SLA的全部要点是定义您的义务是什么以及如果您不能履行这些义务会发生什么。客户是否要求3个9或5个9个或一百万个9个都没关系-问题是他们在何时/是否无法交付时会得到什么。显而易见的答案是为订单项提供100%正常运行时间,价格是您要收取的价格的5倍,如果您错过了该目标,他们将获得4倍的退款。您可能会得分!


5

只有将DNS更改配置为花费时间,DNS更改才会花费时间。您可以将记录上的TTL设置为一秒钟-唯一的问题是确保您及时响应DNS查询,并且DNS服务器可以处理该级别的查询。

这正是GTM在F5大IP中的工作方式-默认情况下,DNS TTL设置为30秒,如果集群的一个成员需要接管,则DNS将被更新,新IP几乎立即被占用。最大中断时间为30秒,但这是边缘情况,平均中断时间为15秒。


10
根据我的经验,某些DNS服务器会忽略它们认为令人讨厌的TTL(尽管有RFC)。在全球范围内,少于5分钟的时间变得有些不可靠。
jdw 2011年

13
@Paul忽略现实是不可接受的做法,无论它多么激怒每个人。
MDMarra 2011年

5
我对此与jdw在一起。我已经看到许多DNS服务器完全忽略了TTL,甚至是1小时的设置,默认都恢复为24小时左右。
NotMe 2011年

6
@Paul-OP无法控制地球上每个ISP的DNS解析器。因此,他们没有选择说“如果您要使用我们的网站,请不要使用Comcast / Roadrunner / whomever作为您的ISP,因为他们会忽略我们的TTL设置”。这完全是他们无法控制的,因此太脆弱了,不能被认为是恕我直言的解决方案。该解决方案必须包括某种方法,以能够在内部强制IP,而不必依赖于网络中可能无法协作的其他位。
jdw 2011年

3
这就像没有UPS,因为电源“应该可以正常工作”。这不是构建系统的前瞻性思维方式。如果您知道系统中存在脆弱的部分,则无论出于何种原因,都应设法解决这一问题。
jdw 2011年

5

您知道这是不可能的。

毫无疑问,客户专注于看到“ 100%”,因此,除了[不是您的错的所有合理原因]之外,您可以做的最好的事情就是保证100%。


毫无疑问,客户不需要任何解决方案。他们想要下降。因此他们可以说,他们至少尝试过。
mbx 2011年

也许会。您正在假设一个高水平的线索。
Marcin

4

虽然我怀疑100%是否可行,但您可能需要考虑使用Azure(或具有类似SLA的产品)。怎么回事:

您的服务器是虚拟机。如果一台服务器上出现硬件问题,则您的虚拟机将移至新计算机。负载平衡器负责重定向,因此客户不应看到任何停机时间(尽管我不确定您的会话状态将如何受到影响)。

即便如此,即使进行了故障转移,精神错乱也要达到99.999和100的界限。

您必须完全控制以下因素。
-内部和外部的人为因素,包括恶意和阳imp。这样的一个例子是有人将某些东西推入生产代码中,从而使服务器瘫痪。更糟的是,破坏活动如何?
-业务问题。如果您的提供商失去了业务或忘记支付电费,或者只是在没有充分警告的情况下决定停止支持您的基础架构,该怎么办?
-大自然 如果无关的龙卷风同时袭击了足够多的数据中心以致使备份能力不堪重负怎么办?
-完全没有错误的环境。您确定没有第三方或核心系统控件没有出现但仍可以在将来出现的极端情况吗?
-即使您完全控制了上述因素,您确定在监视系统是否正常运行时,确定要进行监视的软件/人员也不会带来假阴性吗?


2
最近,Azure和EC2都发生了几乎完整的故障。我认为最近由于DNS服务器上的错误配置条目而使Azure最近被删除了。无论哪种方式,谢谢您的信息。
NotMe 2011年

并且当节点关闭时,如果您的负载平衡器(执行切换)没有引起注意(它的监视器也可能没有引起注意),那么您仍然不知所措。
jwenting 2011年

1
我认为您的意思是“无能”。“影响力”不应该对IT员工的工作能力产生很大影响。
mfinni 2011年

4

坦白地说,就黑客攻击而言,至少没有动摇,100%完全是疯了。最好的选择是做Google和Amazon所做的事情,因为您有一个地理分布式主机解决方案,您可以在多个地理位置的多个服务器之间复制站点和数据库。这将确保它不会发生任何重大灾难,例如将互联网骨干网切断到某个区域(确实会不时发生)或近乎世界末日的灾难。

我将针对此类情况(DDOS,Internet骨干网削减,世界末日的恐怖袭击或大战等)添加一个条款。

除此之外,还要研究Amazon S3或Rackspace云服务。本质上,云设置不仅会在每个位置提供冗余,而且还会提供流量的可伸缩性和地理位置分布,以及在发生故障的地理区域周围重定向的能力。虽然我的理解是,地理分布要花费更多的钱。


3

我只是想另一种声音添加到“它可以(理论上)来完成”党。

无论他们付给我多少钱,我都不会签有这份合同,但作为研究问题,它有一些相当有趣的解决方案。我对网络的概述步骤还不熟悉,但是我想将与网络相关的配置+电气/硬件布线故障转移+软件故障转移结合起来,可能会在某些配置或其他工作中实际完成。

任何配置中的某处几乎总是存在单个故障点,但是如果您努力工作,则可以将故障点推向可以“实时”修复的状态(即,根dns掉了,但值仍被缓存)其他地方,以便您有时间修复它)。

再次,不是说它是可行的。我只是不喜欢没有一个答案能解决这个问题“不在外面”的事实-如果他们考虑透彻,那不是他们真正想要的东西。


3

重新考虑衡量可用性的方法,然后与客户一起制定有意义的目标

如果您经营的是大型网站,则正常运行时间根本没有用。如果您在客户最需要查询(流量高峰)的情况下放弃查询10分钟,那么与周日凌晨3点长达一个小时的停机相比,这可能对企业造成更大的破坏。

有时,大型网络公司使用以下指标来评估可用性或可靠性:

  1. 成功回答的查询的百分比,没有服务器端错误(HTTP 500)。
  2. 在特定目标延迟以下回答的查询百分比。
  3. 删除的查询应计入您的统计信息(请参阅下文)。

可用性应该使用样品的探针,而这正是外部实体如Pingdom的和pingability能够报告进行测量。不要仅仅依靠它。如果您想做对,则每个查询都应计数。通过查看实际获得的成功来衡量您的可用性。

最有效的方法是从负载均衡器收集日志或统计信息,并根据上述指标计算可用性。

查询删除的百分比也应计入您的统计信息。可以将其与服务器端错误归为同一类。如果网络或DNS或负载平衡器之类的其他基础结构存在问题,则可以使用简单的数学方法来估算丢失的查询数量。如果您希望在一周中的这一天进行X次查询,但获得X-1000,则可能会丢弃1000条查询。将您的流量绘制成每分钟(或每秒)图表的查询次数。如果出现间隙,则删除查询。使用基本几何形状来测量这些间隙的面积,这将为您提供删除查询的总数。

与您的客户讨论此方法并解释其好处。通过测量其当前可用性来设置基准。他们将清楚地知道100%是不可能的目标。

然后,您可以根据基准上的改进签订合同。假设,如果他们目前正在经历95%的可用性,则可以保证将情况提高到98.5%,从而将这种情况提高十倍

注意:这种测量可用性的方法有一些缺点。首先,除非您使用现有工具来完成日志收集,处理和生成报告,否则可能并不容易。其次,应用程序错误可能会损害您的可用性。如果应用程序质量低劣,它将产生更多错误。解决方案是仅考虑由负载平衡器创建的500,而不考虑来自应用程序的500。

这样可能会使事情变得有些复杂,但这仅是衡量服务器正常运行时间的第一步。


3

尽管有人在这里指出100%疯狂不可能,但他们还是以某种方式错过了真正的意义。他们认为,这样做的原因是即使最好的公司/服务也无法实现这一目标。

好吧,这比这简单得多。从数学上讲这是不可能的

一切都有可能。您存储服务器的所有位置可能同时发生地震,从而破坏了所有服务器。可以接受的是,这是一个非常小的概率,但它不是0。所有互联网提供商都可能同时面临恐怖分子/网络攻击。同样,可能性也不大,但也不是零。无论您提供什么,都可以得到非零概率的情况,这会使整个服务瘫痪。因此,您的正常运行时间也不可能是100%。


实际上,我会疯掉或变得愚蠢,称其为愚蠢。没有人知道是100%。
quadruplebucky

2

阅读有关使用统计抽样的制造质量控制的书。本书中的一般性讨论(在大学的一般统计课程中,任何管理者都会接触到的概念)规定了从花费从千分之一到百万分之一到百万分之一到十亿分之一的指数增长。本质上,达到100%正常运行时间的能力将花费几乎无限量的资金,有点像将物体推向光速所需的燃料量。

从性能工程的角度来看,我会拒绝这种要求,因为它既不可测试又不合理,因为这种表达更多的是渴望,而不是真正的需求。由于存在任何应用程序依赖关系,而这些依赖关系存在于任何应用程序之外,无法用于联网,名称解析,路由,底层架构组件或开发工具传播的缺陷,因此任何人都不可能保证100%的正常运行时间。


1

我认为客户实际上并没有要求100%的正常运行时间,甚至没有要求99.999%的正常运行时间。如果您查看他们的描述,那么他们正在谈论的是如果流星取出其现场数据中心,则从中断的地方接起。

如果要求外部人员甚至不注意,那么必须有多大?发出Ajax请求重试并向最终用户显示微调器30秒是否可以接受?

这些就是客户关心的事情。如果客户实际上是在考虑精确的SLA,那么他们将足以将其表示为99.99或99.999。


如果客户认为他们希望“ 100%的正常运行时间”,而那次合同最终会出现混乱,那么如果最终在法庭上,您可能会受到拘束。最好说出来,帮助客户了解他们真正想要的东西,而不是假设您知道他们在想什么。
克里斯S

哦,我同意在签订合同之前必须先清除此问题。我只是说这需要解决,因为客户端没有传达他们真正想要的东西,而不是客户端要求一些荒谬的事情。
凯文·彼得森

1

我的2美分。我负责一家财富5强公司的非常受欢迎的网站,该网站将为超级碗广告。我不得不应对巨大的流量高峰,而解决问题的方法是使用Akamai之类的服务。我不在Akamai工作,但是我发现他们的服务非常好。他们拥有自己的,更智能的DNS系统,该系统知道特定的节点/主机处于高负载状态或处于关闭状态,并可以相应地路由流量。

关于他们的服务的整洁之处在于,我真的不需要做任何非常复杂的事情即可将自己数据中心中服务器上的内容复制到其数据中心。此外,通过与他们的合作,我知道他们大量使用了Apache HTTP服务器。

虽然不是100%的正常运行时间,但您可以考虑使用这些选项在全球范围内分发内容。据我了解,Akamai还具有对流量进行本地化的功能,这意味着如果我在密歇根州,我从密歇根州/芝加哥的服务器中获得了内容,而如果我在加利福尼亚州,那么我应该是从加利福尼亚州的服务器中获得了内容。


-1,因为这是一个实际的答案,但根本没有用。该网站上的所有问题都可以通过“雇用其他人来回答”,但这不是我们在这里的原因。
伊夫·容克伊拉

我不敢苟同。“根本没用吗?” 这对我来说绝对是最有用的,并且与您的“雇别人做”评论相反,我想您认为这家伙应该挖槽自己的光缆并设计自己的交换机,而不是购买它们?伊夫,你是认真的吗?您听起来像是一个没有在IT领域花费很多时间的人。
基洛

0

无需异地故障转移,只需从内部和外部两个位置同时运行应用程序。并同步两个数据库...如果内部发生故障,内部人员仍然可以工作,而外部人员仍然可以使用该应用程序。内部重新联机后,请同步更改。您可以为一个域名有两个DNS条目,甚至可以是具有轮询机制的网络路由器。


0

对于外部托管的网站,您最接近100%正常运行时间的是将您的网站托管在Google的App Engine上,并使用其高复制数据存储区(HRD)来自动在至少三个数据中心之间实时复制数据。同样,App Engine前端服务器会自动为您缩放/复制。

但是,即使拥有Google的所有资源和世界上最复杂的平台,App Engine SLA正常运行时间的保证也只有“每个日历月中99.95%的时间”。


0

简单直接:Anycast

http://en.wikipedia.org/wiki/Anycast

这就是cloudflare,Google和其他任何大公司用于冗余,低延迟,跨大陆故障转移/平衡的功能。

但也要记住,不可能有100%的正常运行时间,而且从99.999%降低到99.9999%的成本要大得多。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.