Научная статья на тему 'Оценка надежности асинхронных распределительных систем, устойчивых к произвольным отказам'

Оценка надежности асинхронных распределительных систем, устойчивых к произвольным отказам Текст научной статьи по специальности «Математика»

CC BY
97
14
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ОТКАЗОУСТОЙЧИВОСТЬ / ПРОИЗВОЛЬНЫЕ (ВИЗАНТИЙСКИИЕ) СБОИ / АСИНХРОННЫЕ СИСТЕМЫ

Аннотация научной статьи по математике, автор научной работы — Фирсов Антон Николаевич

Предложены формула и алгоритм для оценки надежности устойчивых к произвольным отказам систем, работающих в гетерогенной по надежности среде. Демонстрируются ситуации, когда существующие решения неэффективны, и предлагаются способы их усовершенствования.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Фирсов Антон Николаевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

A formula and an effective polynomial algorithm for estimation of reliability of asynchronous byzantine fault-tolerant distributed system consisting of components of different reliability are presented. Situations are demonstrated where existing solutions are ineffective, and approaches to their improvement are suggested.

Текст научной работы на тему «Оценка надежности асинхронных распределительных систем, устойчивых к произвольным отказам»

В итоге отметим, что рассмотренный программно-аппаратный комплекс продемонстрировал возможности удаленного использования среды математического моделирования МЛТ1ЛВ на кластерной вычислительной системе. Также показана эффективность средств

МАТЬАВ для создания параллельных программ, использующих ресурсы многопроцессорной вычислительной техники. Подобные системы интересны не только для инженерной и научной практики, но и для целей электронного обучения.

СПИСОК ЛИТЕРАТУРЫ

1. Gaurav Sharma, Jos Martin. MATLAB: A Language for Parallel Computing: Springer (Springerlink.com), 2008.

2. Luszczek P. Enhancing Multicore System Performance Using Parallel Computing with MATLAB. MATLAB Digest. 2009.

3. Пресс-релиз компании MathWbrk "Max Planck Institute of Biochemistry Uses MathWortts Tools in its Quest to Cure Cancer". 2009. http://www.mathworks.com/ company/pressroom/articles/article31269.html

4. Ghidella J R., Wakefield A., Grad-Freilich S.

et al. The Use of Computing Clusters and Automatic Code Generation to Speed Up Simulation Tasks: Modeling and Simulation Technologies Conf. and Exhibit. 20-23 August 2007. Hilton Head, South Carolina.

5. Варгаузин В.А., Иванов Д.И., Цикин И.А.

Сетевой доступ к среде моделирования MATLAB на базе служб терминала: Учеб.-метод, пособие. СПб.: Изд-во Политехи, ун-та, 2008.

УДК: 004.75

А.Н. Фирсов

ОЦЕНКА НАДЕЖНОСТИ АСИНХРОННЫХ РАСПРЕДЕЛЕННЫХ СИСТЕМ, УСТОЙЧИВЫХ К ПРОИЗВОЛЬНЫМ ОТКАЗАМ

С течением времени зависимость людей от техники только увеличивается, а сама техника усложняется. Обостряется проблема обеспечения отказоустойчивости техники. Так, если вероятность сбоя отдельно взятого компьютера невелика, то в распределенных системах, состоящих из тысяч или даже миллионов таких компьютеров, сбои происходят постоянно.

Византийская модель сбоев [1], или модель произвольных сбоев, — наиболее общая и включает в себя все остальные. Она не накладывает никаких ограничений надействия сбойных процессов и благодаря этому позволяет моделировать такие типы сбоев, как поломка оборудования, потеря связи, неисправность оборудования, программные сбои, ошибки операторов и действия злоумышленников.

Особый интерес представляют асинхронные распределенные системы, так как они не накладывают никаких временных ограничений и благодаря этому идеально подходят для работы в сети Интернет. Наиболее универсальной моде-

лью вычислительного узла является машина с конечным числом состояний (state machine).

В данной статье рассматриваются асинхронные распределенные системы, которые, во-первых, устойчивы к произвольным отказам; во-вторых, позволяют выполнять прикладные программы, требующие сохранятьсвое состояние между обращениями кним; в-третьих, обеспечивают отказоустойчивость на программном уровне без необходимости в какой-либо специальной аппаратуре; в-четвертых, делают все это прозрачно для прикладных программ.

