Этот вопрос скорее математический, чем вопрос о сервере, но он сильно связан с сервером.
Если бы у меня был сервер, на котором я мог бы гарантировать 95% времени безотказной работы, и я бы поместил этот сервер в кластер из 2, сколько тогда было бы безотказной работы? Теперь, допустим, я делаю то же самое, но делаю кластер из 3?
Давайте не будем рассматривать такие вещи, как единственная точка отказа, а сосредоточимся здесь исключительно на математике. Одна из вещей, которая немного усложняет это, заключается в том, что если, например, у меня есть 2 сервера, вероятность того, что они оба отключены, составляет 2 ^ 2, так что это 1/4; или для 3 это 2 ^ 3, поэтому 1/8. Учитывая, что у меня 5% простоя каждого из этих серверов, будет ли общее среднее значение 1/8 от этих 5%?
Как бы вы рассчитали что-то подобное?
Время безотказной работы - вещь скользкая ... Если вы хотите рассчитать доступность служба тогда это просто
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 и т. Д.
Таким образом, используя вашу модель и с чисто математической точки зрения, один или оба сервера должны работать в 99,75% случаев.
Однако я не уверен, что использование такой математической модели является правильным способом определения вашего потенциального времени безотказной работы, поскольку есть другие факторы, которые могут повлиять на него, которые являются общими для обоих серверов, т.е. 95% могут быть из-за того, что 5% времени происходит отключение электроэнергии, которое повлияет на ОБЕИ серверы, поэтому наличие кластера не будет иметь никакого значения
Это зависит от того, почему ваши серверы не работают в 5% случаев. Если у вас есть питание в 95% случаев, но в остальном ваши серверы безупречны, то второй сервер в том же месте не увеличивает время безотказной работы. вообще: если один падает, оба падают. Это пример того, что неудачи коррелированный. Вероятно, что по крайней мере часть вашего простоя связана с ошибками, которые влияют на все серверы вместе (мощность ...). Но время простоя будет независимый между серверами. Если вы хотите сделать это правильно, вам следует заняться этими вещами отдельно. Итак, вы хотите определить вероятность того, что сервер 1 не имеет независимой ошибки (p), а сервер 2 не имеет независимой ошибки (q) и что нет системной ошибки, убивающей обе ошибки (r). Было бы относительно безопасно предположить, что эти ошибки независимы, и поэтому вы можете просто перемножить их вместе: pqr - вероятность того, что какой-то сервер работает.
Проблема в том, что вы не можете использовать фактические данные о времени безотказной работы, чтобы получить значения для p, q и r, за исключением того, что если у вас есть только сервер 1, и он работает в 95% случаев, тогда p * r = 0,95.
Прежде всего, общая доступность или время безотказной работы кластера зависит от того, насколько большая часть кластера должна быть активной, чтобы весь кластер считался «работающим».
Как вы выяснили, первые два случая вычислить довольно просто. Пусть вероятность того, что один сервер будет онлайн в любой момент времени п = 0,95. Теперь для трех серверов вероятность того, что все они подключены одновременно, равна п3 = 0,857375.
Для противоположного случая, когда хотя бы одна машина должна быть активна в данный момент времени, проще рассчитать, инвертировав задачу и посмотрев на вероятности того, что машины будут работать. не в сети. Вероятность того, что одна машина отключена, равна q = 1-п = 0,05, следовательно, вероятность того, что все они упадут одновременно, равна q3 = 0,000125, что дает вероятность 1-q3 = 1- (1-п)3 = 0,999875, что хотя бы один активен.
Случай 2 из 3 немного сложнее вычислить. Есть четыре возможных ситуации, когда по крайней мере два из трех серверов работают. 1) ABC вверх, 2) AB вверх, 3) AC вверх, 4) BC вверх. Вероятности для всех них соответственно равны PPP, ppq, pqp и qpp. Поскольку случаи не пересекаются, вероятности можно сложить вместе, получив в итоге A = п3 + 3 п2q = 0,992750.
(Это может быть расширено на большее количество машин. Факторы хорошо известны биномиальные коэффициенты, поэтому подсчет различных случаев вручную работает в основном как упражнение.)
Конечно, с такими вычислениями гораздо проще справиться с помощью готовой компьютерной программы ... Здесь можно найти хотя бы один онлайн-калькулятор:
http://stattrek.com/online-calculator/binomial.aspx
Вводя входные значения: вероятность успеха = 0,95, количество попыток = 3, количество успехов = 2, получаем результат «Суммарная вероятность: P (X ≥ 2) = 0,99275». Также приведены некоторые другие связанные значения, и онлайн-инструмент позволяет легко играть с другими числами.
И да, все вышеперечисленное предполагает, что серверы выходят из строя независимо, то есть а) я проигнорировал любые проблемы, влияющие на кластер в целом, б) нет ничего похожего на старение компонентов, которое могло бы привести к отказу серверов в или почти одновременно.
У вас есть 5% времени простоя для каждого сервера, поэтому вы умножаете его - 0,05 * 0,05 = 0,0025, что дает вам 1-0,0025 = 0,9975 -> 99% времени безотказной работы. С 3 серверами у вас будет 1-0,000125 = 0,999875> 99,9% времени безотказной работы.
Обычно я обеспечиваю 97% доступности для автономного хоста (с резервным жестким диском и блоком питания), давая> 99,9% для 2N и> 99,99% для резервирования 3N.
Я покопался еще раз и нашел этот кусок головоломки.
Используя пример сервера с доступностью 95%, добавление второго сервера увеличит доступность до: 95% + (1-95%) * 95% = 99,75%. Логика заключается в том, что когда 1-й сервер не работает (5% времени), второй сервер все еще работает 95% времени.
Добавление третьего сервера повлечет за собой то же самое. Первые 2 вместе уже доступны на 99,75%, поэтому добавление 3-го будет: 99,75% + (1-99,75%) * 95% = 99,9875%. И так далее. Это близко к ответу Фила, но все же немного отличается, поскольку вам нужно взять результат предыдущей итерации и использовать его в следующей.
Для компонентов, которые зависят друг от друга, вы просто умножаете проценты доступности, поэтому, если у вас есть 2 компонента, которые доступны на 50%, общая доступность составляет 25% (то есть система работает только тогда, когда работают оба компонента).
Предполагая, что время безотказной работы каждого сервера не зависит от других, общее время безотказной работы составляет
1 - (0,05) ^ п
Где n - количество серверов, а 0,05 - вероятность простоя одного сервера.