这个问题更多的是一个math问题,而不是一个服务器的问题,但它是强烈的服务器相关的。
如果我有一台服务器,我可以保证95%的正常运行时间,并且我将这台服务器放在一个2个集群中,那么正常运行时间是多less? 现在,假设我也是这样做的,但是我把它做成3个簇呢?
我们不要把事情看成单一的失败点,而应该把精力集中在这里的math上。 其中一件事情使得这个有点复杂,例如,如果我有2个服务器,那么它们都closures的机会是2 ^ 2,所以这是1/4; 或者3的那2 ^ 3,那么1/8。 考虑到每台服务器都有5%的停机时间,那么总的平均值是那个5%的1/8?
你怎么计算这样的事情?
正常运行时间是一件很滑的事情…如果你想计算一个服务的可用性,那就简单了
amount of time service is available ----------------------------------- x 100 amount of time that has passed
如果您有提供服务的群集,则服务不可用的可能性会下降,但服务的可用性(正常运行时间)计算保持不变。
一个服务器脱机的机会是(1-0.95)两个服务器脱机的机会是(1-0.95)*(1-0.95)= 0.0025等。
因此,使用你的模型,从纯粹的mathangular度来看,一个或两个服务器应该达到99.75%的时间
然而,我不确定使用这样一个math模型是正确的方法来计算您的潜在正常运行时间,因为还有其他因素可能会影响到这两个服务器是共同的,即95%可能是因为5%的时间有一个停电会影响两个服务器,所以有一个集群将没有什么区别
这取决于为什么你的服务器下降了5%的时间。 如果你有95%的时间有电,但是你的服务器是完美无瑕的,那么在同一地点的第二台服务器根本不会增加你的正常运行时间:如果有一台服务器出现故障,两台服务器都会停机。 这是相关失败的一个例子。 很可能至less有一些停机时间是由于影响所有服务器的错误(电源…)造成的。 但是一些停机时间将在服务器之间是独立的 。 如果你想正确地做,你应该分开处理这些事情。 所以你想弄清楚服务器1没有独立错误(p)的可能性,服务器2没有独立的错误(q),并且没有系统错误杀死两个(r)。 假设这些错误是独立的,因此可以将它们相乘:P q r是某个服务器正在运行的概率。
问题是,你不能使用实际的正常运行时间数据给你p,q和r的值,除非如果你只有服务器1,并且它已经达到95%的时间,那么p * r = 0.95。
首先,集群的总可用性或正常运行时间取决于整个集群需要活跃多less集群的一部分才能被视为'up'。
正如你发现的那样,前两种情况计算起来相当简单。 假设在任何给定时间单个服务器在线的概率p = 0.95。 现在,对于三台服务器,它们同时在线的概率是p 3 = 0.857375。
对于相反的情况,在给定的时间内至less有一台机器应该处于活动状态,通过反转问题并查看机器处于脱机状态的概率来计算更容易。 一台机器脱机的概率为q = 1 p = 0.05,因此它们全部同时下降的概率为q 3 = 0.000125,给出概率1- q 3 = 1-(1- p ) 3 = 0.999875,至less有一个是。
3个案例中的2个比较难以计算。 有三种服务器中至less有两种启动的情况有四种可能的情况。 1)ABC起来,2)AB起来,3)AC起来,4)BC起来。 所有这些的概率分别是ppp , ppq , pqp和qpp 。 由于情况是不相交的,所以概率可以加在一起,给出总的A = p 3 + 3 p 2 q = 0.992750。
(这可以扩大到更多的机器,因素是众所周知的二项式系数 ,因此手工计算不同的情况主要是作为练习)。
当然,像这样的计算通过使用现成的计算机程序更容易处理…至less有一个在线计算器可以在这里find:
http://stattrek.com/online-calculator/binomial.aspx
inputinput值:成功概率= 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%的时间。
添加第三个服务器将以相同的方式遍历。 第一个2合起来已经是99.75%,所以第三个合起来就是:99.75%+(1-99.75%)* 95%= 99.9875%。 等等等等。 这与Phil的答案很接近,但还是有点不同,因为你需要把前面的迭代的结果用到下一个迭代中去。
对于依赖彼此的组件,只需要乘以可用性百分比即可,所以如果有两个组件是可用的50%,则可用总计可用性为25%(即,只有在两个组件都可用时,系统才能工作)。
假设每个服务器的正常运行时间与其他时间无关,则总的正常运行时间是
1 – (0.05)^ n
其中n是服务器的数量,0.05是一台服务器的停机概率