Поиск по сайту:

Что такое высокая доступность?


Введение

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

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

Что такое высокая доступность?

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

Измерение доступности

Доступность часто выражается в процентах, указывающих, сколько времени безотказной работы ожидается от конкретной системы или компонента в заданный период времени, где значение 100% означает, что система никогда не выходит из строя. Например, система, которая гарантирует 99% доступности в течение одного года, может иметь до 3,65 дней простоя (1%).

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

Как работает высокая доступность?

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

Когда важна высокая доступность?

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

Что делает систему высокодоступной?

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

Уровень веб-сервера в этом сценарии не является единой точкой отказа, потому что:

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

Но что произойдет, если балансировщик нагрузки отключится?

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

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

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

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

При таком сценарии необходим распределенный подход. Несколько резервных узлов должны быть соединены вместе в кластер, где каждый узел должен быть в равной степени способен обнаруживать сбои и восстанавливаться.

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

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

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

Вот как выглядит высокодоступная инфраструктура с использованием зарезервированных IP-адресов:

Какие системные компоненты необходимы для обеспечения высокой доступности?

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

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

Какое программное обеспечение можно использовать для настройки высокой доступности?

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

серверы баз данных.

Продвигаясь вверх по системному стеку, важно внедрить надежное резервное решение для точки входа вашего приложения, обычно это балансировщик нагрузки. Чтобы устранить эту единую точку отказа, как упоминалось ранее, нам необходимо реализовать кластер балансировщиков нагрузки за зарезервированным IP-адресом. Corosync и Pacemaker являются популярными вариантами для создания такой настройки на обоих серверах CentOS.

Заключение

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