Высокая доступность

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

В условиях модернизации растёт зависимость от таких систем. Например, для выполнения повседневных задач больницам и центрам обработки данных необходима высокая доступность их инфраструктуры. Доступность означает возможность пользователя получить доступ к сервису или системе — для ввода новых данных, обновления или изменения существующих, либо для получения результатов предыдущих операций. Если пользователь не может получить доступ к системе, она считается недоступной с точки зрения пользователя[2]. Обычно термин время простоя используется для обозначения периодов, когда система недоступна.

Устойчивость

Высокая доступность является свойством устойчивости сети — способности «обеспечивать и поддерживать приемлемый уровень сервиса при возникновении отказов и внештатных ситуаций»[3]. Угрозы и вызовы могут варьироваться от ошибок конфигурации до природных катастроф и целевых атак[4]; поэтому вопросы устойчивости сетей затрагивают широкий круг тем. Для повышения устойчивости коммуникационной сети необходимо выявить потенциальные угрозы и риски, а также определить соответствующие метрики устойчивости для защищаемых сервисов[5].

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

К этим сервисам относятся:

В зависимости от контекста исследования термины устойчивость и живучесть могут использоваться как синонимы[9].

Принципы

Согласно инженерии надёжности выделяется три принципа проектирования систем для достижения высокой доступности.

  1. Исключение единственных точек отказа. Это достигается путём введения избыточности, чтобы сбой отдельного компонента не приводил к отказу всей системы.
  2. Надёжное переключение. В резервируемых системах сам механизм переключения часто становится единственной точкой отказа; отказоустойчивая система должна обеспечивать надёжность функционала переключения.
  3. Выявление отказов по мере их возникновения. Даже если выполнены два предыдущих принципа и пользователь не замечает сбоев, система должна своевременно фиксировать и устранять неисправности — для технического обслуживания.

Плановые и внеплановые простои

Можно выделить плановые и внеплановые интервалы простоя. Обычно плановое время простоя возникает вследствие технического обслуживания, требующего остановки системы, и не может быть устранено при существующей архитектуре. Примеры плановых остановок — установка обновлений системного ПО, требующая перезагрузки, либо изменения конфигурации, вступающие в силу только после перезапуска. В общем случае плановое время простоя связано с управленческим решением. Внеплановые простои — как правило, следствие аппаратных или программных сбоев либо внешних воздействий (отказ оборудования, сбои питания, выход из строя CPU или RAM, перегрев, разрывы сети, атаки, сбои приложений, операционной системы и пр.).

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

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

Расчёт процента доступности

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

Процент доступности Время простоя в год Время простоя в квартал Время простоя в месяц Время простоя в неделю Время простоя в сутки
90% («одна девятка») 36,53 дня 9,13 дня 73,05 часа 16,80 часа 2,40 часа
95% («одна девятка пять») 18,26 дня 4,56 дня 36,53 часа 8,40 часа 1,20 часа
97% («одна девятка семь») 10,96 дня 2,74 дня 21,92 часа 5,04 часа 43,20 минуты
98% («одна девятка восемь») 7,31 дня 43,86 часа 14,61 часа 3,36 часа 28,80 минуты
99% («две девятки») 3,65 дня 21,9 часа 7,31 часа 1,68 часа 14,40 минуты
99,5% («две девятки пять») 1,83 дня 10,98 часа 3,65 часа 50,40 минуты 7,20 минуты
99,8% («две девятки восемь») 17,53 часа 4,38 часа 87,66 минуты 20,16 минуты 2,88 минуты
99,9% («три девятки») 8,77 часа 2,19 часа 43,83 минуты 10,08 минуты 1,44 минуты
99,95% («три девятки пять») 4,38 часа 65,7 минуты 21,92 минуты 5,04 минуты 43,20 секунды
99,99% («четыре девятки») 52,60 минуты 13,15 минуты 4,38 минуты 1,01 минуты 8,64 секунды
99,995% («четыре девятки пять») 26,30 минуты 6,57 минуты 2,19 минуты 30,24 секунды 4,32 секунды
99,999% («пять девяток») 5,26 минуты 1,31 минуты 26,30 секунды 6,05 секунды 864,00 миллисекунды
99,9999% («шесть девяток») 31,56 секунды 7,89 секунды 2,63 секунды 604,80 миллисекунды 86,40 миллисекунды
99,99999% («семь девяток») 3,16 секунды 0,79 секунды 262,98 миллисекунды 60,48 миллисекунды 8,64 миллисекунды
99,999999% («восемь девяток») 315,58 миллисекунды 78,89 миллисекунды 26,30 миллисекунды 6,05 миллисекунды 864,00 микросекунды
99,9999999% («девять девяток») 31,56 миллисекунды 7,89 миллисекунды 2,63 миллисекунды 604,80 микросекунды 86,40 микросекунды
99,99999999% («десять девяток») 3,16 миллисекунды 788,40 микросекунды 262,80 микросекунды 60,48 микросекунды 8,64 микросекунды
99,999999999% («одиннадцать девяток») 315,58 микросекунды 78,84 микросекунды 26,28 микросекунды 6,05 микросекунды 864,00 наносекунды
99,9999999999% («двенадцать девяток») 31,56 микросекунды 7,88 микросекунды 2,63 микросекунды 604,81 наносекунды 86,40 наносекунды

Термины время безотказной работы и доступность иногда ошибочно используются как синонимы. Например, система может «работать» с технической точки зрения, но быть «недоступной» для пользователей из-за сбоя сети. Или во время обслуживания администратор может работать с системой, но пользователи не видят сервис. Поэтому важно уточнять, о каком уровне (аппаратном, сервисном, приложенческом) идёт речь.

