Кластерные группы. Введение: кластерные вычислительные системы. Испытание системы до катастрофы

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

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

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

Что угрожает приложениям...

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

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

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

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

Человеческая ошибка. Простой пример: администратор вносит изменения в настройку конфигурационных файлов, к примеру, DNS. Когда он тестирует изменения, сервис DNS работает, а вот сервис, который использует DNS, например, электронная почта, начинает испытывать проблемы, которые выявляются не сразу.

Плановое обслуживание. Обслуживание системы - замена компонентов, установка пакетов обновлений, перезагрузка - составляет основную причину недоступности. По оценке Gartner, 80% времени, в течение которого система недоступна, - это плановые простои.

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

...и как с этим бороться

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

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

Локальное зеркалирование. Предоставляет доступность данных в реальном времени, данные защищены от разрушения.

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

Удаленная репликация. Здесь предполагается разнесение вычислительных площадок с целью создания копии данных в разнесенных ЦОД.

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

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

На взгляд автора, для понимания стратегии восстановления сервиса весьма удачен подход компании Symantec (рис. 1). Здесь есть два ключевых момента - точка, в которую система восстанавливается (recovery point objective, RPO), и время, требуемое на восстановление сервиса (recovery time objective, RTO).

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

Для самых критичных систем RTO и RPO не должны превышать 1 ч. Системы на основе ленточного резервного копирования предоставляют точку восстановления в два или более дней. Кроме того, восстановление с ленты не автоматизировано, администратор должен постоянно помнить, все ли он должным образом восстановил и запустил.

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

Если требуется предоставить RTO и RTS, измеряемое минутами, т. е. задача требует минимизации простоев (как плановых, так и незапланированных), то единственно верное решение - кластер высокой готовности. В настоящей статье рассматриваются именно такие системы.

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

Типы кластеров

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

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

Кластеры могут существовать в различных формах. К наиболее общим типам кластеров относятся системы повышенной производительности (high performance computing, HPC) и системы высокой доступности (high availability, HA).

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

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

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

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

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

Конфигурации кластеров

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

Симметричный кластер

Симметричный кластер также выполнен на двух узлах, но на каждом их них работает активное приложение (рис. 3). Кластерное ПО обеспечивает корректный автоматический переход приложения с сервера на сервер при отказе одного из узлов. В этом случае загрузка оборудования оказывается более эффективной, но при возникновении неисправности получается, что на одном сервере работают приложения всей системы, что может иметь нежелательные последствия в плане производительности. Кроме того, необходимо учитывать, возможна ли работа нескольких приложений на одном сервере.

Конфигурация N+1

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

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

Из всех конфигураций кластеров N+1, наверное, самая эффективная по соотношению сложности и эффективности использования оборудования. Приведенная ниже табл. 1 подтверждает эту оценку.

Конфигурация N к N

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

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

Оценка кластерных конфигураций

В табл. 1 суммируется сказанное выше о различных конфигурациях кластеров. Оценка дается по четырехбалльной шкале (4 - высший балл, 1 – низший).

Из табл. 1 видно, что наиболее проста в плане проектирования и эксплуатации классическая ассиметричная система. И если ее заказчик может эксплуатировать самостоятельно, то остальные было бы правильно передать на внешнее обслуживание.

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

Между тем современное кластерное ПО предоставляет возможность балансировки нагрузки. Если нагрузка на одном из узлов достигает критического значения, при правильно настроенной политике приложение на нем корректно погасится и запустится на другом узле, где текущая загрузка позволяет это сделать. Причем средства контроля загрузки сервера могут быть как статическими - приложение в конфигурационном файле кластера само указывает, сколько ресурсов ему потребуется, - так и динамическими, когда средство балансировки нагрузки интегрируется с внешней утилитой (например, Precise), которая вычисляет текущую загрузку системы.

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

Основные компоненты кластера

Как любой сложный комплекс, кластер независимо от конкретной реализации состоит из аппаратной и программной составляющих.

Что касается аппаратуры, на которой собирается кластер, основная составляющая здесь - межузловое соединение или внутренний кластерный интерконнект, обеспечивающий физическую и логическую связь серверов. На практике это внутренняя сеть Ethernet с продублированными соединениями. Ее назначение - во первых, передача пакетов, подтверждающих целостность системы (так называемых heartbeat), а во-вторых, при определенном дизайне или схеме, возникшей после возникновения неисправности, - обмен между узлами информационным трафиком, предназначенным для передачи вовне. Другие компоненты очевидны: узлы, на которых запущена ОС с кластерным ПО, дисковые хранилища, к которым имеют доступ узлы кластера. И наконец, общая сеть, через которую идет взаимодействие кластера с внешним миром.

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

Реализации кластеров

На рынке ПО существует много реализаций описанных выше кластерных конфигураций. Практически все крупнейшие производители серверов и ПО - например, Microsoft, HP, IBM, Sun, Symantec - предлагают свои продукты в этой области. Компания «Микротест» имеет опыт работы с решениями Sun Cluster Server (SC) от Sun Microsystems (www.sun.com) и Veritas Cluster Server (VCS) от Symantec (www.symantec.com). С точки зрения администратора по функционалу эти продукты очень похожи - предоставляют одинаковые возможности настройки и реакций на события. Однако по своей внутренней организации это совершенно разные продукты.

SC разработан Sun для собственной ОС Solaris и потому работает только в среде этой ОС (как на платформе SPARC, так и на x86). Как следствие SC при инсталляции глубоко интегрируется с ОС и становится ее частью, частью ядра Solaris.

VCS - продукт многоплатформенный, работает практически со всеми популярными ныне ОС - AIX, HP-UX, Solaris, Windows, Linux, и представляет собой надстройку - приложение, которое управляет работой других приложений, подлежащих кластеризации.

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

Программные компоненты Sun Cluster Server

В качестве ядра SC (рис. 6) выступает ОС Solaris 10 (или 9) с надстроенной оболочкой, обеспечивающей функцию высокой доступности (ядро выделено зеленым цветом). Далее идут глобальные компоненты (светло-зеленого цвета), которые предоставляют свои службы, полученные от кластерного ядра. И наконец, на самом верху - пользовательские компоненты.

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

