Matematicamente, como calcular uma porcentagem de tempo de atividade com base em um número de nós e sua respectiva porcentagem de tempo de atividade?

10

Esta pergunta é mais uma questão de matemática do que uma questão de servidor, mas é strongmente relacionada ao servidor.

Se eu tenho um servidor que eu seria capaz de garantir 95% de tempo de atividade e eu colocaria esse servidor em um cluster de 2, quanto seria o tempo de atividade? Agora, digamos que eu faça o mesmo, mas eu faço um cluster de 3?

Não vamos considerar coisas como ponto único de falha, mas concentre-se apenas na matemática aqui. Uma das coisas que torna isso um pouco complicado é que se, por exemplo, eu tiver 2 servidores, a chance de ambos estarem desligados é 2 ^ 2, então isso é 1/4; ou para 3 isso é 2 ^ 3, então 1/8. Considerando que eu tenho um tempo de inatividade de 5% para cada um desses servidores, a média total seria então de 1/8 desses 5%?

Como você calcularia algo assim?

    
por Jeroen Landheer 04.07.2016 / 11:41

7 respostas

3

Eu fiz mais algumas escavações e encontrei esta peça do quebra-cabeça.

Usando o exemplo de um servidor com uma disponibilidade de 95%, adicionar um segundo servidor aumentaria a disponibilidade para: 95% + (1-95%) * 95% = 99,75%. A lógica por trás disso é que quando o primeiro servidor está inativo (5% do tempo), o segundo servidor ainda está ativo 95% do tempo.

Adicionar um terceiro servidor seria iterar da mesma maneira. Os dois primeiros juntos já são 99,75% disponíveis, então adicionar o terceiro seria: 99,75% + (1-99,75%) * 95% = 99,9875%. E assim por diante. Isso está próximo da resposta de Phil, mas ainda é um pouco diferente, já que você precisa pegar o resultado da iteração anterior e usar isso na próxima.

Para componentes que dependem um do outro, basta multiplicar as porcentagens de disponibilidade. Portanto, se você tiver dois componentes com 50% de disponibilidade, você terá 25% de disponibilidade total (ou seja, o sistema funcionará somente quando ambos os componentes funcionarem.)

    
por 04.07.2016 / 12:26
11

O tempo de atividade é uma coisa escorregadia ... Se você quiser calcular a disponibilidade de um serviço , então é simplesmente

amount of time service is available
-----------------------------------   x 100
  amount of time that has passed 

Se você tiver um cluster fornecendo o serviço, a probabilidade de o serviço ficar indisponível fica inativa, mas o cálculo da disponibilidade (tempo de atividade) do serviço permanece o mesmo.

    
por 04.07.2016 / 11:59
8

A chance de um servidor estar off-line é (1 - 0,95) A chance de ambos os servidores estarem offline é (1 - 0,95) * (1 - 0,95) = 0,0025 etc ...

Então, usando o seu modelo e do ponto de vista puramente matemático, um ou ambos os servidores devem estar 99,75% do tempo

No entanto, não tenho certeza se usar um modelo matemático é a maneira correta de calcular o seu potencial de tempo, pois há outros fatores que podem afetá-lo, que são comuns a ambos os servidores, ou seja, 95%. do tempo, há um corte de energia que afetaria os dois servidores, portanto, ter um cluster não faria diferença

    
por 04.07.2016 / 12:01
5

Isso depende do motivo pelo qual seus servidores caíram 5% do tempo. Se você tem energia em 95% do tempo, mas seus servidores são perfeitos, então um segundo servidor no mesmo local não aumenta seu tempo de atividade em todos : se um deles cair, ambos ficarão inativos. Este é um exemplo das falhas sendo correlacionadas . É provável que pelo menos parte do seu tempo de inatividade se deva a erros que afetam todos os servidores juntos (energia ...). Mas parte do tempo de inatividade será independente entre os servidores. Se você quiser fazê-lo corretamente, você deve lidar com essas coisas separadamente. Então você quer calcular a probabilidade de que o servidor 1 não tenha um erro independente (p) e que o servidor 2 não tenha um erro independente (q) e que não haja nenhum erro sistêmico que mate ambos (r). Seria relativamente seguro assumir que esses erros são independentes e, portanto, você poderia simplesmente multiplicá-los juntos: p q r é a probabilidade de algum servidor estar ativo.