Мнемоника «пять по пять»

Существует простое правило: «пять девяток» соответствуют примерно 5 минутам недоступности в год. Аналогично, «четыре девятки» — 50 минут, «три девятки» — 500 минут. Чем больше девяток, тем жёстче требования: «шесть девяток» — всего 30 секунд простоя в год.

Трюк с «степенями десятки»

Для оценки длительности простоя при «n девятках» можно воспользоваться формулой: секунд простоя в сутки.

Концепция «девяток»

Проценты высокой доступности часто называют по числу девяток в числе (например, 99,999% — «пять девяток»); термин используется при обсуждении, к примеру, работы мейнфреймов[10] или серверных платформ большой нагрузки, особенно в рамках SLA. Проценты, оканчивающиеся на 5, традиционно именуют «девятки и пять»[11][12]. Иногда встречается определение «три с половиной девятки», однако оно не вполне корректно, поскольку разница между 0,1% и 0,05% куда меньше, чем между 0,05% и 0,01%[13].

В целом, выражение доступности через количество девяток — скорее маркетинговый термин; для точного моделирования инженеры пользуются вероятностями отказа или временем простоя в год. Сложность применения «девяток» отмечалась в профильной литературе[14].

Иногда встречается ироничное выражение «девять пятёрок» (55,5555555%) — как антипод «пяти девяток» (99,999%) для ситуации с крайне низкой надёжностью[15][16][17].

Измерение и интерпретация

Оценка доступности всегда зависит от интерпретации. Например, если система непрерывно работает 365 дней в году, но из-за сбоя сети была недоступна 9 часов в течение пикового периода, администратор может утверждать о 100% времени работы, однако пользователи посчитают иначе. По строгому определению коэффициент доступности составит около 99,9% («три девятки»).

Также, даже если система функционирует, сильное снижение производительности или ограничение некоторых функций может восприниматься как недоступность. Для корректной оценки требуется комплексный мониторинг (инструментирование), причём сами средства мониторинга должны быть надёжны и доступны.

Альтернативной метрикой является среднее время между отказами.

Близкие понятия

Понятия время восстановления (или плановое время ремонта, ETR), целевое время восстановления (RTO), а также среднее время восстановления (MTTR) тесно связаны с доступностью — они характеризуют продолжительность восстановления после сбоев или плановых остановок. Некоторые системы, напр. при пожаре, могут теоретически иметь бесконечное время восстановления, если нет резервных дата-центров.

Родственный термин доступность данных — в какой мере БД и другие хранилища корректно записывают и выдают транзакции. Гарантии минимизации потери данных часто определяют отдельные показатели точки восстановления.

Формализация требований по доступности и её измерению закрепляется в соглашении об уровне сервиса (SLA).

Военные системы управления

Высокая доступность — одно из критических требований к системам управления беспилотных и автономных судов. Недоступность управляющей системы неизбежно ведёт к потере аппарата.

Проектирование систем

Добавление дополнительных компонентов может снижать реальную надёжность, поскольку усложняет архитектуру и увеличивает число потенциальных точек отказа. Иногда наивысшую доступность демонстрируют простые системы с качественной аппаратной избыточностью, но такие решения требуют полной остановки на время обновления или патча ОС. Более развитые архитектуры позволяют обновлять/патчить систему без прерывания сервиса. Высокая доступность требует минимизации влияния человеческого фактора, так как ошибки операторов — одна из ключевых причин простоев[18].

Высокая доступность и избыточность

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

При параллельной избыточности (компоненты работают независимо в разных ЦОДах/узлах) общая доступность резко возрастает — при X-доступности одного элемента и N независимых экземплярах вероятность одновременного отказа вычисляется по формуле:[19][20]

Доступность = 1 − (1 − X)N

Например, если каждый из компонентов доступен лишь в 50% времени, при 10 параллельно работающих вероятность недоступности всей системы составит менее 0,1% (доступность ≈ 99,9%).

Различают пассивную и активную избыточность.

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

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

Архитектуры с нулевым временем простоя (zero downtime) допускают, что время между отказами превышает цикл обслуживания/обновления или срок службы системы. Такие подходы нужны для авиации и спутниковой связи, например GPS — пример с нулевым временем простоя.

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

Моделирование и симуляция применяются для расчёта вариантов архитектуры и поиска уязвимых точек по схемам N-x (N — число элементов, x — количество одновременно отключённых элементов).

Причины недоступности

По данным опроса экспертов по доступности ИТ-систем (2010), основные причины обусловлены нарушением best practices в следующих областях[21] (в порядке важности):

  1. Мониторинг ключевых компонентов
  2. Требования и закупки
  3. Эксплуатация
  4. Предотвращение сетевых сбоев
  5. Устранение внутренних отказов приложений
  6. Избежание зависимостей от ненадёжных внешних сервисов
  7. Физические условия эксплуатации
  8. Сетевая избыточность
  9. Резервное копирование (техническая реализация)
  10. Резервное копирование (организация процесса)
  11. Физическое размещение
  12. Избыточность инфраструктуры
  13. Избыточность архитектуры хранения данных

Детальный анализ изложен в специальной книге[22].

Стоимость недоступности

Согласно отчёту IBM Global Services (1998), потери американских компаний от недоступности систем в 1996 году оценивались в $4,54 млрд (потерянная выручка и производительность)[23].

Примечания

Литература

  • Floyd Piedad, Michael Hawkins. High Availability: Design, Techniques, and Processes. Prentice Hall, 2001. ISBN 9780130962881.
  • Evan Marcus, Hal Stern. Blueprints for high availability. Second edition. Indianapolis, IN: John Wiley & Sons, 2003. ISBN 0-471-43026-9.

Ссылки