Модуль межузлового взаимодействия передает сообщения heartbeating между узлами. Это короткие сообщения, подтверждающие отклик соседнего узла. Взаимодействием данных и приложений также управляет HA framework как частью межузлового взаимодействия. Кроме того, framework управляет целостностью кластерной конфигурации и при необходимости выполняет задачи восстановления и обновления. Целостность поддерживается через кворум-устройство; при необходимости выполняется реконфигурация. Кворум-устройство - это дополнительный механизм проверки целостности узлов кластера через небольшие участки общей файловой системы. В последней версии кластера SC 3.2 появилась возможность назначать кворум-устройство вне кластерной системы, т. е. использовать дополнительный сервер на платформе Solaris, доступный по TCP/IP. Неисправные члены кластера выводятся из конфигурации. Элемент, который вновь оказывается работоспособен, автоматически включается в конфигурацию.

Функции глобальных компонентов вытекают из HA framework. Сюда относятся:

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

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

Программные компоненты Veritas Cluster Server

Схематически двухузловой VCS-кластер представлен на рис. 7. Межузловое взаимодействие в VCS основано на двух протоколах - LLT и GAB. Для поддержки целостности кластера VCS использует внутреннюю сеть.

LLT (Low Latency Transport) - это разработанный Veritas протокол, функционирующий поверх Ethernet как высокоэффективная замена IP-стека и используемый узлами во всех внутренних взаимодействиях. Для требуемой избыточности в межузловых коммуникациях требуется как минимум две полностью независимые внутренние сети. Это необходимо, чтобы VSC мог различить сетевую и системную неисправность.

Протокол LLT выполняет две основные функции: распределение трафика и отправку heartbeating. LLT распределяет (балансирует) межузловое взаимодействие между всеми доступными внутренними связями. Такая схема гарантирует, что весь внутренний трафик случайно распределен между внутренними сетями (их может быть максимум восемь), что повышает производительность и устойчивость к отказу. В случае неисправности одного линка данные будут перенаправлены на оставшиеся другие. Кроме того, LLT отвечает за отправку через сеть heartbeat-трафика, который используется GAB.

GAB (Group Membership Services/Atomic Broadcast) - это второй протокол, используемый в VCS для внутреннего взаимодействия. Он, как и LLT, ответственен за две задачи. Первая - это членство узлов в кластере. GAB получает через LLT heartbeat от каждого узла. Если система долго не получает отклика от узла, то она маркирует его состояние как DOWN - нерабочий.

Вторая функция GAB - обеспечение надежного межкластерного взаимодействия. GAB предоставляет гарантированную доставку бродкастов и сообщений «точка-точка» между всеми узлами.

Управляющая составляющая VCS - VCS engine, или HAD (High Availability daemon), работающая на каждой системе. Она отвечает за:

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

HAD использует агенты для мониторинга и управления ресурсами. Информация о состоянии ресурсов собирается от агентов на локальных системах и передается всем членам кластера. HAD каждого узла получает информацию от других узлов, обновляя свою собственную картину всей системы. HAD действует как машина репликации состояния (replicated state machine RSM), т. е. ядро на каждом узле имеет полностью синхронизированную со всеми остальными узлами картину состояния ресурсов.

Кластер VSC управляется либо через Java-консоль, либо через Web.

Что лучше

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

В заключение хотелось бы привести еще один аргумент в пользу применения SC в среде Solaris. Используя и оборудование, и ПО от единого производителя - Sun Microsystems, заказчик получает сервис в «едином окне» на все решение. Несмотря на то что вендоры сейчас создают общие центры компетенции, время на трансляцию запросов между производителями ПО и оборудования снизит скорость отклика на инцидент, что не всегда устраивает пользователя системы.

Территориально распределенный кластер

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

Репликация данных с основной площадки на резервную чаще всего выполняется при помощи одного из популярных пакетов: Veritas Volume Replicator, EMC SRDF, Hitachi TrueCopy, Sun StorageTek Availability Suite.

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

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

Испытание системы до катастрофы

Согласно результатам проведенного компанией Symantec исследования, испытание плана аварийного восстановления проводит только 28% компаний. К сожалению, большинство заказчиков, с которыми автору приходилось беседовать по этому вопросу, вообще не имели такого плана. Причины, по которым не проводится тестирование, - отсутствие времени у администраторов, нежелание делать это на «живой» системе и отсутствие тестового оборудования.

Для испытаний можно привлечь симулятор, входящий в пакет VSC. Пользователи, выбравшие в качестве кластерного ПО VCS, могут провести испытания своих настроек на Cluster Server Simulator, который позволит на ПК проверить стратегию миграции приложений между узлами.

Заключение

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

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

Материал из Википедии - свободной энциклопедии

Кластеры распределения нагрузки (Network Load Balancing, NLB)

Принцип их действия строится на распределении запросов через один или несколько входных узлов, которые перенаправляют их на обработку в остальные, вычислительные узлы. Первоначальная цель такого кластера - производительность, однако, в них часто используются также и методы, повышающие надёжность. Подобные конструкции называются серверными фермами . Программное обеспечение (ПО) может быть как коммерческим (OpenVMS , MOSIX , Platform LSF HPC, Solaris Cluster , Moab Cluster Suite, Maui Cluster Scheduler), так и бесплатным (OpenMosix , Sun Grid Engine , Linux Virtual Server).

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

Кластеры используются в вычислительных целях, в частности в научных исследованиях. Для вычислительных кластеров существенными показателями являются высокая производительность процессора в операциях над числами с плавающей точкой (flops) и низкая латентность объединяющей сети, и менее существенными - скорость операций ввода-вывода, которая в большей степени важна для баз данных и web-сервисов . Вычислительные кластеры позволяют уменьшить время расчетов, по сравнению с одиночным компьютером, разбивая задание на параллельно выполняющиеся ветки, которые обмениваются данными по связывающей сети. Одна из типичных конфигураций - набор компьютеров, собранных из общедоступных компонентов, с установленной на них операционной системой Linux, и связанных сетью Ethernet , Myrinet , InfiniBand или другими относительно недорогими сетями. Такую систему принято называть кластером Beowulf . Специально выделяют высокопроизводительные кластеры (Обозначаются англ. аббревиатурой HPC Cluster - High-performance computing cluster ). Список самых мощных высокопроизводительных компьютеров (также может обозначаться англ. аббревиатурой HPC ) можно найти в мировом рейтинге TOP500 . В России ведется рейтинг самых мощных компьютеров СНГ.

