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

Вступление

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

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

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

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

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

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

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

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

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

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

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

Что делает систему очень доступной?

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

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

  • избыточные компоненты для той же задачи на месте

  • Механизм над этим уровнем (балансировщик нагрузки) способен обнаруживать сбои в компонентах и ​​адаптировать его поведение для своевременного восстановления.

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

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

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

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

изображение: https: //assets.digitalocean.com/articles/high-availability/Diagram_2.png [Диаграмма 01: Распределители нагрузки / сверху вниз]

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

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

изображение: https: //assets.digitalocean.com/articles/high-availability/Diagram_1.png [Диаграмма 02: Кластер / Распределенный]

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

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

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

Вот как выглядит высокодоступная инфраструктура, использующая плавающие IP:

изображение: https: //assets.digitalocean.com/articles/high_availability/ha-diagram-animated.gif [диаграмма 03: плавающие IP-адреса]

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

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

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

  • * Аппаратное обеспечение: * высокодоступные серверы должны быть устойчивы к перебоям питания и аппаратным сбоям, включая жесткие диски и сетевые интерфейсы.

  • * Программное обеспечение: * весь программный стек, включая операционную систему и само приложение, должен быть подготовлен к обработке неожиданного сбоя, который может, например, потенциально потребовать перезагрузки системы.

  • * Данные: * потеря данных и несогласованность могут быть вызваны несколькими факторами, и это не ограничивается сбоями жесткого диска. Системы высокой доступности должны учитывать безопасность данных в случае сбоя.

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

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

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

HAProxy (Прокси-сервер высокой доступности) является распространенным выбором для балансировки нагрузки, поскольку он может обрабатывать нагрузку балансировка на нескольких уровнях и для разных типов серверов, включая https://www.digitalocean.com/community/tutorials/how-to-use-haproxy-to-set-up-mysql-load-balancing—​3 [ серверы баз данных.

При перемещении вверх по системному стеку важно реализовать надежное избыточное решение для точки входа вашего приложения, обычно балансировщика нагрузки. Чтобы устранить эту единственную точку отказа, как уже упоминалось ранее, нам необходимо реализовать кластер балансировщиков нагрузки за плавающим IP-адресом. Corosync и Pacemaker являются популярным выбором для создания такой установки на обоих https://www.digitalocean.com/community/tutorials/how-to-create-a-high-availability-setup-with-corosync-pacemaker-and- плавающие ips-on-ubuntu-14-04 [Ubuntu] и https://www.digitalocean.com/community/tutorials/how-to-create-a-high-availability-setup-with-pacemaker-corosync-and -floating-ips-on-centos-7 [CentOS] серверов.

Заключение

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

Related