Jer*_*eer 11 high-availability
这个问题更像是一个数学问题而不是一个服务器问题,但它与服务器密切相关。
如果我有一台服务器,我可以保证 95% 的正常运行时间,并且我将该服务器放在 2 个集群中,那么正常运行时间是多少?现在,假设我也这样做,但我将其设为 3 个集群?
让我们不要考虑诸如单点故障之类的事情,而只关注此处的数学。使这有点复杂的一件事是,例如,如果我有 2 个服务器,那么它们都关闭的可能性是 2^2,所以是 1/4;或者 3 是 2^3,所以 1/8。考虑到我对这些服务器中的每一个都有 5% 的停机时间,总平均值会是那 5% 的 1/8 吗?
你会如何计算这样的事情?
use*_*517 11
正常运行时间是一件很棘手的事情...如果您想计算服务的可用性,那么它很简单
amount of time service is available
----------------------------------- x 100
amount of time that has passed
Run Code Online (Sandbox Code Playgroud)
如果您有一个提供服务的集群,那么服务变得不可用的可能性会降低,但服务的可用性(正常运行时间)计算保持不变。
一台服务器离线的几率是 (1 - 0.95) 两台服务器离线的几率是 (1 - 0.95) * (1 - 0.95) = 0.0025 等等...
因此,使用您的模型并从纯数学的角度来看,一台或两台服务器应该在 99.75% 的时间内正常运行
但是,我不确定使用这样的数学模型是否是计算潜在正常运行时间的正确方法,因为还有其他因素可能会影响它,这对两台服务器来说都是常见的,即 95% 可能是因为 5% 的时间停电会影响两台服务器,因此拥有集群没有任何区别
小智 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 至少有一个上升。
3 种情况中的 2 种情况稍微难以计算。有四种可能的情况,其中至少有三分之二的服务器已启动。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) 没有像组件老化这样的事情会导致服务器在以下情况下发生故障或几乎同时。
我做了更多的挖掘并找到了这块拼图。
以可用性为 95% 的服务器为例,然后添加第二台服务器会将可用性提高到:95% + (1-95%)*95% = 99.75%。其背后的逻辑是,当第一台服务器出现故障(5% 的时间)时,第二台服务器在 95% 的情况下仍处于运行状态。
添加第三台服务器将以相同的方式迭代此过程。前 2 个合计已经有 99.75% 可用,因此添加第 3 个将是:99.75% + (1-99.75%)*95% = 99.9875%。等等等等。这与菲尔的答案很接近,但仍然有点不同,因为您需要获取上一次迭代的结果并在下一次迭代中使用它。
对于相互依赖的组件,您只需将可用性百分比相乘即可,因此,如果您有 2 个组件的可用性为 50%,那么您的总可用性为 25%(即,系统仅在两个组件都工作时才工作。)
| 归档时间: |
|
| 查看次数: |
8969 次 |
| 最近记录: |