Системы распределенных вычислений (grid)

Такие системы не принято считать кластерами, но их принципы в значительной степени сходны с кластерной технологией. Их также называют grid-системами . Главное отличие - низкая доступность каждого узла, то есть невозможность гарантировать его работу в заданный момент времени (узлы подключаются и отключаются в процессе работы), поэтому задача должна быть разбита на ряд независимых друг от друга процессов. Такая система, в отличие от кластеров, не похожа на единый компьютер, а служит упрощённым средством распределения вычислений. Нестабильность конфигурации, в таком случае, компенсируется больши́м числом узлов.

Кластер серверов, организуемых программно

Кластерные системы занимают достойное место в списке самых быстрых, при этом значительно выигрывая у суперкомпьютеров в цене. На июль 2008 года на 7 месте рейтинга TOP500 находится кластер SGI Altix ICE 8200 (Chippewa Falls , Висконсин , США).

Сравнительно дешёвую альтернативу суперкомпьютерам представляют кластеры, основанные на концепции Beowulf , которые строятся из обыкновенных недорогих компьютеров на основе бесплатного программного обеспечения. Один из практических примеров такой системы - Stone Soupercomputer в Национальной лаборатории Ок-Ридж (Теннесси , США, 1997).

Крупнейший кластер, принадлежащий частному лицу (из 1000 процессоров), был построен Джоном Коза (John Koza).

История

История создания кластеров неразрывно связана с ранними разработками в области компьютерных сетей. Одной из причин для появления скоростной связи между компьютерами стали надежды на объединение вычислительных ресурсов. В начале 1970-х годов группой разработчиков протокола TCP/IP и лабораторией Xerox PARC были закреплены стандарты сетевого взаимодействия. Появилась и операционная система Hydra для компьютеров PDP-11 производства DEC , созданный на этой основе кластер был назван C.mpp (Питтсбург , штат Пенсильвания , США, 1971 год). Тем не менее, только около 1983 года были созданы механизмы, позволяющие с лёгкостью пользоваться распределением задач и файлов через сеть, по большей части это были разработки в SunOS (операционной системе на основе BSD от компании Sun Microsystems).

Первым коммерческим проектом кластера стал ARCNet , созданный компанией Datapoint в 1977 году. Прибыльным он не стал, и поэтому строительство кластеров не развивалось до 1984 года, когда DEC построила свой VAXcluster на основе операционной системы VAX/VMS . ARCNet и VAXcluster были рассчитаны не только на совместные вычисления, но и совместное использование файловой системы и периферии с учётом сохранения целостности и однозначности данных. VAXCluster (называемый теперь VMSCluster) - является неотъемлемой компонентой операционной системы OpenVMS , использующих процессоры DEC Alpha и Itanium .

Два других ранних кластерных продукта, получивших признание, включают Tandem Hymalaya (1994, класс ) и IBM S/390 Parallel Sysplex (1994).

История создания кластеров из обыкновенных персональных компьютеров во многом обязана проекту Parallel Virtual Machine . В 1989 году это программное обеспечение для объединения компьютеров в виртуальный суперкомпьютер открыло возможность мгновенного создания кластеров. В результате суммарная производительность всех созданных тогда дешёвых кластеров обогнала по производительности сумму мощностей «серьёзных» коммерческих систем.

Создание кластеров на основе дешёвых персональных компьютеров, объединённых сетью передачи данных, продолжилось в 1993 году силами Американского аэрокосмического агентства NASA , затем в 1995 году получили развитие кластеры Beowulf , специально разработанные на основе этого принципа. Успехи таких систем подтолкнули развитие grid-сетей , которые существовали ещё с момента создания UNIX .

Программные средства

Широко распространённым средством для организации межсерверного взаимодействия является библиотека MPI , поддерживающая языки и Fortran . Она используется, например, в программе моделирования погоды .

Операционная система Solaris предоставляет программное обеспечение Solaris Cluster , которое служит для обеспечения высокой доступности и безотказности серверов, работающих под управлением Solaris. Для OpenSolaris существует реализация с открытым кодом под названием OpenSolaris HA Cluster .

Среди пользователей GNU/Linux популярны несколько программ:

  • distcc , MPICH и др. - специализированные средства для распараллеливания работы программ. distcc допускает параллельную компиляцию в GNU Compiler Collection .
  • Linux Virtual Server , Linux-HA - узловое ПО для распределения запросов между вычислительными серверами.
  • MOSIX , openMosix , Kerrighed , OpenSSI - полнофункциональные кластерные среды, встроенные в ядро, автоматически распределяющие задачи между однородными узлами. OpenSSI, openMosix и Kerrighed создают между узлами.

Кластерные механизмы планируется встроить и в ядро DragonFly BSD , ответвившуюся в 2003 году от FreeBSD 4.8. В дальних планах также превращение её в среду единой операционной системы .

Компанией Microsoft выпускается HA-кластер для операционной системы Windows . Существует мнение, что он создан на основе технологии Digital Equipment Corporation , поддерживает до 16 (с 2010 года) узлов в кластере, а также работу в сети SAN (Storage Area Network). Набор API-интерфейсов служит для поддержки распределяемых приложений, есть заготовки для работы с программами, не предусматривающими работы в кластере.

Windows Compute Cluster Server 2003 (CCS), выпущенный в июне 2006 года разработан для высокотехнологичных приложений, которые требуют кластерных вычислений. Издание разработано для развертывания на множестве компьютеров, которые собираются в кластер для достижения мощностей суперкомпьютера. Каждый кластер на Windows Compute Cluster Server состоит из одного или нескольких управляющих машин, распределяющих задания и нескольких подчиненных машин, выполняющих основную работу. В ноябре 2008 года представлен Windows HPC Server 2008, призванный заменить Windows Compute Cluster Server 2003.

Напишите отзыв о статье "Кластер (группа компьютеров)"

Примечания

См. также

Ссылки

Отрывок, характеризующий Кластер (группа компьютеров)

