Телевизоры. Приставки. Проекторы и аксессуары. Технологии. Цифровое ТВ

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

  • 2. Арифметико–логические устройства. Структура, подход к проектированию, основные уравнения работы алу
  • 3. Организация цепей переноса в пределах секции алу. Наращивание разрядности, схема ускоренного переноса
  • 4. Регистровое алу – базовая структура микропроцессора. Варианты построения регистровых структур. Задача управления и синхронизации
  • 7. Устройство микропрограммного управления. Структура, способы формирования управляющих сигналов, адресация микрокоманд
  • 8. Система команд и способы адресации операндов. Конвейерный принцип выполнения команд
  • 9. Структурные конфликты и способы их минимизации. Конфликты по данным, остановы конвейера и реализация механизма обходов
  • 10. Сокращение потерь на выполнение команд перехода и минимизация конфликтов по управлению
  • 11. Классификация систем памяти. Организация систем памяти в микропроцессорных системах
  • 12. Принципы организации кэш-памяти. Способы отображения данных из озу в кэш-память
  • 13. Режимы прямого доступа к памяти. Структуры контроллеров пдп
  • 14. Принципы функционирования виртуальной памяти
  • 15. Типовые структуры и принципы функционирования микропроцессорных систем
  • 16. Основные режимы функционирования микропроцессорной системы. Выполнение основной программы, вызов подпрограмм
  • 17. Основные режимы функционирования микропроцессорной системы. Обработка прерываний и исключений
  • 18. Системы с циклическим опросом. Блок приоритетных прерываний
  • 19. Обмен информацией между элементами в микропроцессорных системах. Арбитр магистрали
  • Часть 2
  • 20. Классификация архитектур современных микропроцессоров. Архитектуры с полным и сокращенным набором команд, суперскалярная архитектура
  • 21. Классификация архитектур современных микропроцессоров. Принстонская (Фон-Неймана) и гарвардская архитектуры
  • 22. Структура современных 8-разрядных микроконтроллеров сRisc-архитектурой
  • 22(?). Структура современных 32-разрядных микроконтроллеров сRisc-архитектурой
  • 23. Процессоры цифровой обработки сигналов: принципы организации, обобщенная структура
  • 24. Процессоры общего назначения на примере архитектурыIntelP6
  • 25. Классификация архитектур параллельных вычислительных систем. Системы с разделяемой общей памятью
  • 26. Классификация архитектур параллельных вычислительных систем. Системы с распределенной памятью
  • 27. Векторно-конвейерные вычислительные системы. Память с расслоением. Особенности структуры системыCray-1
  • 28. Матричные вычислительные системы. Особенности построения систем памяти и коммутаторов
  • 29. Машины, управляемые потоком данных. Принципы действия и особенности их построения. Графический метод представления программ
  • 30. Системы с программируемой структурой. Однородные вычислительные среды
  • 31. Систолические вычислительные системы
  • 32. Кластерные вычислительные системы: определение, классификация, топологии
  • 32. Кластерные вычислительные системы: определение, классификация, топологии

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

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

    На аппаратном уровне кластер - совокупность независимых вычислительных систем, объединенных сетью.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Топология N + 1:

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

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

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

    Топология N ×N :

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

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

    Принцип их действия строится на распределении запросов через один или несколько входных узлов, которые перенаправляют их на обработку в остальные, вычислительные узлы. Первоначальная цель такого кластера - производительность, однако, в них часто используются также и методы, повышающие надёжность. Подобные конструкции называются серверными фермами . Программное обеспечение (ПО) может быть как коммерческим (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 , специально разработанные на основе этого принципа. Успехи таких систем подтолкнули развитие

    Кластерные вычислительные системы стали продолжением развития идей, заложенных в архитектуре 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 с.

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

    Что такое кластер?

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

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

    Разделение на High Avalibility и High Performance системы

    В функциональной классификации кластеры можно разделить на "Высокоскоростные" (High Performance, HP), "Системы Высокой Готовности" (High Availability, HA), а также "Смешанные Системы".
    Высокоскоростные кластеры используются для задач, которые требуют значительной вычислительной мощности. Классическими областями, в которых используются подобные системы, являются:
    · обработка изображений: рендеринг, распознавание образов
    · научные исследования: физика, биоинформатика, биохимия, биофизика
    · промышленность (геоинформационные задачи, математическое моделирование)
    и много других…
    Кластеры, которые относятся к системам высокой готовности, используются везде, где стоимость возможного простоя превышает стоимость затрат, необходимых для построения кластерной системы, например:
    · биллинговые системы
    · банковские операции
    · электронная коммерция
    · управление предприятием, и т.п....
    Смешанные системы объединяют в себе особенности как первых, так и вторых. Позиционируя их, следует отметить, что кластер, который обладает параметрами как High Performance, так и High Availability, обязательно проиграет в быстродействии системе, ориентированной на высокоскоростные вычисления, и в возможном времени простоя системе, ориентированной на работу в режиме высокой готовности.

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

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

    Как устроен кластер
    Кластер представляет собой несколько компьютеров, называемых узлами, на которых работает операционная система на базе UNIX или Windows. Эти серверы по отношению к остальной части сети выступают в роли единого объекта: мощного "виртуального" сервера. Клиенты подключаются к кластеру, не зная о том, какой именно компьютер будет на самом деле заниматься их обслуживанием. Бесперебойность доступа, обеспечиваемая кластерами, достигается за счет своевременного выявления нарушений в работе аппаратных и программных средств и автоматического переноса процессов обработки данных на исправный узел. В стандартном кластере каждый узел отвечает за размещение у себя определенного числа ресурсов. В случае отказа узла или ресурсов система передает часть ресурсов на другой узел и обеспечивает их доступность клиентам.

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

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

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

    Сегодня недорогой кластер из компонентов, находящихся в массовом производстве, может собрать практически любая уважающая себя компьютерная фирма, а с выходом такой кластерной ОС, как Windows Computing Cluster Server 2003, допускающей довольно простую инсталляцию, кластерные решения начального уровня становятся доступными малому и среднему бизнесу. И, пожалуй, не покажется необоснованным предположение, что перманентное снижение цен на аппаратные и программные компоненты и скоростные сетевые технологии вскоре сделают кластеры начального уровня привычным элементом ИС любого масштаба.

    Поэтому в Тему недели, посвященную кластерным вычислениям, мы постарались включить не только обзорную часть, но и статьи о конкретных и, несомненно, востребованных в ближайшем будущем украинским бизнесом продуктах. В частности, читатель найдет здесь и практическое занятие, выполненное в нашей Тестовой лаборатории, и описание кластерных ОС Windows Computing Cluster Server 2003/2008, которые имеют все шансы стать популярными.

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

    Классификация

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

    Кластеры высокой готовности (High Availability, HA) . Иногда их еще называют отказоустойчивыми. Такие кластеры проектируются для обеспечения конечным пользователям бесперебойного доступа к данным или сервисам (в типичном случае - веб-сервисам). Как правило, один экземпляр приложения работает на одном узле, а когда тот становится недоступным, то управление им перехватывается другим узлом (рис. 1). Подобная архитектура позволяет также проводить ремонт и профилактические работы, не останавливая сервисы. Вдобавок, если один узел выходит из строя, сервис может быть восстановлен без ущерба для доступности остальных. Правда, производительность системы понизится.

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

    Кластеры балансировки нагрузки (Load Balancing) . Этот тип кластеров распределяет входящие запросы между множеством узлов, на которых работают одинаковые программы или размещен один и тот же контент (рис. 2). Каждый узел способен обрабатывать запросы к одному и тому же приложению или контенту. Если какой-нибудь из узлов выходит из строя, запросы перераспределяются среди оставшихся. В типичном случае такие кластеры используются для веб-хостинга.

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

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

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

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

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

    Узлы

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

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

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

    Программное обеспечение

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

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

    В приведенном определении кластера было упомянуто, что он виден администратору и пользователю как единая вычислительная система. Это достигается с помощью образа единой системы (Single System Image, SSI) . Именно он скрывает неоднородную и распределенную природу имеющихся ресурсов и представляет их пользователям и приложениям как единый вычислительный ресурс. SSI может быть реализован на одном или нескольких из следующих уровней: аппаратном, ОС, ПО промежуточного слоя или/и приложения. Вот пример нескольких ключевых сервисов, предоставляемых SSI кластера:

    • единая точка входа;
    • единый пользовательский интерфейс;
    • единое пространство процессов;
    • единое пространство памяти и ввода-вывода;
    • единая иерархия файлов;
    • единая точка контроля и управления.

    Такие системы, как Digital/Compaq Memory Channel и Distributed Shared Memory обеспечивают SSI на аппаратном уровне и позволяют пользователям видеть кластер как систему с разделяемой памятью. ОС SCO UnixWare NonStop Cluster, Sun Solaris-MC, GLUNIX и MOSIX поддерживают SSI на уровне ядра.

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

    Сетевое оборудование и протоколы

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

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

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

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

    Для кластерных коммуникаций применяются как традиционные сетевые протоколы, разработанные первоначально для Интернета (IP), так и созданные специально. Помимо этого, имеются два относительно новых стандарта, также специально предназначенных для кластеров. Мы не будем останавливаться на достаточно знакомом нашим читателям протоколе IP, равно как и на остальных, поскольку все они довольно специфичны. Перечислим лишь их названия, чтобы интересующиеся могли обратиться либо к литературе, либо к «всезнающему» Интернету. Это, в частности, протоколы Active Messages, Fast Messages, Virtual Memory-Mapped Communication system, U-net и Basic Interface for Parallelism. Обратимся к двум стандартам.

    К 1997 г. исследования в области протоколов с низкой латентностью продвинулись настолько, что в итоге привели к созданию нового стандарта для кластерных коммуникаций Virtual Interface Architecture (VIA). Одновременно индустрия работала над стандартами для разделяемых подсистем хранения. Результатом этих усилий явился InfiniBand.

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

    Хотя VIA может быть доступен прямо для прикладного программирования, многие разработчики систем считают, что это слишком низкий уровень для приложений, так как последние должны быть ответственными за распределение части физической памяти и следить за ее эффективным использованием. Предполагается, что большинство производителей ОС и ПО промежуточного слоя обеспечат интерфейс с VIA, который будет поддерживать прикладное программирование. Так, осенью 2000 г. большинство поставщиков баз данных предоставили версии своих продуктов, работающих поверх VIA. Быстро становится доступным и другое кластерное ПО, например файловые системы.

    Стандарт InfiniBand был поддержан консорциумом индустриальных партнеров, в том числе Compaq, Dell, HP, IBM, Intel, Microsoft и Sun Microsystems. Архитектура InfiniBand заменяет разделяемую шину, которая является стандартом для системы ввода-вывода в современных компьютерах, высокоскоростной последовательной, базированной на механизме каналов коммутационной фабрикой. Все системы и устройства подключаются к фабрике посредством канального адаптера хоста (Host Channel Adaptor, HCA), который обеспечивает соединение центрального процессора хоста со структурой InfiniBand, или канального адаптера целевого узла (Target Channel Adaptor, TCA), соединяющего InfiniBand с другими устройствами ввода-вывода типа Ethernet, Fibre Channel или с системами хранения данных. Канал InfiniBand дуплексный и работает с пропускной способностью 2,5 Гб/с в одном направлении в топологии «точка-точка». Данные посылаются пакетами, имеется шесть режимов передачи: надежное и ненадежное соединение, надежная и ненадежная дейтаграмма, многоадресная рассылка и необработанные пакеты («сырой» режим). Вдобавок InfiniBand поддерживает удаленный прямой доступ к памяти, который позволяет одному процессору читать или писать в память другого.

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

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

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

    Помимо этого, существуют гибридные системы, которые комбинируют особенности нескольких категорий, скажем, InfiniBand позволяет посылать как данные на диск, так и сообщения другим узлам. Аналогично Scalable Coherent Interface (SCI) может также использовать оба механизма обмена.

    Кластерные сети

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

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

    Giganet (cLAN) . Технология cLAN (collapsed LAN), сегодня принадлежащая компании Emulex, была разработана с целью аппаратной поддержки VIA. Это была первая в индустрии нативная аппаратная реализация стандарта VIA. Ключевые особенности сети следующие.

    На самом низком уровне коммуникационной модели находится некогерентная распределенная разделяемая память (Distributed Shared Memory, DSM). Часть виртуального адресного пространства приложения логически отображается поверх сети на физическую память в другом узле. Данные передаются между приложениями посредством записи в разделяемую область памяти с помощью стандартных инструкций записи процессора. Буфер в удаленном узле представляется посредством cookie Remote Direct Memory Access, узел-владелец которого получает право доступа к буферу.

    Myrinet . Эта дуплексная сеть поставляется компанией Myricom. Она широко используется во многих академических проектах, в частности в Berkeley Network of Workstations (NOW). Физически сеть состоит из двух оптоволоконных кабелей (для нисходящего и восходящего потоков), подключаемых к хосту через общий коннектор. Компьютеры объединяются с помощью маршрутизаторов или коммутаторов (их можно конфигурировать для получения избыточных путей). Поддерживается коммутация без буферизации пакетов (cut-through), которая позволяет передавать сообщения из конца в конец с минимальной задержкой. Myrinet имеет внутриплатный программируемый процессор - он дает возможность экспериментировать со многими коммуникационными протоколами.

    В Myrinet реализован ряд механизмов, обеспечивающих отказоустойчивость. К ним относятся управление потоком, контроль ошибок, проверка работоспособности каналов (heartbeat).

    Последняя версия, так называемая четвертая генерация Myrinet 10G, поддерживает скорость передачи данных 10 Гб/с в каждом из направлений и совместима с 10 GE на уровне PHY. Латентность сети очень низкая - всего 5 мкс.

    QsNet . Эта высокоскоростная с низкой латентностью сеть разработана компанией Quadrics Supercomputers World (QSW). Конструктивно QsNet включает две подсистемы:

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

    Сетевой интерфейс базируется на заказных микросхемах, именуемых Elan. Модификация Elan III объединяет выделенный процессор ввода-вывода для разгрузки ЦП, шину PCI (66 МГц, 64 бита), дуплексный канал (400 МГц, 8 бит), устройство управления памятью (MMU), кэш и интерфейс локальной памяти. Микросхема выполняет три типа базовых операций:

    • удаленные чтение и запись;
    • прямую передачу данных из пользовательского виртуального адресного пространства одного процессора другому без необходимости синхронизации;
    • управление протоколом.

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

    Модификация сети, выпущенная в 2003 г., основана на шине PCI-X 133 МГц и имеет латентность 1,22 мкс.

    Scalable Coherent Interface (SCI) . Это первая технология взаимосвязи, разработанная специально для кластерных вычислений, которая была доведена до уровня стандарта. Архитектура SCI базируется на соединениях «точка-точка», пакетах малого размера и расщепленных транзакциях. Стандарт IEEE 1596 был опубликован в 1992 г. и специфицировал физический уровень сети и выше для распределенной по сети разделяемой кэш-когерентной (опциональной) памяти. На более высоких уровнях стандарт описывает распределенную базированную на указателях схему когерентной кэш-памяти. Такая схема позволяет кэшировать удаленную SCI-память: всякий раз, когда данные, расположенные в удаленной памяти, модифицируются, все строки кэша на всех узлах, на которых они хранятся, становятся недействительными. Кэширование удаленной SCI-памяти увеличивает производительность и допускает непосредственное прозрачное программирование разделяемой памяти.

    Конечно, это далеко не все технологии, на основе которых можно построить довольно мощный кластер. В кластерах начального уровня, как правило, применяются неспециализированные решения, использующие традиционные сетевые технологии, такие как Ethernet, ATM или Fibre Channel.

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

    Базовый эскиз проекта ОС
    Userspace System Processes User Processes
    not using
    the middleware
    User Processes using the middleware
    Middleware
    System Services User Libraries
    Kernel Middleware-related Kernel Extentions
    Filesystems / Communication / Programmatic Interface
    Memory Manager Scheduler Drivers
    Hardware Abstraction Layer
    Hardware Resourses Timers & Interrupts
    RAM CPUs Disks Network Cluster Interconnect Others


    Похожие публикации