Часто ли у вас бывает, что ломается оборудование: выходит из строя сервер, сетевое оборудование, СХД? Как результат, не работают сервисы, базы данных, приложения. Неисправность одного из элементов оборудования может даже привести к проблемам в работе всей ИТ-инфраструктуры. Такая неприятная ситуация может случиться с любой компанией, насколько бы большой она не была, и даже такие известные корпорации как Microsoft, Amazon не исключение.
Для того чтобы любая система бесперебойно функционировала, она должна соответствовать таким характеристикам как отказоустойчивость (fault tolerant), стабильность (stability) и надежность (reliability). Также, немаловажной является высокая доступность системы.
Очень часто высокая доступность не учитывается при построении и развертывании инфраструктуры, сетей, приложений. Причиной этому может быть неосведомленность специалистов, незнание того, как проектируются высокодоступные системы, либо же компания не планирует выделять дополнительный бюджет и тратиться на построение полноценной избыточной системы.
В данной статье мы расскажем, что такое высокая доступность и почему её стоит учитывать при проектировании систем и инфраструктуры.
Что такое высокая доступность?
Высокая доступность (high availability, сокращенно англ. HA) – это способность системы работать непрерывно без сбоев в течение заданного периода времени.
Информационные технологии (ИТ) используют для обозначения высокой доступности стандартный показатель «пять девяток», что означает, что система должна быть доступна 99,999% времени в течение года.
Повышенная работоспособность систем очень важна для тех отраслей, где системы должны быть доступными и функциональными в любое время, от их исправности может зависеть работа компании или производства.
Системы с высокой доступностью прежде всего используют при проектировании систем управления для авиации и вооруженных сил, систем здравоохранения, и очень часто для промышленности и в банковской сфере.
Высокодоступные системы тщательно проектируются и тестируются перед вводом в эксплуатацию. При планировании каждой из таких систем, подбираются компоненты, что соответствуют требованиям стандарта доступности. Одними из таких составляющих компонентов, что обеспечивают системам высокую доступность, являются поддержка резервного копирования данных, а также аварийное переключение.
Как обеспечивается высокая доступность?
Балансировка нагрузки
Балансировка нагрузки (load balancing) – один из наиболее важных и необходимых компонентов, что обеспечивает высокую доступность систем.
При помощи балансировщика нагрузки рабочие нагрузки автоматически распределяются по соответствующим системным ресурсам. Когда к системе поступает запрос, балансировщик решает какой ресурс лучше всего справится с поставленной задачей и обработает данный запрос. Для исключения перегрузки ресурсов, используют одновременно несколько балансировщиков.
Рассмотрим балансировку нагрузки на примере серверов.
Для достижения высокой доступности серверы в системах объединяют в кластеры, что имеют многоуровневую архитектуру. Каждый из серверов в кластере способен справиться с рабочей нагрузкой, если по какой-то причине один из имеющихся в кластере серверов выйдет из строя. Таким образом достигается избыточность, при которой увеличивается и улучшается работоспособность системы. Также обеспечивается отработка отказа – в случае сбоя происходит переключение основного сервера на резервный, что в итоге будет выполнять функции основного сервера.
Единая точка отказа
Для достижения высокой доступности очень важным является устранение единых точек отказа (SPOF – single point of failure).
Единая точка отказа – это компонент, неисправность или недоступность которого может привести к прерыванию работы или полному отказу всей системы. Происходит так называемый «каскадный отказ», один неработающий компонент приводит к отключению всех зависящих от него компонентов.
Каждый компонент, поддерживающий функциональность вашей инфраструктуры и не имеющий избыточности, считается единой точкой отказа. Для устранения единых точек отказа каждый уровень вашей инфраструктуры должен быть избыточным.
Если на два идентичных дублирующих веб-сервера, поддерживаемые балансировщиком нагрузки, поступает трафик, то этот трафик будет поровну распределен между веб-серверами. Если один из серверов выйдет из строя, то балансировщик перенаправит весь трафик на оставшийся онлайн-сервер. Уровень сервера в данной ситуации не является единой точкой отказа, так как при поломке сервера есть балансировщик нагрузки, что способен обнаружить сбой и своевременно сможет переключиться на второй «подстраховывающий» сервер, который сможет выполнить поставленные задачи.
А вот балансировщик нагрузки как раз и является точкой отказа. Если он отключится, то оба сервера перестанут работать. Можно настроить дополнительный балансировщик, но и он станет точкой отказа, и тогда все равно должен быть компонент, что будет мониторить работу обоих балансировщиков.
Мониторинг
Избыточность сама по себе не может гарантировать высокую доступность. Должен существовать механизм для обнаружения сбоев и принятия мер в ситуации, когда один из компонентов становится недоступным.
Для отслеживания сбоев можно использовать подход «сверху вниз»: компоненты верхнего уровня (например, балансировщик) будут ответственными за мониторинг нижнего уровня (серверов). Такой подход имеет и свой недостаток: верхний уровень не будет мониториться, так как если создать службу обнаружения сбоев для верхнего уровня, то она станет еще одной точкой отказа.
При таком сценарии необходим распределенный подход. Несколько резервных компонентов должны быть соединены вместе в кластер, где каждый из них должен в равной степени быть способен обнаруживать сбои и восстанавливаться.
Про мониторинг ИТ-инфраструктуры читайте в статье «Эффективный мониторинг IT-инфраструктуры – что и как мониторить»
Еще одним способом мониторинга работоспособности систем и активных баз данных является health monitor. Данный инструмент может предупредить администратора базы данных (DBA) о потенциальных проблемах в работоспособности системы.
Мониторинг работоспособности ИТ-инфраструктуры позволяет заблаговременно обнаружить проблемы, которые могут привести к сбою оборудования или снижению производительности систем, что позволяет решать эти проблемы до того, как они приведут к неисправности всей инфраструктуры.
Отказоустойчивость
Для высокой доступности отказоустойчивость так же важна, как и аварийное восстановление. Отказоустойчивость – это способность системы выдерживать нагрузки и сохранять свою работоспособность при отказе одного или нескольких компонентов. Отказоустойчивая система требует резервирования, чтобы свести к минимуму сбои в работе.
Для достижения резервирования, ИТ-организации должны придерживаться стратегии N+1, N+2, 2N или 2N+1.
В данных формулах N обозначает имеющийся компонент, что способен справиться с пиковой нагрузкой. Для резервирования в системе должен присутствовать еще один или несколько таких компонентов N+1, N+2 для поддержания работоспособности системы, если один из компонентов выйдет из строя. 2N или 2N+1 означают, что должно быть два основных компонента и один дополнительный. Эти стратегии гарантируют, что для критически важных компонентов будет хотя бы одна резервная копия.
Аварийное восстановление
Аварийное восстановление (DR, disaster recovery) — включает в себя набор политик и процедур, позволяющих восстановить систему после любого сбоя, стихийного бедствия или техногенной катастрофы.
Как же связаны между собой высокая доступность и аварийное восстановление?
Высокая доступность и аварийное восстановление имеют одну и ту же задачу: поддержание работоспособности систем в рабочем состоянии, с основным отличием в том, что высокая доступность предназначена для решения проблем во время работы системы, а аварийное восстановление – для решения проблем после того, как система даст сбой.
Независимо от того, насколько высокодоступна система, всегда должен быть составлен план аварийного восстановления (disaster recovery plan) на случай непредвиденных ситуаций, таких как поломка, кибератака и других инцидентов.
Такой план должен состоять из четко прописанных правил поведения в случае выхода из строя любого компонента или всей инфраструктуры, а также из тщательно подобранных программных решений по резервному копированию и восстановлению данных.
Внедрение высокой доступности в вашу ИТ-инфраструктуру – это ваш вклад в обеспечение надежности и производительности всех компонентов и систем. Учитывая высокую доступность при проектировании и построении инфраструктуры, вы сможете избежать многих проблем: избежать сбоев в работе оборудования и свести к минимуму время простоев, обеспечить непрерывность работы всех служб, сервисов и приложений.