– Ну, бг"ат, тепег"ь поедем обсушимся, – сказал он Пете.
Подъезжая к лесной караулке, Денисов остановился, вглядываясь в лес. По лесу, между деревьев, большими легкими шагами шел на длинных ногах, с длинными мотающимися руками, человек в куртке, лаптях и казанской шляпе, с ружьем через плечо и топором за поясом. Увидав Денисова, человек этот поспешно швырнул что то в куст и, сняв с отвисшими полями мокрую шляпу, подошел к начальнику. Это был Тихон. Изрытое оспой и морщинами лицо его с маленькими узкими глазами сияло самодовольным весельем. Он, высоко подняв голову и как будто удерживаясь от смеха, уставился на Денисова.
– Ну где пг"опадал? – сказал Денисов.
– Где пропадал? За французами ходил, – смело и поспешно отвечал Тихон хриплым, но певучим басом.
– Зачем же ты днем полез? Скотина! Ну что ж, не взял?..
– Взять то взял, – сказал Тихон.
– Где ж он?
– Да я его взял сперва наперво на зорьке еще, – продолжал Тихон, переставляя пошире плоские, вывернутые в лаптях ноги, – да и свел в лес. Вижу, не ладен. Думаю, дай схожу, другого поаккуратнее какого возьму.
– Ишь, шельма, так и есть, – сказал Денисов эсаулу. – Зачем же ты этого не пг"ивел?
– Да что ж его водить то, – сердито и поспешно перебил Тихон, – не гожающий. Разве я не знаю, каких вам надо?
– Эка бестия!.. Ну?..
– Пошел за другим, – продолжал Тихон, – подполоз я таким манером в лес, да и лег. – Тихон неожиданно и гибко лег на брюхо, представляя в лицах, как он это сделал. – Один и навернись, – продолжал он. – Я его таким манером и сграбь. – Тихон быстро, легко вскочил. – Пойдем, говорю, к полковнику. Как загалдит. А их тут четверо. Бросились на меня с шпажками. Я на них таким манером топором: что вы, мол, Христос с вами, – вскрикнул Тихон, размахнув руками и грозно хмурясь, выставляя грудь.
– То то мы с горы видели, как ты стречка задавал через лужи то, – сказал эсаул, суживая свои блестящие глаза.
Пете очень хотелось смеяться, но он видел, что все удерживались от смеха. Он быстро переводил глаза с лица Тихона на лицо эсаула и Денисова, не понимая того, что все это значило.
– Ты дуг"ака то не представляй, – сказал Денисов, сердито покашливая. – Зачем пег"вого не пг"ивел?
Тихон стал чесать одной рукой спину, другой голову, и вдруг вся рожа его растянулась в сияющую глупую улыбку, открывшую недостаток зуба (за что он и прозван Щербатый). Денисов улыбнулся, и Петя залился веселым смехом, к которому присоединился и сам Тихон.
– Да что, совсем несправный, – сказал Тихон. – Одежонка плохенькая на нем, куда же его водить то. Да и грубиян, ваше благородие. Как же, говорит, я сам анаральский сын, не пойду, говорит.
– Экая скотина! – сказал Денисов. – Мне расспросить надо…
– Да я его спрашивал, – сказал Тихон. – Он говорит: плохо зн аком. Наших, говорит, и много, да всё плохие; только, говорит, одна названия. Ахнете, говорит, хорошенько, всех заберете, – заключил Тихон, весело и решительно взглянув в глаза Денисова.
– Вот я те всыплю сотню гог"ячих, ты и будешь дуг"ака то ког"чить, – сказал Денисов строго.
– Да что же серчать то, – сказал Тихон, – что ж, я не видал французов ваших? Вот дай позатемняет, я табе каких хошь, хоть троих приведу.
– Ну, поедем, – сказал Денисов, и до самой караулки он ехал, сердито нахмурившись и молча.
Тихон зашел сзади, и Петя слышал, как смеялись с ним и над ним казаки о каких то сапогах, которые он бросил в куст.
Когда прошел тот овладевший им смех при словах и улыбке Тихона, и Петя понял на мгновенье, что Тихон этот убил человека, ему сделалось неловко. Он оглянулся на пленного барабанщика, и что то кольнуло его в сердце. Но эта неловкость продолжалась только одно мгновенье. Он почувствовал необходимость повыше поднять голову, подбодриться и расспросить эсаула с значительным видом о завтрашнем предприятии, с тем чтобы не быть недостойным того общества, в котором он находился.
Посланный офицер встретил Денисова на дороге с известием, что Долохов сам сейчас приедет и что с его стороны все благополучно.
Денисов вдруг повеселел и подозвал к себе Петю.
– Ну, г"асскажи ты мне пг"о себя, – сказал он.

