«Кластер» - что это значит?

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

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

Вычислительный кластер

Как правило это продукт, в той или иной степени копирующий своего наиболее последовательного представителя – вычислительный кластер проекта Beowulf. Обычно это множество примерно однотипных вычислительных систем под управлением OS Linux, на которых установлены «узлы» вычислительного кластера, и компьютер-планировщик, распределяющий задания по такой многоузловой сети для их параллельной обработки.
Beowulf-кластер есть почти идеальный кластер, он практически линейно масштабируется до сотен и тысяч узлов, он нечувствителен к выходу из строя как одного, так и нескольких своих узлов. За исключением одного минуса: в задачах реальной жизни его применимость довольно ограниченна.
Beowulf прекрасно работает на задачах, которые алгоритмически делятся на множество однотипных операций. Но, к сожалению, такие операции встречаются главным образом в науке. Это такие операции как разложение на множители, преобразование Фурье, любые иные операции, требующие некоей минимальной порции данных и выполнения над ней какой-то относительно небольшой операции, независимо от всех прочих участников процесса.
Если мы возьмем, например, наиболее функционально применимую задачу «реальной жизни» - выборку из базы данных, а к такой задаче чаще всего и сводится большинство бизнес-задач, то мы увидим, что задача «SELECT * FROM TABLE», как ни прискорбно, не может быть распараллелена. На такой задаче Beowulf-type cluster практически не имеет преимущества перед одиночным компьютером.

Кластер приложений

Отказоустойчивый кластер (active-passive)
Традиционным представителем такого рода продуктов является хорошо известный и широко применяемый продукт Veritas Cluster Server (VCS, ныне принадлежит компании Symantec). Также известны продукты Microsoft Cluster Services (поставляется в составе Windows Server Enterprise Edition) и Legato AAM (Automated Availability Manager, ныне EMC AutoStart).
Это в чистом виде отказоустойчивый кластер. Приложение исполняется на некоей платформе, состояние платформы контролируется ПО кластера, в случае недостаточности тех или иных ресурсов (объема памяти, производительности процессора) или недоступности, прикладная задача (по возможности корректно) останавливается на существующем узле и рестартуется на другом, имеющемся в распоряжении кластерного софта. Тем самым обеспечивается доступность прикладной задачи и некий заданный уровень Quality of Service.
Конкретное приложение в каждый конкретный момент времени исполняется на какой-то одной конкретной платформе (сервере).

Параллельный кластер (active-active)

В отличие от вышеописанного кластера модели active-passive, в котором лишь один узел в любой произвольный момент времени является активным, а другой узел или узлы находятся в «горячем резерве», ожидая отказа или недоступности активного узла с тем, чтобы запустить на себе приложение и продолжить выполнение задачи, все узлы кластера модели active-active активны и исполняют прикладную задачу параллельно. Это немного напоминает ранее рассмотренный вычислительный кластер Beowulf, в котором вычислительные узлы получают свои порции данных для обработки от узла диспетчера-«планировщика». Однако, как мы уже рассмотрели выше, это требует очень непростой организации как самой задачи, позволяющей себя распараллеливать на независимые потоки, так и возможности обеспечивать совместное использование данных как на чтение, так и на запись.
??менно сложность, а следовательно и дороговизна решения этих задач ограничивала появление и применение кластеров приложений типа active-active. В остальном же он функционально подобен уже рассмотренным.
Наиболее известным представителем такого вида кластеров является продукт Oracle RAC (Real Application Cluster).

Кластер хранения

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

Как ни парадоксально, но даже простая структура RAID соответствует нашему определению кластера, так RAID-1 или RAID-5 являются «устройствами, сохраняющими свою функциональность при выходе из строя произвольных составляющих их компонентов (дисков)». Но попробуем рассмотреть более продвинутые и сложные варианты отказоустойчивого хранилища, ведь система хранения состоит не только из составляющих ее дисков.

Отказоустойчивый кластер (active-passive)

Таковыми ныне являются практически все имеющиеся на рынке серьезные системы хранения. Любая система хранения enterprise-класса поставляется с дублированными блоками питания и модулями контроллера управления, выход из строя любого из пары контроллеров не приводит к выходу из строя или длительной недоступности системы хранения и хранимых на ней данных. Обычно каждая дисковая группа закреплена за каким-то конкретным контроллером, ее обслуживающим (т.н «ownership»), в случае выхода его из строя, операции доступа к дисковому разделу, который обслуживался вышедшим из строя контроллером, перехватываются исправным контроллером, который начинает обслуживать как свои разделы, так и разделы погибшего товарища.
Таким образом, можно говорить, что такая конструкция будет являться «кластером active-passive», потому что несмотря на то, что оба контроллера работают, выполняя операции ввода-вывода, для каждого конкретного дискового раздела один контроллер будет owner-ом, обеспечивающим операции, а второй – резервным, а для другого раздела – наоборот.

Параллельный кластер (active-active)

Параллельный кластер в системах хранения пока представлен единичными продуктами.
Таковыми прежде всего являются кластерные конфигурации систем хранения Network Appliance (двух- и более узловые, в версии Data ONTAP GX до 24 узлов), которые вдобавок могут быть, в отличие от рассмотренных выше, и территориально распределенными: что толку от высоконадежной системы, которую зальет горячей водой лопнувшей ночью батареи?
Такие системы принято называть grid-системами. Компоненты таких систем активно развиваются в настоящее время, например, в OS Linux, и на базе таких систем со специальной Global File System строятся многоузловые вычислительные и “хранительные” кластерные системы.
Без сомнения за grid-системами большое будущее, но пока такие системы (за вышеперечисленными исключениями от того же NetApp) находятся в состоянии экспериментальных.

Комментарии (4)

  1. bbk:

    Что-то больно “Отказоустойчивый кластер (active-passive)” смахивает на работу NetApp’а.

  2. bbk:

    > Что-то больно “Отказоустойчивый кластер (active-passive)” смахивает на работу NetApp’а.

    Нет.
    Active-Passive Cluster это что-то типа первого MSCS, времен Windows 2003, когда к одной полке со SCSI-дисками было подключено через Y-образный кабель два сервера, из которых один (active) - работал, а второй (passive) - стоял. В смысле вообще стоял, не обращаясь к дискам и не работая совсем.
    В случае сбоя первого сервера, второй тут-же стартовал, и начинал работать с данными на SCSI-дисках первого сервера.
    http://habrahabr.ru/post/139410/

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

    Следует отличать Active-active кластер share nothing и Active-active cluster with data sharing, например Oracle RAC (кластер уровня приложения). Они работают несколько по-разному, но и тот и другой является active-active.

  3. bbk:

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

    ?? в-третьих если добавить в это предложение явно, что оба контроллера работают одновременно - это будет стандартная схема Active-active кластер share nothing.

    Получилась какая-то тавтология на уровне описаний кластеров :)

  4. > Во-первых из первой части предложения можно заключить, что оба работают.

    Он оба работают, просто обслуживаются разными контроллерами.

    > Вот и получается впечатление, что работают одновременно оба контроллера.

    Так и есть.

    > ?? в-третьих если добавить в это предложение явно

    Ну лень мне уже править посты почти пятилетней давности. Кроме вас это ни у кого вопросов не вызывает :)

Оставить комментарий