这个问题更多的是数学问题而不是服务器问题,但它与服务器密切相关。
如果我有一台能够保证 95% 正常运行时间的服务器,并且我将该服务器放在 2 个集群中,那么正常运行时间是多少?现在,假设我也这样做,但我将其设为 3 个集群?
让我们不考虑单点故障之类的事情,而只关注这里的数学。使这有点复杂的一件事是,例如,如果我有 2 台服务器,它们都关闭的机会是 2^2,所以这是 1/4;或者 3 是 2^3,所以 1/8。考虑到这些服务器中的每一个都有 5% 的停机时间,那么总平均值会是 5% 的 1/8 吗?
你会如何计算这样的东西?
正常运行时间是一件很棘手的事情......如果您想计算服务的可用性,那么它很简单
如果您有一个提供服务的集群,那么服务变得不可用的可能性会下降,但服务的可用性(正常运行时间)计算保持不变。
一台服务器离线的机会是 (1 - 0.95) 两台服务器离线的机会是 (1 - 0.95) * (1 - 0.95) = 0.0025 等等...
因此,使用您的模型并从纯数学的角度来看,一台或两台服务器应该在 99.75% 的时间内运行
但是,我不确定使用这样的数学模型是否是计算潜在正常运行时间的正确方法,因为还有其他可能影响它的因素,这对两台服务器来说都很常见,即 95% 可能是因为 5% 的时间停电会影响两台服务器,因此拥有集群不会有任何区别
这取决于为什么您的服务器有 5% 的时间停机。如果您 95% 的时间都拥有电源,但您的服务器在其他方面完美无瑕,那么在同一位置的第二台服务器根本不会增加您的正常运行时间:如果一台服务器出现故障,那么两个服务器都会停机。这是关联失败的一个示例。至少您的某些停机时间很可能是由于影响所有服务器的错误(电源...)。但有些停机时间会独立服务器之间。如果你想正确地做,你应该分别处理这些事情。因此,您想计算出服务器 1 没有独立错误 (p) 和服务器 2 没有独立错误 (q) 以及没有系统性错误会杀死两者 (r) 的概率。假设这些错误是独立的相对安全,因此您可以将它们相乘:p q r 是某个服务器启动的概率。
问题是,您不能使用实际正常运行时间数据来为您提供 p、q 和 r 的值,除非您只有服务器 1 并且 95% 的时间都在运行,那么 p*r = 0.95。
首先,集群的总可用性或正常运行时间取决于集群的多少部分需要处于活动状态才能使整个集群被视为“启动”。
正如您所发现的,前两种情况的计算非常简单。让单个服务器在任何给定时间在线的概率p = 0.95。现在,对于三台服务器,它们同时在线的概率是p 3 = 0.857375。
对于相反的情况,在给定时间至少应该有一台机器处于活动状态,通过反转问题并查看机器离线的概率来计算更容易。单台机器离线的概率是q = 1- p = 0.05,因此它们同时停机的概率是q 3 = 0.000125,给出概率 1- q 3 = 1-(1- p ) 3 = 0.999875 至少有一个上涨。
三分之二的情况稍微难以计算。有四种可能的情况,其中至少三分之二的服务器启动。1) ABC 上涨,2) AB 上涨,3) AC 上涨,4) BC 上涨。所有这些的概率分别是ppp、ppq、pqp和qpp。由于案例是不相交的,因此可以将概率相加,得出总 A = p 3 + 3 p 2 q = 0.992750。
(这可以扩展到更多的机器。这些因素是众所周知的二项式系数,因此手工计算不同的情况主要是一种练习。)
当然,通过使用现成的计算机程序来处理这样的计算要容易得多......至少可以在这里找到一个在线计算器:http:
//stattrek.com/online-calculator/binomial.aspx
输入输入值:成功概率 = 0.95,试验次数 = 3,成功次数 = 2,我们得到结果“累积概率:P(X ≥ 2) = 0.99275”。还给出了一些其他相关值,在线工具也可以轻松玩其他数字。
是的,以上所有假设都假设服务器独立发生故障,即a)我忽略了影响整个集群的任何问题,b)没有任何像组件老化这样的东西会使服务器可能发生故障或几乎同时。
每台服务器有 5% 的停机时间,因此将其相乘 - 0.05*0.05=0.0025,得到 1-0.0025=0.9975 - >99% 的正常运行时间。使用 3 台服务器,您的正常运行时间为 1-0.000125=0.999875 >99.9%。
我通常认为独立主机(带有冗余 HDD 和 PSU)的可用性为 97%,2N 冗余 >99.9%,3N 冗余 >99.99%。
我做了更多的挖掘,发现了这块拼图。
以可用性为 95% 的服务器为例,添加第二台服务器会将可用性提高到:95% + (1-95%)*95% = 99.75%。这背后的逻辑是,当第一台服务器关闭时(5% 的时间),第二台服务器仍有 95% 的时间处于运行状态。
添加第三台服务器将以相同的方式迭代。前两个加起来已经有 99.75% 可用,所以加上第三个将是:99.75% + (1-99.75%)*95% = 99.9875%。等等等等。这与 Phil 的答案很接近,但仍然有些不同,因为您需要获取上一次迭代的结果并在下一次迭代中使用它。
对于相互依赖的组件,您只需将可用性百分比相乘,因此,如果您有 2 个组件可用 50%,则总可用性为 25%(即系统仅在两个组件都工作时工作。)
假设每台服务器的正常运行时间独立于其他服务器,则总正常运行时间为
其中 n 是服务器数量 0.05 是一台服务器的停机概率