Петя при выезде из Москвы, оставив своих родных, присоединился к своему полку и скоро после этого был взят ординарцем к генералу, командовавшему большим отрядом. Со времени своего производства в офицеры, и в особенности с поступления в действующую армию, где он участвовал в Вяземском сражении, Петя находился в постоянно счастливо возбужденном состоянии радости на то, что он большой, и в постоянно восторженной поспешности не пропустить какого нибудь случая настоящего геройства. Он был очень счастлив тем, что он видел и испытал в армии, но вместе с тем ему все казалось, что там, где его нет, там то теперь и совершается самое настоящее, геройское. И он торопился поспеть туда, где его не было.
Когда 21 го октября его генерал выразил желание послать кого нибудь в отряд Денисова, Петя так жалостно просил, чтобы послать его, что генерал не мог отказать. Но, отправляя его, генерал, поминая безумный поступок Пети в Вяземском сражении, где Петя, вместо того чтобы ехать дорогой туда, куда он был послан, поскакал в цепь под огонь французов и выстрелил там два раза из своего пистолета, – отправляя его, генерал именно запретил Пете участвовать в каких бы то ни было действиях Денисова. От этого то Петя покраснел и смешался, когда Денисов спросил, можно ли ему остаться. До выезда на опушку леса Петя считал, что ему надобно, строго исполняя свой долг, сейчас же вернуться. Но когда он увидал французов, увидал Тихона, узнал, что в ночь непременно атакуют, он, с быстротою переходов молодых людей от одного взгляда к другому, решил сам с собою, что генерал его, которого он до сих пор очень уважал, – дрянь, немец, что Денисов герой, и эсаул герой, и что Тихон герой, и что ему было бы стыдно уехать от них в трудную минуту.
Уже смеркалось, когда Денисов с Петей и эсаулом подъехали к караулке. В полутьме виднелись лошади в седлах, казаки, гусары, прилаживавшие шалашики на поляне и (чтобы не видели дыма французы) разводившие красневший огонь в лесном овраге. В сенях маленькой избушки казак, засучив рукава, рубил баранину. В самой избе были три офицера из партии Денисова, устроивавшие стол из двери. Петя снял, отдав сушить, свое мокрое платье и тотчас принялся содействовать офицерам в устройстве обеденного стола.
Через десять минут был готов стол, покрытый салфеткой. На столе была водка, ром в фляжке, белый хлеб и жареная баранина с солью.
Сидя вместе с офицерами за столом и разрывая руками, по которым текло сало, жирную душистую баранину, Петя находился в восторженном детском состоянии нежной любви ко всем людям и вследствие того уверенности в такой же любви к себе других людей.
– Так что же вы думаете, Василий Федорович, – обратился он к Денисову, – ничего, что я с вами останусь на денек? – И, не дожидаясь ответа, он сам отвечал себе: – Ведь мне велено узнать, ну вот я и узнаю… Только вы меня пустите в самую… в главную. Мне не нужно наград… А мне хочется… – Петя стиснул зубы и оглянулся, подергивая кверху поднятой головой и размахивая рукой.
– В самую главную… – повторил Денисов, улыбаясь.
– Только уж, пожалуйста, мне дайте команду совсем, чтобы я командовал, – продолжал Петя, – ну что вам стоит? Ах, вам ножик? – обратился он к офицеру, хотевшему отрезать баранины. И он подал свой складной ножик.
Офицер похвалил ножик.
– Возьмите, пожалуйста, себе. У меня много таких… – покраснев, сказал Петя. – Батюшки! Я и забыл совсем, – вдруг вскрикнул он. – У меня изюм чудесный, знаете, такой, без косточек. У нас маркитант новый – и такие прекрасные вещи. Я купил десять фунтов. Я привык что нибудь сладкое. Хотите?.. – И Петя побежал в сени к своему казаку, принес торбы, в которых было фунтов пять изюму. – Кушайте, господа, кушайте.
– А то не нужно ли вам кофейник? – обратился он к эсаулу. – Я у нашего маркитанта купил, чудесный! У него прекрасные вещи. И он честный очень. Это главное. Я вам пришлю непременно. А может быть еще, у вас вышли, обились кремни, – ведь это бывает. Я взял с собою, у меня вот тут… – он показал на торбы, – сто кремней. Я очень дешево купил. Возьмите, пожалуйста, сколько нужно, а то и все… – И вдруг, испугавшись, не заврался ли он, Петя остановился и покраснел.
Он стал вспоминать, не сделал ли он еще каких нибудь глупостей. И, перебирая воспоминания нынешнего дня, воспоминание о французе барабанщике представилось ему. «Нам то отлично, а ему каково? Куда его дели? Покормили ли его? Не обидели ли?» – подумал он. Но заметив, что он заврался о кремнях, он теперь боялся.
«Спросить бы можно, – думал он, – да скажут: сам мальчик и мальчика пожалел. Я им покажу завтра, какой я мальчик! Стыдно будет, если я спрошу? – думал Петя. – Ну, да все равно!» – и тотчас же, покраснев и испуганно глядя на офицеров, не будет ли в их лицах насмешки, он сказал:
– А можно позвать этого мальчика, что взяли в плен? дать ему чего нибудь поесть… может…
– Да, жалкий мальчишка, – сказал Денисов, видимо, не найдя ничего стыдного в этом напоминании. – Позвать его сюда. Vincent Bosse его зовут. Позвать.
– Я позову, – сказал Петя.
– Позови, позови. Жалкий мальчишка, – повторил Денисов.
Петя стоял у двери, когда Денисов сказал это. Петя пролез между офицерами и близко подошел к Денисову.
– Позвольте вас поцеловать, голубчик, – сказал он. – Ах, как отлично! как хорошо! – И, поцеловав Денисова, он побежал на двор.
– Bosse! Vincent! – прокричал Петя, остановясь у двери.
– Вам кого, сударь, надо? – сказал голос из темноты. Петя отвечал, что того мальчика француза, которого взяли нынче.
– А! Весеннего? – сказал казак.
Имя его Vincent уже переделали: казаки – в Весеннего, а мужики и солдаты – в Висеню. В обеих переделках это напоминание о весне сходилось с представлением о молоденьком мальчике.
– Он там у костра грелся. Эй, Висеня! Висеня! Весенний! – послышались в темноте передающиеся голоса и смех.
– А мальчонок шустрый, – сказал гусар, стоявший подле Пети. – Мы его покормили давеча. Страсть голодный был!
В темноте послышались шаги и, шлепая босыми ногами по грязи, барабанщик подошел к двери.
– Ah, c"est vous! – сказал Петя. – Voulez vous manger? N"ayez pas peur, on ne vous fera pas de mal, – прибавил он, робко и ласково дотрогиваясь до его руки. – Entrez, entrez. [Ах, это вы! Хотите есть? Не бойтесь, вам ничего не сделают. Войдите, войдите.]
– Merci, monsieur, [Благодарю, господин.] – отвечал барабанщик дрожащим, почти детским голосом и стал обтирать о порог свои грязные ноги. Пете многое хотелось сказать барабанщику, но он не смел. Он, переминаясь, стоял подле него в сенях. Потом в темноте взял его за руку и пожал ее.
– Entrez, entrez, – повторил он только нежным шепотом.
«Ах, что бы мне ему сделать!» – проговорил сам с собою Петя и, отворив дверь, пропустил мимо себя мальчика.
Когда барабанщик вошел в избушку, Петя сел подальше от него, считая для себя унизительным обращать на него внимание. Он только ощупывал в кармане деньги и был в сомненье, не стыдно ли будет дать их барабанщику.