1. Проблемы существующих решений

Существует несколько систем, отвечающих приведенным выше требованиям: Rampart [2], Secure Ring [3], BFT[4] и др. Они реализуют единственный известный на сегодня программный метод защиты от произвольных сбоев - активную репликацию. Суть метода заключается в том, что параллельно выполняется несколько копий (или, как их еще называют, реплик) одной и той же программы.

В вышеуказанных системах и практически во всех других работах, связанных с устойчивостью к произвольным отказам [1—8], фиксируется некоторое число/— максимальное количество процессоров (или вычислительных узлов), которое может выйти из строя из имеющихся п процессоров, не приведя к сбою системы в целом, и уже на его основе доказываются все утверждения. Это удобно для проектирования и доказательства корректности алгоритмов, однако в действительности не может быть никакой гарантии, что из строя не выйдет большее число процессоров, просто такая вероятность считается пренебрежимо малой и не учитывается.

Ни одна из упомянутых выше систем не предоставляет алгоритма для оценки вероятности сбоя получаемого решения, а именно в этом показателе больше всего заинтересован пользователь отказоустойчивых систем. Как правило, последнему предоставляется лишь возможность управлять необходимым уровнем надежности, изменяя параметр / увеличивать для повышения надежности или уменьшать, экономя ресурсы. Такой подход в неявном виде предполагает, что все вычислительные узлы одинаковы по надежности. В сети же Интернет и распределенных системах, строящихся на ее основе, это требование, как правило, не выполняется. В одну распределенную систему могут бьпъ объединены как серверы с устройствами бесперебойного питания, находящиеся под управлением профессиональных администраторов, с надежными и обновляемыми операционными системами и антивирусным программным обеспечением, так и рабочие станции, зараженные вирусами, с ненадежной аппаратурой и уязвимой операционной системой. Очевидно, что вероятность их отказа может отличаться на несколько порядков. А именно на использование в сети Интернети в асинхронных распределенных системах ориентируются вышеперечисленные системы обеспечения отказоустойчивости.

Пренебрежение тем фактом, что вычислительные узлы иногда значительно отличаются по надежности, может повлечь ситуацию, когда увеличение параметра / приведет к уменьшению надежности системы в целом. Это продемонстрировано в разд. 5.

2. Общая схема предлагаемого решения

Очевидно, что на надежность отказоустойчивой системы в целом влияет надежность ее со-

ставных частей, и если надежности этих составных частей различаются, то необходимо знать каждую из них в отличие от случая, когда они одинаковы, — тогда достаточен один агрегированный параметр.

Наиболее удобным на практике способом получения значений надежности вычислительных узлов является сбор статистики об их отказах в течение достаточно длительного промежутка времени. Этому вопросу посвящен разд. 3.

В разд. 4 выводится формула для нахождения вероятности отказа системы в целом на основе данных о вероятности отказа ее компонент, а также предлагается эффективный полиномиальный алгоритм вычисления этой формулы.

В разд. 5 на основании полученной формулы оценивается надежность существующих решений в некоторых ситуациях, когда компоненты системы неоднородны по надежности. Способы повышения надежности в таких ситуациях предлагаются в разд. 6.

3. Оценка надежности вычислительных узлов на основе собираемых статистических данных

Обозначим вероятность возникновения сбоя на 1-м вычислительном узле в некоторый единич-ный промежуток времени как р, (/ = 1,и). С целью упрощения получаемых формул этот единичный промежуток выбирается равным времени, которое необходимо отказоустойчивой системе для ликвидации последствий отказа. Его значение зависит от используемых алгоритмов обеспечения отказоустойчивости и восстановления, а также от времени, требующегося на передачу сообщений.

В реальных распределенных системах значение Р, может находиться на основе собираемой статистики о сбоях и следующей формулы:

где/•— количество зафиксированных сбоев на /-м вычислительном узле за время его работы в составе распределенной системы; ^ — время работы /-го вычислительного узла в составе распределенной системы; р — вероятность отказа вычислительного узла, о котором еще не собрано никакой статистики.

