Кластер высокой доступности - High-availability cluster

Кластеры высокой доступности (также известен как HA-кластеры , отказоустойчивые кластеры или Метрокластеры Активные / Активные) являются группами компьютеры эта поддержка сервер Приложения которые можно надежно использовать с минимальное время простоя. Они работают, используя программное обеспечение высокой доступности запрячь избыточный компьютеры в группах или кластеры которые обеспечивают непрерывное обслуживание при выходе из строя компонентов системы. Без кластеризации, если сервер, на котором запущено определенное приложение, выйдет из строя, приложение будет недоступно, пока неисправный сервер не будет исправлен. Кластеризация высокой доступности исправляет эту ситуацию, обнаруживая аппаратные / программные ошибки и немедленно перезапуская приложение в другой системе без вмешательства администратора, процесс, известный как аварийное переключение. В рамках этого процесса программное обеспечение кластеризации может настроить узел перед запуском на нем приложения. Например, может потребоваться импортировать и смонтировать соответствующие файловые системы, может потребоваться настройка сетевого оборудования, а также может потребоваться выполнение некоторых поддерживающих приложений.[1]

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

Реализации HA-кластера пытаются создать в кластере избыточность для устранения единичных точек отказа, включая несколько сетевых подключений и хранилище данных, которое подключается с избыточностью через сети хранения данных.

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

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

Требования к дизайну приложения

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

  • Должен быть относительно простой способ запустить, остановить, принудительно остановить и проверить статус приложения. На практике это означает, что приложение должно иметь интерфейс командной строки или сценарии для управления приложением, включая поддержку нескольких экземпляров приложения.
  • Приложение должно иметь возможность использовать общее хранилище (NAS /SAN ).
  • Самое главное, приложение должно сохранять как можно большую часть своего состояния в энергонезависимой общей памяти. Не менее важна возможность перезапуска на другом узле в последнем состоянии перед отказом с использованием сохраненного состояния из общего хранилища.
  • Приложение не должно повреждать данные в случае сбоя или перезапуска из сохраненного состояния.
  • Ряд этих ограничений можно минимизировать за счет использования сред виртуальных серверов, в которых сам гипервизор поддерживает кластер и обеспечивает плавную миграцию виртуальных машин (включая состояние оперативной памяти) между физическими узлами - см. Отказоустойчивые кластеры Microsoft Server 2012 и 2016.
    • Ключевое различие между этим подходом и запущенными приложениями с поддержкой кластера заключается в том, что последние могут справляться с сбоями серверных приложений и поддерживать текущие «скользящие» обновления программного обеспечения, сохраняя при этом клиентский доступ к службе (например, базе данных), за счет того, что один экземпляр предоставляет услуги, а другой модернизируется или ремонтируется. Это требует, чтобы экземпляры кластера обменивались данными, очищали кеши и координировали доступ к файлам во время передачи обслуживания.

Конфигурации узлов

Схема сети кластера высокой доступности с 2 узлами

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

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

Такие конфигурации иногда можно отнести к одной из следующих моделей:

  • Активный / активный - трафик, предназначенный для отказавшего узла, либо передается на существующий узел, либо выполняется балансировка нагрузки между оставшимися узлами. Обычно это возможно только в том случае, если узлы используют однородную конфигурацию программного обеспечения.
  • Активный / пассивный - предоставляет полностью избыточный экземпляр каждого узла, который переводится в оперативный режим только при выходе из строя связанного с ним основного узла.[2] Эта конфигурация обычно требует самого дополнительного оборудования.
  • N + 1 - Предоставляет один дополнительный узел, который переводится в оперативный режим, чтобы взять на себя роль отказавшего узла. В случае разнородной конфигурации программного обеспечения на каждом первичном узле дополнительный узел должен иметь универсальную возможность принимать на себя любую из ролей основных узлов, за которые он отвечает. Обычно это относится к кластерам, в которых одновременно работают несколько служб; в случае единственного обслуживания это вырождается в активный / пассивный.
  • N + M - в случаях, когда один кластер управляет множеством служб, наличие только одного выделенного узла аварийного переключения может не обеспечить достаточной избыточности. В таких случаях включается и доступно более одного (M) резервных серверов. Количество резервных серверов - это компромисс между стоимостью и требованиями к надежности.
  • N-to-1 - позволяет резервному узлу аварийного переключения временно становиться активным, пока исходный узел не будет восстановлен или переведен обратно в оперативный режим, после чего службы или экземпляры должны быть возвращены к нему после сбоя, чтобы восстановить высокую доступность. .
  • N-to-N - комбинация кластеров активный / активный и N + M, кластеры от N до N перераспределяют службы, экземпляры или соединения от отказавшего узла между оставшимися активными узлами, тем самым устраняя (как и в случае с активным / активным) необходимость для «резервного» узла, но возникает необходимость в дополнительной емкости на всех активных узлах.

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

Надежность узла

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

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

Стратегии аварийного переключения

Системы, которые обрабатывают сбои в распределенных вычислениях, имеют разные стратегии устранения сбоев. Например, Apache Cassandra API Гектор определяет три способа настройки аварийного переключения:

  • Быстро потерпеть неудачу, написанное как «FAIL_FAST», означает, что попытка исправить сбой не удалась, если первый узел не может быть достигнут.
  • В случае неудачи попробуйте одно - доступно следующее, написанное как «ON_FAIL_TRY_ONE_NEXT_AVAILABLE», означает, что система пробует один хост, наиболее доступный или доступный, прежде чем отказаться.
  • В случае неудачи попробуйте все, написанное как «ON_FAIL_TRY_ALL_AVAILABLE», означает, что система пробует все существующие доступные узлы, прежде чем отказаться.

Реализации

Доступно несколько бесплатных и коммерческих решений, таких как:

Смотрите также

Рекомендации

  1. ^ ван Вугт, Сандер (2014), Кластеризация высокой доступности Pro Linux, стр.3, Апресс, ISBN  978-1484200803
  2. ^ Борншлегль, Сюзанна (2012). Железнодорожный компьютер 3.0: инновационный дизайн платы может произвести революцию на рынке (pdf). MEN Mikro Elektronik. Получено 2015-09-21.
  3. ^ HP Serviceguard # cite note-sghistory-1

дальнейшее чтение

  • Грег Пфистер: В поисках кластеров, Прентис Холл, ISBN  0-13-899709-8
  • Эван Маркус, Хэл Стерн: Чертежи для обеспечения высокой доступности: проектирование отказоустойчивых распределенных систем, Джон Уайли и сыновья, ISBN  0-471-35601-8
  • Чи-Вей Анг, Чен-Хонг Тхам: Анализ и оптимизация доступности сервиса в HA-кластере с доступностью машин в зависимости от нагрузки, Транзакции IEEE в параллельных и распределенных системах, том 18, выпуск 9 (сентябрь 2007 г.), страницы 1307-1319, ISSN  1045-9219 [2]