От барабанщика, которому по приказанию Денисова дали водки, баранины и которого Денисов велел одеть в русский кафтан, с тем, чтобы, не отсылая с пленными, оставить его при партии, внимание Пети было отвлечено приездом Долохова. Петя в армии слышал много рассказов про необычайные храбрость и жестокость Долохова с французами, и потому с тех пор, как Долохов вошел в избу, Петя, не спуская глаз, смотрел на него и все больше подбадривался, подергивая поднятой головой, с тем чтобы не быть недостойным даже и такого общества, как Долохов.
Наружность Долохова странно поразила Петю своей простотой.
Денисов одевался в чекмень, носил бороду и на груди образ Николая чудотворца и в манере говорить, во всех приемах выказывал особенность своего положения. Долохов же, напротив, прежде, в Москве, носивший персидский костюм, теперь имел вид самого чопорного гвардейского офицера. Лицо его было чисто выбрито, одет он был в гвардейский ваточный сюртук с Георгием в петлице и в прямо надетой простой фуражке. Он снял в углу мокрую бурку и, подойдя к Денисову, не здороваясь ни с кем, тотчас же стал расспрашивать о деле. Денисов рассказывал ему про замыслы, которые имели на их транспорт большие отряды, и про присылку Пети, и про то, как он отвечал обоим генералам. Потом Денисов рассказал все, что он знал про положение французского отряда.
– Это так, но надо знать, какие и сколько войск, – сказал Долохов, – надо будет съездить. Не зная верно, сколько их, пускаться в дело нельзя. Я люблю аккуратно дело делать. Вот, не хочет ли кто из господ съездить со мной в их лагерь. У меня мундиры с собою.
– Я, я… я поеду с вами! – вскрикнул Петя.
– Совсем и тебе не нужно ездить, – сказал Денисов, обращаясь к Долохову, – а уж его я ни за что не пущу.
– Вот прекрасно! – вскрикнул Петя, – отчего же мне не ехать?..
– Да оттого, что незачем.
– Ну, уж вы меня извините, потому что… потому что… я поеду, вот и все. Вы возьмете меня? – обратился он к Долохову.
– Отчего ж… – рассеянно отвечал Долохов, вглядываясь в лицо французского барабанщика.
– Давно у тебя молодчик этот? – спросил он у Денисова.
– Нынче взяли, да ничего не знает. Я оставил его пг"и себе.
– Ну, а остальных ты куда деваешь? – сказал Долохов.
– Как куда? Отсылаю под г"асписки! – вдруг покраснев, вскрикнул Денисов. – И смело скажу, что на моей совести нет ни одного человека. Разве тебе тг"удно отослать тг"идцать ли, тг"иста ли человек под конвоем в гог"од, чем маг"ать, я пг"ямо скажу, честь солдата.
– Вот молоденькому графчику в шестнадцать лет говорить эти любезности прилично, – с холодной усмешкой сказал Долохов, – а тебе то уж это оставить пора.
– Что ж, я ничего не говорю, я только говорю, что я непременно поеду с вами, – робко сказал Петя.
– А нам с тобой пора, брат, бросить эти любезности, – продолжал Долохов, как будто он находил особенное удовольствие говорить об этом предмете, раздражавшем Денисова. – Ну этого ты зачем взял к себе? – сказал он, покачивая головой. – Затем, что тебе его жалко? Ведь мы знаем эти твои расписки. Ты пошлешь их сто человек, а придут тридцать. Помрут с голоду или побьют. Так не все ли равно их и не брать?

Кластерные технологии стали логическим продолжением развития идей, заложенных в архитектуре MPP систем. Если процессорный модуль в MPP системе представляет собой законченную вычислительную систему, то следующий шаг напрашивается сам собой: почему бы в качестве таких вычислительных узлов не использовать обычные серийно выпускаемые компьютеры. Развитие коммуникационных технологий, а именно, появление высокоскоростного сетевого оборудования и специального программного обеспечения, такого как система MPI, реализующего механизм передачи сообщений над стандартными сетевыми протоколами, сделали кластерные технологии общедоступными. Сегодня не составляет большого труда создать небольшую кластерную систему, объединив вычислительные мощности компьютеров отдельной лаборатории или учебного класса.

Привлекательной чертой кластерных технологий является то, что они позволяют для достижения необходимой производительности объединять в единые вычислительные системы компьютеры самого разного типа, начиная от персональных компьютеров и заканчивая мощными суперкомпьютерами. Широкое распространение кластерные технологии получили как средство создания систем суперкомпьютерного класса из составных частей массового производства, что значительно удешевляет стоимость вычислительной системы. В частности, одним из первых был реализован проект COCOA, в котором на базе 25 двухпроцессорных персональных компьютеров общей стоимостью порядка $100000 была создана система с производительностью, эквивалентной 48-процессорному Cray T3D стоимостью несколько миллионов долларов США.

Конечно, о полной эквивалентности этих систем говорить не приходится. Как указывалось в предыдущем разделе, производительность систем с распределенной памятью очень сильно зависит от производительности коммуникационной среды. Коммуникационную среду можно достаточно полно охарактеризовать двумя параметрами: латентностью - временем задержки при посылке сообщения, и пропускной способностью - скоростью передачи информации. Так вот для компьютера Cray T3D эти параметры составляют соответственно 1 мкс и 480 Мб/сек, а для кластера, в котором в качестве коммуникационной среды использована сеть Fast Ethernet, 100 мкс и 10 Мб/сек. Это отчасти объясняет очень высокую стоимость суперкомпьютеров. При таких параметрах, как у рассматриваемого кластера, найдется не так много задач, которые могут эффективно решаться на достаточно большом числе процессоров.

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


Для создания кластеров обычно используются либо простые однопроцессорные персональные компьютеры, либо двух- или четырех- процессорные SMP-серверы. При этом не накладывается никаких ограничений на состав и архитектуру узлов. Каждый из узлов может функционировать под управлением своей собственной операционной системы. Чаще всего используются стандартные ОС: Linux, FreeBSD, Solaris, Tru64 Unix, Windows NT. В тех случаях, когда узлы кластера неоднородны, то говорят о гетерогенных кластерах.

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

Разработано множество технологий соединения компьютеров в кластер. Наиболее широко в данное время используется технология Fast Ethernet. Это обусловлено простотой ее использования и низкой стоимостью коммуникационного оборудования. Однако за это приходится расплачиваться заведомо недостаточной скоростью обменов. В самом деле, это оборудование обеспечивает максимальную скорость обмена между узлами 10 Мб/сек, тогда как скорость обмена с оперативной памятью составляет 250 Мб/сек и выше. Разработчики пакета подпрограмм ScaLAPACK, предназначенного для решения задач линейной алгебры на многопроцессорных системах, в которых велика доля коммуникационных операций, формулируют следующим образом требование к многопроцессорной системе: "Скорость межпроцессорных обменов между двумя узлами, измеренная в Мб/сек, должна быть не менее 1/10 пиковой производительности вычислительного узла, измеренной в Mflops"http://rsusu1.rnd.runnet.ru/tutor/method/m1/liter1.html - . Таким образом, если в качестве вычислительных узлов использовать компьютеры класса Pentium III 500 Мгц (пиковая производительность 500 Mflops), то аппаратура Fast Ethernet обеспечивает только 1/5 от требуемой скорости. Частично это положение может поправить переход на технологии Gigabit Ethernet.