Значение Р можно находить следующим образом:

1 + 1/,

Р =

;=1

1 Л

= + У/, (3 й'

(2)

Здесь /п — общее количество вычислительных узлов в распределенной системе (не следует путать с п — количеством вычислительных узлов в группе, выделенной специально для решения конкретной задачи); р - задаваемая создателем распределенной системы на основе его опыта среднестатистическая вероятность отказа вычислительного узла, которая необходима в начальный момент работы распределенной системы, когда отсутствует любая статистическая информация.

Формула (1) обладает тем свойством, что при первоначальном подключении вычислительного узла к распределенной системе, когда о нем еще не собрано никакой статистики, значение р, будет равно р-вероятности отказа среднестатистического вычислительного узла. При сборе же статистической информации втечениедостаточно долгого времени вклад слагаемого 1/Р в знаменатель и единицы в числитель окажется

пренебрежимо мал: р( = Ьт * * = Мт —.

Аналогичное замечание относится и к формуле (2). В момент начала работы распределенной системы, когда не собрано никакой статистики, вероятность отказа среднестатистического вычислительного узла может определяться на основе опыта создателя системы. При накоплении статистики вклад этого слагаемого будет неуклонно уменьшаться и заменяться эмпирическими данными, полученными самой распределенной системой.

4. Формула и эффективный алгоритм вычисления вероятности сбоя отказоустойчивой системы

Имея данные о вероятности отказа каждого вычислительного узла в отдельности, можно рассчитать вероятность сбоя отказоустойчивого решения, объединяющего несколько вычислительных узлов.

Будем считать, что отказы вычислительных узлов — независимые события, ибо именно к это-

му стремится подсистема балансировки при создании групп и распределении нагрузки. Тогда вероятность того, что в наборе из п вычислительных узлов произойдет ровно к отказов, равна:

I [пР,Тпо-Р,)1 (3)

где Т7— неупорядоченное подмножество из множества всех вычислительных узлов и.

Смысл формулы (3) прост: суммируются вероятности возникновения всех возможных комбинаций из к выходяших из строя вычислительных узлов и п—к узлов, продолжающих корректно работать.

Так как все приведенные выше отказоустой-

чивые системы гарантируют корректную лишь при условии, что не более чем / =

работу п — 1

вычислительных узлов выйдут из строя, то при возникновении более чем /сбоев вся система целиком может дать сбой. В [5] доказано, что ни один алгоритм не может обеспечить корректную работу системы из п вычислительных узлов бо-«-1

отказах. Там же есть пример,

лее чем при п-1

когда

1 отказов приводят к сбою системы

целиком. Атак как рассматривается Византийская модель сбоев, когда вышедшие из строя узлы могут находиться под согласованным управлением злоумышленников, то необходимо рассматривать худший случай и считать, что при отказе более /узлов вся система дает сбой. Вероятность этого можно рассчитать:

I [ ПР.

Ы* I

Воспользовавшись тем, что

I I ГпэЛГ по-Ру)

П(1-Р,)

(4)

= 1,

т. е. сум ма вероятностей того, что откажет от нуля до п узлов, равна единице, так как это событие покрывает все возможные исходы, получим формулу, требующую суммирования меньшего числа слагаемых:

я-1

з

а = 1- I" I {т)\ ПО-Ру)

Выражение

(5)

X I

(6)

представляет вероятность того, что из строя вый-/7-1

дет не более чем

вычислительных узлов

(т. е. существующие отказоустойчивые решения могут гарантировать корректную работу системы в целом), поэтому его можно назвать надежностью полученного решения.

В случае, если вероятности отказа всех узлов примерно одинаковы и равны Р, формулы (4) и (5) можно упростить, воспользовавшись тем, что

ПР, ПС-Р,)

= Р^(1-Р)

лНЛ

и количество всевозможных комбинаций выбора к неупорядоченных элементов из множества мощностью п равно Ск„:

и-1

а = 1- X с;э*(1-РГ *=0

(7)

Выражение (7) есть аналог формулы (5) для случая, когда вероятности сбоя вычислительных узлов примерно одинаковы. Хотя (7) и является частным случаем (5), но с практической точки зрения удобна тем, что требуется гораздо меньше операций для ее вычисления.

Применение формулы (5) "влоб" на практике крайне нежелательно, ибо она требует перебора всех возможных подмножеств мощностью от

и — 1

нуля до

множества из п элементов, а это в

И

свою очередь требует порядка С* операций.

*=о

Кроме того, полученные подмножества необхо-

.

димоеще перемножать, тогда получаем п £ С„

*=о

операций. А это выражение растет экспоненциально с ростом п.

Для получения эффективного способа вычисления обшей надежности вернемся к формуле (3) и разобьем сумму, входящую в ее состав, на две части: первую, где п-й вычислительный узел входит во множество отказавших узлов, и вторую, где он продолжает работать без сбоев. Получим:

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

г \( \

а* =

X

ПР, ПО-Р,)

+ I ПР,

По-Р,)

\jell\F

Вынесем множители с р„ за знаки сумм:

а*=Р„

ПР,

ПО-Ру)

