Кластер высокой доступности
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Кластеры высокой доступности (также известные как кластеры высокой доступности , отказоустойчивые кластеры ) — это группы компьютеров , которые поддерживают серверные приложения , которые можно надежно использовать с минимальным временем простоя . Они работают, используя программное обеспечение высокой доступности для объединения резервных компьютеров в группы или кластеры , которые обеспечивают непрерывное обслуживание в случае сбоя компонентов системы. Без кластеризации в случае сбоя сервера, на котором выполняется определенное приложение, приложение будет недоступно до тех пор, пока сбойный сервер не будет исправлен. Кластеризация высокой доступности исправляет эту ситуацию, обнаруживая аппаратные/программные сбои и немедленно перезапуская приложение в другой системе без необходимости административного вмешательства (процесс, известный как аварийное переключение) . В рамках этого процесса программное обеспечение кластеризации может настроить узел перед запуском на нем приложения. Например, может потребоваться импортировать и смонтировать соответствующие файловые системы, настроить сетевое оборудование, а также запустить некоторые вспомогательные приложения. [1]
Кластеры высокой доступности часто используются для критически важных баз данных , совместного использования файлов в сети, бизнес-приложений и служб поддержки клиентов, таких как электронной коммерции веб-сайты .Реализации кластера высокой доступности пытаются создать избыточность в кластере, чтобы исключить отдельные точки отказа, включая множественные сетевые подключения и хранилища данных, которые избыточно подключены через сети хранения данных .
Кластеры высокой доступности обычно используют тактовое частное сетевое соединение, которое используется для мониторинга работоспособности и состояния каждого узла в кластере. Одно тонкое, но серьезное условие, с которым должно справляться все программное обеспечение кластеризации, — это разделение мозга , которое возникает, когда все частные каналы отключаются одновременно, но узлы кластера все еще работают. Если это произойдет, каждый узел в кластере может ошибочно решить, что все остальные узлы вышли из строя, и попытаться запустить службы, которые все еще работают на других узлах. Наличие дублирующихся экземпляров служб может привести к повреждению данных в общем хранилище.
Чтобы избежать этого сценария, кластеры высокой доступности часто также используют хранилище кворума -свидетеля (локальное или облачное). Устройство-свидетель не может использоваться совместно двумя половинами разделенного кластера, поэтому в случае, если все члены кластера не могут взаимодействовать друг с другом (например, из-за сбоя контрольного сигнала), если участник не может получить доступ к свидетелю, он не может стать активным.
Требования к дизайну приложения
[ редактировать ]Не каждое приложение может работать в кластерной среде высокой доступности, и необходимые проектные решения необходимо принимать на ранней стадии разработки программного обеспечения. Для работы в кластерной среде с высокой доступностью приложение должно удовлетворять как минимум следующим техническим требованиям, последние два из которых имеют решающее значение для его надежного функционирования в кластере, и их сложнее всего удовлетворить полностью:
- Должен быть относительно простой способ запуска, остановки, принудительной остановки и проверки состояния приложения. На практике это означает, что приложение должно иметь интерфейс командной строки или сценарии для управления приложением, включая поддержку нескольких экземпляров приложения.
- Приложение должно иметь возможность использовать общее хранилище ( NAS / SAN ).
- Самое главное, что приложение должно хранить как можно большую часть своего состояния в энергонезависимом общем хранилище. Не менее важна возможность перезапуска на другом узле в последнем состоянии перед сбоем, используя сохраненное состояние из общего хранилища.
- Приложение не должно повреждать данные в случае сбоя или перезапуска из сохраненного состояния.
- Ряд этих ограничений можно свести к минимуму за счет использования сред виртуальных серверов, в которых сам гипервизор поддерживает кластеры и обеспечивает плавную миграцию виртуальных машин (включая состояние рабочей памяти) между физическими хостами — см. Microsoft Server 2012 и 2016 Failover Clusters .
- Ключевое различие между этим подходом и запуском приложений, поддерживающих кластер, заключается в том, что последние могут справляться со сбоями серверных приложений и поддерживать «последовательные» обновления программного обеспечения в реальном времени, сохраняя при этом клиентский доступ к службе (например, базе данных), за счет того, что один экземпляр предоставляет услугу, а другой находится в стадии модернизации или ремонта. Для этого экземпляры кластера должны обмениваться данными, очищать кэши и координировать доступ к файлам во время передачи управления. Отказоустойчивая кластеризация подпадает под планирование, создание и настройку, а также устранение неполадок.
Конфигурации узлов
[ редактировать ]
Наиболее распространенным размером кластера высокой доступности является кластер из двух узлов, поскольку это минимум, необходимый для обеспечения избыточности, но многие кластеры состоят из гораздо большего количества узлов, иногда из десятков.
Прилагаемая диаграмма представляет собой хороший обзор классического кластера высокой доступности с оговоркой, что в ней не упоминается функциональность кворума/свидетеля (см. выше).
Такие конфигурации иногда можно отнести к одной из следующих моделей:
- Активный/активный — трафик, предназначенный для вышедшего из строя узла, либо передается на существующий узел, либо распределяется нагрузка по остальным узлам. Обычно это возможно только в том случае, если узлы используют однородную конфигурацию программного обеспечения.
- Активный/пассивный — обеспечивает полностью резервированный экземпляр каждого узла, который подключается к сети только в случае отказа связанного с ним основного узла. [2] Эта конфигурация обычно требует самого дополнительного оборудования.
- N+1 — предоставляет один дополнительный узел, который подключается к сети, чтобы взять на себя роль вышедшего из строя узла. В случае гетерогенной конфигурации программного обеспечения на каждом основном узле дополнительный узел должен быть универсально способен выполнять любую из ролей основных узлов, за которые он отвечает. Обычно это относится к кластерам, в которых одновременно работает несколько служб; в случае с одной услугой это перерождается в активный/пассивный.
- N+M — в случаях, когда один кластер управляет многими службами, наличие только одного выделенного узла аварийного переключения может не обеспечить достаточную избыточность. В таких случаях включается и доступно более одного (M) резервных серверов. Количество резервных серверов представляет собой компромисс между стоимостью и требованиями к надежности.
- N-to-1 — позволяет резервному узлу аварийного переключения временно становиться активным до тех пор, пока исходный узел не будет восстановлен или снова подключен к сети, после чего службы или экземпляры должны быть возвращены к нему для восстановления высокой доступности. .
- N-to-N — комбинация кластеров «активный/активный» и «N+M», кластеры от N до N перераспределяют службы, экземпляры или соединения с вышедшего из строя узла между оставшимися активными узлами, тем самым устраняя (как и в случае с активным/активным) необходимость для «резервного» узла, но возникает необходимость в дополнительной мощности на всех активных узлах.
Термины «логический хост» или «логический хост кластера» используются для описания сетевого адреса , который используется для доступа к службам, предоставляемым кластером. Этот логический идентификатор хоста не привязан к одному узлу кластера. На самом деле это сетевой адрес/имя хоста, связанный со службами, предоставляемыми кластером. Если узел кластера с работающей базой данных выйдет из строя, база данных будет перезапущена на другом узле кластера.
Надежность узла
[ редактировать ]Кластеры высокой доступности обычно используют все доступные методы, чтобы сделать отдельные системы и общую инфраструктуру максимально надежными. К ним относятся:
- Зеркальное отображение дисков (или избыточные массивы независимых дисков — RAID), чтобы отказ внутренних дисков не приводил к сбоям в системе. Распределенное реплицируемое блочное устройство является одним из примеров.
- Резервированные сетевые соединения, чтобы сбои одного кабеля, коммутатора или сетевого интерфейса не приводили к сбоям в работе сети.
- Резервные соединения сети хранения данных (SAN), чтобы сбои одного кабеля, коммутатора или интерфейса не приводили к потере подключения к хранилищу (это нарушит архитектуру без общего доступа ).
- Резервные входы электропитания в различных цепях, обычно обе или все защищены источниками бесперебойного питания , а также резервные блоки питания , чтобы сбои в одном питании, кабеле, ИБП или источнике питания не приводили к потере питания в системе.
Эти функции помогают минимизировать вероятность того, что потребуется переключение кластеризации между системами. При таком аварийном переключении предоставляемая услуга недоступна по крайней мере некоторое время, поэтому предпочтительны меры, позволяющие избежать аварийного переключения.
Стратегии аварийного переключения
[ редактировать ]Системы, обрабатывающие сбои в распределенных вычислениях, имеют разные стратегии устранения сбоев. Например, Apache Cassandra API Hector определяет три способа настройки переключения при отказе:
- Fail Fast , записанный как «FAIL_FAST», означает, что попытка устранить сбой не удалась, если первый узел не может быть достигнут.
- В случае неудачи попробуйте один — следующий доступный сценарий «ON_FAIL_TRY_ONE_NEXT_AVAILABLE» означает, что система пробует один хост, наиболее доступный или доступный, прежде чем отказаться от него.
- В случае неудачи попробуйте все , сценарий «ON_FAIL_TRY_ALL_AVAILABLE» означает, что система пробует все существующие доступные узлы, прежде чем отказаться от нее.
См. также
[ редактировать ]- Компьютерный кластер
- Аварийное переключение
- Форум доступности услуг
- OpenSAF
- Срочные вычисления
- Кардиостимулятор (программное обеспечение)
- IBM параллельный сисплекс
- Список программного обеспечения для управления кластером
Ссылки
[ редактировать ]- ^ ван Вугт, Сандер (2014), Кластеризация высокой доступности Pro Linux , стр.3, Apress, ISBN 978-1484200803
- ^ Борншлегль, Сюзанна (2012). Железнодорожный компьютер 3.0: инновационная конструкция платы может произвести революцию на рынке (pdf) . МУЖЧИНЫ Микро Электроник . Проверено 21 сентября 2015 г.
Дальнейшее чтение
[ редактировать ]- Грег Пфистер: В поисках кластеров , Прентис Холл, ISBN 0-13-899709-8
- Эван Маркус, Хэл Стерн: Проекты высокой доступности: проектирование отказоустойчивых распределенных систем , John Wiley & Sons, ISBN 0-471-35601-8
- Чи-Вей Анг, Чен-Хонг Тхам: Анализ и оптимизация доступности сервисов в кластере высокой доступности с доступностью компьютеров, зависящей от нагрузки , Транзакции IEEE в параллельных и распределенных системах, том 18, выпуск 9 (сентябрь 2007 г.), страницы 1307-1319, ISSN 1045-9219 [1]