Ряд фирм предлагают специализированные кластерные решения на основе более скоростных сетей, таких как SCI фирмы Scali Computer (~100 Мб/сек) и Mirynet (~120 Мб/сек). Активно включились в поддержку кластерных технологий и фирмы-производители высокопроизводительных рабочих станций (SUN, HP, Silicon Graphics).

Высокопроизводительный кластер (группа компьютеров)

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

Главные свойства кластеров

Кластеры состоят из нескольких компьютерных систем;

Они работают как одна вычислительная система (не все);

Кластер управляется и представляется пользователю как одна вычислительная система;

Зачем нужны кластеры

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

Какие бывают кластеры

Отказоустойчивые кластеры

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

Данные кластера могут быть построены по трём основным принципам

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

Кластер распределения нагрузки

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

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

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

Не забываем оставлять

Кластерные вычислительные системы стали продолжением развития идей, заложенных в архитектуре MPA-систем. Если в MPAсистеме в качестве законченного вычислительного узла выступает процессорный модуль, то в кластерных системах в качестве таких вычислительных узлов используют серийно выпускаемые компьютеры. Развитие коммуникационных технологий, а именно, появление высокоскоростного сетевого оборудования и специальных программных библиотек, например, MPI (Message Passing Interface), реализующих механизм передачи сообщений по стандартным сетевым протоколам, сделали кластерные технологии общедоступными. В настоящее время создается множество небольших кластерных систем посредством объединения вычислительных мощностей компьютеров лаборатории или учебного класса.

Привлекательной чертой кластерных технологий является то, что для достижения необходимой производительности они позволяют строить гетерогенные системы, т. е. объединять в единые вычислительные системы компьютеры самого разного типа, начиная от персональных компьютеров и заканчивая мощными суперкомпьютерами. Широкое распространение кластерные технологии получили как средство создания систем суперкомпьютерного класса из составных частей массового производства, что значительно удешевляет стоимость вычислительной системы. В частности, одним из первых в 1998 году был реализован проект The COst effective COmputing Array (COCOA), в котором на базе 25 двухпроцессорных персональных компьютеров общей стоимостью порядка 100000 долларов была создана система с производительностью, эквивалентной 48-процессорному Cray T3D стоимостью несколько миллионов долларов.

Лайал Лонг (Lyle Long), профессор аэрокосмической инженерии в университете штата Пенсильвания (Penn State University), считает, что относительно дешевые кластерные вычислительные системы вполне могут служить альтернативой дорогим суперкомпьютерам в научных организациях. Под его руководством в университете был построен кластер COCOA. В рамках данного проекта объединены 25 ра-

бочих станций от DELL, каждая из которых включает два процессора Pentium II/400 МГц, 512 МБ оперативной памяти, 4-гигабайтный жесткий диск SCSI и сетевой адаптер Fast Ethernet. Для связи узлов используется 24-портовый коммутатор Baynetworks 450T с одним модулем расширения. Установленное программное обеспечение включает операционную систему RedHat Linux, компиляторы Fortran 90 и HPF от Portland Group, свободно распространяемую реализацию MPI - Message Passing Interface Chameleon (MPICH) и систему поддержки очередей DQS.

В работе, представленной на 38-й конференции Aerospace Science Meeting and Exhibit, Лонг описывает параллельную версию расчетной программы с автоматическим распределением вычислительной нагрузки, используемой для предсказания уровня шума от вертолетов в различных точках. Для сравнения данная расчетная программа была запущена на трех различных 48-процессорных компьютерах для расчета шума в 512 точках. На системе Cray T3E расчет занял 177 секунд, на системе SGI Origin2000 - 95 секунд, а на кластере COCOA - 127 секунд. Таким образом, кластеры являются очень эффективной вычислительной платформой для задач такого класса.

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

Конечно, о полной эквивалентности этих систем говорить не приходится. Как известно, производительность систем с распределенной памятью очень сильно зависит от производительности коммутационной среды, которую можно охарактеризовать двумя параметрами: латентностью - временем задержки при посылке сообщения, и пропускной способностью - скоростью передачи информации. Например, для компьютера Cray T3D эти параметры составляют соответственно 1 мкс и 480 Мб/с, а для кластера, в котором в качестве коммутационной среды использована сеть Fast Ethernet, - 100 мкс и 10 Мб/с. Это отчасти объясняет очень высокую стоимость суперкомпьютеров. При таких параметрах, как у рассматриваемого кластера, найдется не так много задач, которые могут эффективно решаться на достаточно большом числе процессоров.

На основе вышеизложенного дадим определение: кластер - это связанный набор полноценных компьютеров, используемый в качестве единого вычислительного ресурса. В качестве узлов кластеров могут использоваться как одинаковые (гомогенные кластеры), так и разные (гетерогенные кластеры) вычислительные машины. По своей архитектуре кластерная вычислительная система является слабосвязанной. Для создания кластеров обычно используются либо простые однопроцессорные персональные компьютеры, либо двухили четырехпроцессорные SMP-серверы. При этом не накладывается никаких ограничений на состав и архитектуру узлов. Каждый из узлов может функционировать под управлением своей собственной операционной системы. Чаще всего используются стандартные операционные системы Linux, FreeBSD, Solaris, Tru64 Unix, Windows NT.

В литературе отмечают четыре преимущества, достигаемые с помощью кластеризации вычислительной системы:

абсолютная масштабируемость;

наращиваемая масштабируемость;

высокий коэффициент готовности;

соотношение цена/производительность.

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

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

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

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

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

ночной вычислительной машины с эквивалентной вычислительной мощностью.

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

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

Классификация архитектур кластерных систем

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

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