+ 0-Р-) I

ПР,

По-Р,)

Введем обозначение СГ= Ц\{") и рассмотрим выражение

I

ПР,Т По-Р/)

Д/сСЛ/1

Оно представляет собой не что иное, как вероятность того, что ровно (к — 1 )-й узел выйдет из строя в наборе И\ состоящем из п — 1 вычислительных узлов, и равняется сх*1[.

Аналогично

I (пр1по-р,)

= а

л-1-

Получили рекурсивную формулу

а* = Р|аМ + 0 ~ Р, )а*-1 •

(8)

Базой рекурсии будут служить выражения:

а°=ПО-Р,)=а^О-Р,)при/>0

7=1

(вероятность того, что не будет сбоев ни на одном из/узлов);

«; = ПР, =<!Р, пРИ|>0

У=1

(вероятность того, что сбои произойдут на всех /' узлах);

Применение формулы (8) напрямую опять окажется сопряжено с экспоненциальным по отношению к п ростом затрат вычислительных мощностей. Однако можно заметить, что большинство значений af будет вычисляться по нескольку раз, и если однажды вычисленные значения хранить в таблице, то сложность алгоритма составит 0(п2). Это следует из того, что размер таблицы не превысит (п + 1 )(п + 1). А на вычисление значения одной ячейки таблицы потребуется максимум две операции умножения и по

одной операции сложения и вычитания действительных чисел.

Текст алгоритма вычисления вероятности сбоя отказоустойчивой системы на псевдокоде приведен ниже. Его корректность следует из вышеприведенных формул и их обоснования.

Функция a(k, i)

Если A[k,i] = -1, то Если к = 0, то

А[к, i] = а(0, i—1) ♦ (1 — b(i]) Иначе, если к = i, то

А[к, i] = а(к — l,i- 1) * b[ij Иначе

А[к, i] =а(к- 1, i- l)»b[i] + + а(к, i — I> ♦ < 1 — b[i]) Вернуть А[к, i| Конец функции а.

Инициализировать элементы массива А|п,п| значениями -1 А|0, 0] = 1

Надежность = а(0, п) + а(1, п) + ... + а((п-1)/3, п) Вероятность отказа = 1 — Надежность

5. Оценка надежности существующих систем при использовании неоднородных по надежности компонент

Имея формулу и алгоритм для оценки надежности отказоустойчивых решений, рассмотрим несколько примеров, в которых применение существующих систем приводит к плохим результатам.

Пример 1. Рассмотрим случай, когда имеется один высоконадежный (вероятность сбоя равна 0,00001) сервер. Единственный способ повышения надежности, доступный существующим системам, заключается в увеличении параметра /— максимально допустимом количестве вычислительных узлов, выход которых из строя может выдержать система. В данном случае пусть/изменится с нуля (система не выдержит ни одного отказа, но благодаря высокой надежности сервера вероятность его отказа очень мала) на единицу. Это

требует увеличения количества используемых вычислительных узлов с одного до четырех, т. е. необходимо три дополнительных вычислительных узла. Если вероятность сбоя добавляемых узлов велика (например, 0,01), то надежность получившийся системы будет меньше исходной.

Расчет надежности получившейся системы в соответствии с алгоритмом, приведенным в разд. 4, дан в таблице. Итоговая надежность равна сумме чисел из выделенных фоном ячеек — 0,99970170597. Вероятность сбоя системы целиком составит 0,00029829403. Таким образом, добавив три дополнительных узла, получили группу, которая хотя и может выдержать отказ одного из узлов, но все-таки вероятность сбоя двух или более узлов в тридцать раз выше, чем если бы использовался один высоконадежный сервер.

На приведенный пример можно взглянуть и с другой стороны. Пусть имеется система с четырьмя вычислительными узлами, вероятность сбоя каждого из которых равна 0,01. Тогда вероятность отказа всей системы равна 0,00059203. Если теперь заменить один из узлов на узел с вероятностью отказа в тысячу раз меньше, то выигрыш в вероятности отказа полученной системы окажется менее двух крат.

Пример 2. Пусть в группе примерно поровну высоконадежных и ненадежных вычислительных узлов (Р| 2. з = 0,0006, р4 5, 7 = 0,01). Получим вероятность сбоя всей системы 0,00000506998066.

Стоит отметить следующее: если бы система состояла только из ненадежных вычислительных узлов, то вероятность отказа составила бы 0,00003396253015, а если только из надежных узлов, то 0,00000000754640. То есть вероятность сбоя уменьшается в 4500 раз. Следовательно, можно ожидать, что замена одного ненадежного узла на надежный уменьшит общую вероятность отказа примерно в 3,326 раза. Тогда можно надеяться, что общая надежность системы из трех

Пример расчета надежности группы из четырех узлов

/-й вычислительный узел

к - ß, =0,00001 ß2 = 0,01 Эз = 0,01 Рз = 0,01

0 1 2 3 4

0 1,00000000000 0,99999000000 0,98999010000 0,98009019900 0,97028929701

1 -1,00000000000 0,00001000000 0,01000980000 0,01980960300 0,02941240896

2 -1,00000000000 -1,00000000000 0,00000010000 0,00010019700 0,00029729106

3 -1.00000000000 -1,00000000000 -1,00000000000 0,00000000100 0,00000100296

4 1.00000000000 1,00000000000 -1.00000000000 -1,00000000000 0,00000000001

надежных и четырех ненадежных узлов станет равной 0,00003396253015 • 3,3263 = 0,000000923, что в 5,5 раза лучше, чем полученная.

Пример 3. Параметризируем пример 2. Пусть в системе п = 10 вычислительных узлов. Введем параметрр — количество надежных (вероятность сбоя 0,001) узлов. Остальные п—р имеют вероятность отказа 0,01. Параметрр изменяется от нуля до п. Полученные результаты зависимости вероятности отказа всей системы от количества надежных вычислительных узлов представлены на рисунке.

Как видно из графика, в существующих отказоустойчивых системах при доле надежных вычислительных узлов меньше половины отдача от замены ненадежных вычислительных узлов на надежные значительно меньше (следует обратить внимание на логарифмическую шкалу), чем в случае, когда доля надежных узлов больше половины, хотя абсолютные значения вероятности сбоя в обоих случаях одинаковы.

6. Способы обеспечения отказоустойчивости в гетерогенных распределенных системах

Подробный разбор и доказательство корректности различных способов обеспечения отказоустойчивости в распределенных системах — тема для отдельной статьи. Здесьжелишь наметим общие подходы.

Способ 1. Балансировка нагрузки с учетом вероятности отказа вычислительных узлов. Если есть набор задач и дано множество вычислитель-

0.00001000000000 0.00000100000000

я

я

н

0 0,00000010000000

¡5 §

X

£ 0.00000001000000

1 £

0.00000000100000

0.00000000010000

0123456789 10 Количество надежных вычислительных умов

Иллюстрация зависимости обшей надежности системы от количества надежных процессоров (—♦—) - вероятность отказа, обеспечиваемая существующими отказоустойчивыми системами; (—•—) -минимально возможная вероятность отказа в системе, учитывающей неоднородную надежность компонент

ных узлов, на которых эти задачи надо решить, то при создании групп для обеспечения отказоустойчивого решения каждой из задач рекомендуется следовать следующему правилу: объединять в группу вычислительные узлы с одинаковой надежностью. В этом случае, как было показано в предыдущем разделе, отдача от имеющихся ресурсов наибольшая. Если же создание групп с абсолютно одинаковыми по надежности узлами невозможно, то, используя предложенный алгоритм, можно оценить оптимальность каждого из возможных распределений и выбрать наилучшее.

Этот способ достаточно универсален и требует небольших модификаций существующих систем. Однако если перераспределение вычислительных узлов между задачами невозможно, а дана всего одна задача и фиксированный набор вычислительных узлов, которые можно использовать для ее решения, то следует использовать один из следующих способов.

Способ 2. Опенка надежности получаемого решения. Как было показано в первом примере, не всегда использование всех доступных вычислительных узлов обеспечивает максимальную отказоустойчивость. Прежде предлагается с помощью приведенного вданной статье алгоритма проверить, сможет л и какое-либо подмножество обеспечить большую надежность, чем все множество целиком.

Способ 3. Группировка вычислительных узлов. Группировать одинаковые по надежное™ вычислительные узлы можно и в рамках одной задачи. Так, в примере 2 можно сгруппировать четыре ненадежных узла в один и получить "виртуальный" узел с надежностью 0,00059203. Сгруппировав же его с тремя другими надежными узлами, получим вероятность отказа системы целиком 0,00000214394360, что в 2,4 раза лучше, чем полученная в том примере, хотя и она не является минимально достижимой.

Способ 4. Протокол надежной групповой рассылки, предусматривающий различную надежность вычислительных узлов. Именно протокол надежной групповой рассылки — узкое место в обеспечении отказоустойчивости (им накладывается ограничение, что доля сбойных процессов должна быть меньше 1/3 [5]). Представляется возможным создание такой реализации этого протокола, которая бы учитывала индивидуальные вероятности отказа вычислительных узлов.

Этот способ наиболее универсален, однако требует коренной переработки существующих систем.

В статье было продемонстрировано, как сбор статистических данных о надежности вычислительных узлов помогает в обеспечении более высокой отказоустойчивости создаваемых решений, особенно для гетерогенных распределенных сис-

тем. Это далеко не единственный пример работы более общего подхода, основная идея которого заключается в том, что чем более полная информация имеется о среде, в которой работает система, то тем более эффективное решение можно подобрать для этой конкретной ситуации [6—8]. Общие же решения часто оказываются гораздо менее эффективными, особенно если среда не однородна.

СПИСОК ЛИТЕРАТУРЫ

1. Lamport L., Shostak R., Pease M. The Byzantine Generals Problem // ACM Transactions on Programming Languages and Systems. July 1982. \bl. 4, № 3. P. 382-401.

2. Reiter M. The Rampart Toolkit for Building High-Integrity Services // Theory and Practice in Distributed Systems. Springer-Verlag, 1995.

3 Kihlstrom K.P., Moser L.E., Mcllar-Smith P.M. The SecureRing group communication system // ACM Transactions on Information and System Security (TISSEC). November 2001. Vol. 4, № 4. P. 371-406.

4. Castro M. Practical Byzantine Fault Tolerance / Massachusetts Institute of Technology. 2001. PhD thesis.

5. Bracha G., Toueg S. Asynchronous Consensus and Broadcast Protocols // Journal of the ACM. October 1985. Vol. 32, № 4. P. 824-840.

6. Фиреов А.Н. Оптимизация на основе статистических данных асинхронной распределенной системы, устойчивой к произвольным отказам // Параллельные вычислительные технологии (ПаВТ'2009): Тр. межаунар. науч. конф. Нижний Новгород, 30 марта - 3 апр. 2009 г. Челябинск: Изл-во ЮУрГУ, 2009. С. 765-771.

7. Фиреов А.Н. Оценка эффективности некоторых оптимизаций протоколов надежной и атомарной групповой рассылки // Вестник Пермского гос. ун-та. Математика. Механика. Информатика. 2009. С. 161-168.

8. Фиреов А.Н. Статистически оптимизируемая отказоустойчивая распределенная система // III конф.-конкурс грантов аспирантов и молодых ученых мех.-мат. ф-та Пермского гос. ун-та. Сб. тез. науч. докл. конф. Пермь, 2008. С. 74-78.

i Надоели баннеры? Вы всегда можете отключить рекламу.