O problema é que você não pode usar dados reais de uptime para fornecer valores para p, q e r, exceto que se você tiver apenas o servidor 1 e ele estiver 95% do tempo, então p * r = 0,95.

    
por 04.07.2016 / 18:10
4

Primeiro, a disponibilidade total ou o tempo de atividade de um cluster depende de como uma grande parte do cluster precisa estar ativa para que todo o cluster seja considerado 'ativo'.

  • Uma máquina funcionando é suficiente? Isso significaria que qualquer máquina individual pode suportar toda a carga, se necessário.
  • Todos eles precisam estar ativos ao mesmo tempo? Ou seja, não há redundância.
  • Ou talvez dois em cada três online sejam suficientes? Isso permitiria uma carga de trabalho maior que o primeiro caso.

Como você descobriu, os dois primeiros casos são bastante simples de calcular. Deixe a probabilidade de um único servidor estar online a qualquer momento p = 0.95. Agora, para três servidores, a probabilidade de estarem todos online ao mesmo tempo é p 3 = 0.857375.

Para o caso oposto, onde pelo menos uma máquina deve estar ativa em um determinado momento, é mais fácil calcular invertendo o problema e observando as probabilidades das máquinas serem offline . A probabilidade de que uma única máquina esteja offline é q = 1- p = 0.05 e, portanto, a probabilidade de estarem todos ao mesmo tempo é q 3 = 0.000125, dando probabilidade 1- q 3 = 1- (1- p ) < sup> 3 = 0.999875 que pelo menos um está ativo.

O 2 dos 3 casos é um pouco mais difícil de calcular. Existem quatro situações possíveis em que pelo menos dois dos três servidores estão ativos. 1) ABC estão em alta, 2) AB estão em alta, 3) AC estão em alta, 4) BC estão em alta. As probabilidades para todos estes são, respectivamente, ppp , ppq , pqp e qpp . Uma vez que os casos são separados, as probabilidades podem ser somadas, dando um total A = p 3 + 3 p 2 q = 0.992750.

(Isso pode ser expandido para mais máquinas. Os fatores são os conhecidos coeficientes binomiais , então contar os diferentes casos à mão funciona principalmente como um exercício.)

Naturalmente, cálculos como este são muito mais fáceis de lidar usando um programa de computador pronto ... Pelo menos um calculador on-line pode ser encontrado aqui:
link

Inserindo os valores de entrada: probabilidade de sucesso = 0,95, número de tentativas = 3, número de sucessos = 2, obtemos o resultado "Probabilidade Cumulativa: P (X ≥ 2) = 0,99275". Alguns outros valores relacionados também são fornecidos e a ferramenta on-line facilita a reprodução com outros números também.

E sim, todos os itens acima assumem que os servidores falham independentemente, isto é: a) ignorei qualquer problema que afeta o cluster como um todo; b) não há nada como o envelhecimento de componentes que poderia torná-lo provável para os servidores falhar em ou quase ao mesmo tempo.

    
por 05.07.2016 / 00:59
3

Você tem 5% de tempo de inatividade para cada servidor, então você multiplica isso - 0,05 * 0,05 = 0,0025, dando a você 1-0,0025 = 0,9975 - > 99% de tempo de atividade. Com 3 servidores, você tem 1-0,000125 = 0,999875 > 99,9% de tempo de atividade.

Eu normalmente conta com 97% de disponibilidade para hosts autônomos (com HDD e PSU redundantes), com > 99,9% para 2N e > 99,99% para redundância de 3N.

    
por 04.07.2016 / 12:01
0

Supondo que o tempo de atividade de cada servidor é independente dos outros, o tempo total de atividade é

1 - (0.05)^n

em que n é o número de servidores E 0,05 é a probabilidade de inatividade de um servidor

    
por 05.07.2016 / 04:06