Различие между представленными кластерами заключается в том, что в случае локальной сети узлы используют локальные дисковые массивы, а в случае выделенной линии узлы совместно используют один избыточный массив независимых жестких дисков или так называемый RAID (Redundant Array of Independent Disks). RAID состоит из нескольких дисков, управляемых контроллером, взаимосвязанных скоростными каналами и воспринимаемых внешней системой как единое целое. В зависимости от типа используемого массива могут обеспечиваться различные степени отказоустойчивости и быстродействия.

Процессор

Процессор

Высокоскоростная

Процессор

Процессор

магистраль

Устройство

Устройство

Устройство

Устройство

ввода/вывода

ввода/вывода

ввода/вывода

ввода/вывода

Дисковый

Дисковый

Рис. 5.5.1. Конфигурация кластера без совместно используемых дисков

Дисковый

Устройство

Устройство

Процессор

Процессор

ввода/вывода

ввода/вывода

Процессор

Процессор

Устройство

Устройство

Устройство

Устройство

ввода/вывода

ввода/вывода

ввода/вывода

ввода/вывода

Дисковый

Высокоскоростная

Дисковый

магистраль

Рис. 5.5.2. Конфигурация кластера с совместно используемыми дисками

Рассмотрим наиболее распространенные типы дисковых масси-

RAID0 (striping - чередование) - дисковый массив из двух или более жестких дисков с отсутствием резервирования. Информация разбивается на блоки данных и записывается на оба (несколько) дисков одновременно. Достоинство - существенное повышение производительности. Недостаток - надежность RAID0 заведомо ниже надежности любого из дисков в отдельности и снижается с увеличением количества входящих в RAID0 дисков, так как отказ любого из дисков приводит к неработоспособности всего массива.

RAID1 (mirroring - зеркалирование) - массив, состоящий как минимум из двух дисков. Достоинствами являются приемлемая скорость записи и выигрыш в скорости чтения при распараллеливании запросов, а также высокая надежность: работает до тех пор, пока функционирует хотя бы один диск в массиве. Вероятность выхода из строя сразу двух дисков равна произведению вероятностей отказа каждого диска. На практике при выходе из строя одного из дисков следует срочно принимать меры: вновь восстанавливать избыточность. Для этого с любым уровнем RAID (кроме нулевого) рекомендуют использовать диски горячего резерва. Достоинство такого подхода - поддержание постоянной доступности. Недостаток заключается в том, что приходится оплачивать стоимость двух жестких дисков, получая полезный объем одного жесткого диска.

RAID10 - зеркалированный массив, данные в котором записываются последовательно на несколько дисков, как в RAID0. Эта архитектура представляет собой массив типа RAID0, сегментами которого вместо отдельных дисков являются массивы RAID1. Соответственно, массив этого уровня должен содержать как минимум четыре диска. RAID10 сочетает высокую отказоустойчивость и производительность.

Более полное представление о кластерных вычислительных системах дает классификация кластеров по используемым методам кластеризации, которые определяют основные функциональные особенности системы:

кластеризация с пассивным резервированием;

кластеризация с активным резервированием;

самостоятельные серверы;

серверы с подключением ко всем дискам;

серверы с совместно используемыми дисками.

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

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

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

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

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

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

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

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

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

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

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

Разработчики пакета подпрограмм ScaLAPACK, предназначенного для решения задач линейной алгебры на многопроцессорных системах, в которых велика доля коммуникационных операций, формулируют требование к многопроцессорной системе следующим образом: «Скорость межпроцессорных обменов между двумя узлами, измеренная в МБ/с, должна быть не менее 1/10 пиковой производительности вычислительного узла, измеренной в MFLOPS».

Топологии кластеров

Рассмотрим топологии, характерные для так называемых «малых» кластеров, состоящих из двух - четырех узлов.

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

Четырехузловая кластерная пара представляет собой простое расширение двухузловой топологии. Обе кластерные пары с точки зрения администрирования и настройки рассматриваются как единое целое.

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

Коммутатор

кластера

кластера

кластера

кластера

Дисковый

Дисковый

Дисковый

Дисковый

Рис. 5.5.3. Топология кластерных пар

Топология + 1 позволяет создавать кластеры из двух, трех и четырех узлов (рис.5.5.4 ). Каждый дисковый массив подключается только к двум узлам кластера. Дисковые массивы организованы по схеме RAID1 (mirroring). Один сервер имеет соединение со всеми дисковыми массивами и служит в качестве резервного для всех остальных (основных или активных) узлов. Резервный сервер может использоваться для обеспечения высокой степени готовности в паре с любым из активных узлов.

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

Топология × аналогично топологии + 1 позволяет создавать кластеры из двух, трех и четырех узлов, но в отличие от нее обладает большей гибкостью и масштабируемостью (рис.5.5.5 ).

Коммутатор

кластера

кластера

кластера

кластера

Коммутатор

кластера

кластера

кластера

кластера

Коммутатор

Дисковый

Дисковый

Дисковый

Рис. 5.5.5. Топология ×

Только в этой топологии все узлы кластера имеют доступ ко всем дисковым массивам, которые, в свою очередь, строятся по схеме RAID1 (mirroring). Масштабируемость топологии проявляется в простоте добавления к кластеру дополнительных узлов и дисковых массивов без изменения соединений в системе.

кластера

кластера

кластера

кластера

Дисковый

Дисковый

Дисковый

Дисковый

Рис. 5.5.6. Топология с полностью раздельным доступом

Топология с полностью раздельным доступом допускает соединение каждого дискового массива только с одним узлом кластера (рис. 5.5.6 ). Рекомендуется лишь для тех приложений, для которых характерна архитектура полностью раздельного доступа.

Контрольные вопросы

1. Дайте определение кластерной вычислительной системы.

2. Назовите основные достоинства и недостатки кластерных вычислительных систем.

3. Какие классификации кластерных вычислительных систем вы

4. Какие топологии кластерных систем вам известны? Назовите их достоинства и недостатки.

Литература

1. Архитектуры и топологии многопроцессорных вычислительных систем / А.В. Богданов, В.В. Корхов, В.В. Мареев, Е.Н. Станкова . - М.: ИНТУИТ.РУ, 2004. - 176 с.

2. Микропроцессорные системы: учеб. пособие для вузов /

Е.К. Александров, Р.И. Грушвицкий, М.С. Куприянов и др.; под ред. Д.В. Пузанкова. - СПб.: Политехника, 2002. - 935 с.