
- •Глава 11
- •В.Г.Олифер, н.А.Олифер. Сетевые операционные системы. Учебное пособие.-сПб.:бхв-Петербург, 2006.-536с.
- •В.А.Шеховцов. Операційні системи. Підручник .-к.:Виканавча група внv. 2005. 576с.
- •Столлингс в. Операционные системы. М.: Вильямс, 2001. -672с.
- •Раздел 11
- •11.1. Многопроцессорные системы
- •11.1.1. Типы многопроцессорных систем
- •11.1.2. Поддержка многопроцессорной в операционных системах
- •11.1.3. Производительность многопроцессорных систем
- •11.1.4. Планирование в многопроцессорных системах
- •11.1.5. Родство процессора
- •11.1.6. Поддержка многопроцессорности в Linux
- •11.1.7. Поддержка многопроцессорной в Windows xp
- •11.2. Принципы разработки распределенных систем
- •11.2.1. Отдалены вызовы процедур
- •11.2.2. Использование Sun rpc
- •11.2.3. Использование Microsoft rpc
- •11.2.4. Обработка ошибок и координация в распределенных системах
- •11.3. Распределеные файловые системы
- •11.3.1. Организация распределенных файловых систем
- •11.3.2. Файловая система nfs
- •11.3.3. Файловая система Microsoft dfs
- •11.4. Современные архитектуры распределенных систем
- •11.4.1. Кластерные системы
- •11.4.2. Grid-системы
- •Контрольные вопросы и задания
11.4. Современные архитектуры распределенных систем
В этом разделе речь пойдет о двух важнейших архитектурах распределенных систем: кластерной и вычислительной сети (grid-архитектура). Общим для них является то, что они дают возможность объединить вычислительные мощности многих компьютеров для решения разных задач.
11.4.1. Кластерные системы
Кластером (cluster) называют распределенную систему, которая состоит из набора взаимозависимых компьютеров, которые работают вместе как единный, интегрирован вычислительный ресурс.
Отдельные компьютеры в рамках кластера называют узлами (nodes). Узлы оснащены таким же аппаратным обеспечением, что и автономный компьютер (памятью, средствами ввода-вывода, в большинстве случаев — жестким диском), и могут быть использованы отдельно вне кластера. Они бывают однопроцесорными и многопроцессорными, на каждом из них выполняется отдельная копия операционной системы. Все узлы кластера в целом должны быть связаны высокопродуктивной сетью (для этого можно воспользоваться такими технологиями, как Fast Ethernet, Gigabit Ethernet и тому подобное).
Кластер должен отображаться пользователям как единственная система, которая владеет большей производительностью, чем отдельные его узлы. Это свойство называют свойством единственного образа системы (single system image).
Здесь кластер будем понимать как систему, которая состоит из небольшого количества узлов (от 2 до нескольких сотен), расположенных поблизости один от другого (часто в пределах одной комнаты) и соединенных локальной сетью. Для обозначения интегрированных содружеств компьютеров большего масштаба, соединенных глобальными сетями, употребляют термин grid-системы.
Кластерные технологии дают возможность повышать вычислительные возможности в результате использования стандартного и доступного по цене программного и аппаратного обеспечения. Масштабирование кластера (добавление у него вычислительных ресурсов) простое и не требует больших расходов: для добавления нового узла в кластер достаточно подключить к соответствующей сети подходящий по характеристикам компьютер и запустить на нем необходимое программное обеспечение.
Программные компоненты кластерных систем
Перечислим основные программные компоненты кластерных систем (рис. 11.3).
Рис. 11.3 Архитектура кластерной системы
-
На каждом узле кластера должна выполняться ОС, которая поддерживает многопотоковость, сетевые интерфейсы и протоколы (большинство кластеров реализуют связь между узлами на базе TCP/IP) и другие необходимы возможности.
-
Функционирования кластера обеспечивают промежуточным программным обеспечением (ППО) кластера (cluster middleware).
-
Вычислительные ресурсы кластера используют параллельные приложения. Код таких приложений разбит на ряд потоков или процессов, рассчитанных на параллельное выполнение на нескольких узлах кластера. Программное обеспечение кластера должно включать средства поддержки разработки таких приложений (компиляторы, библиотеки и тому подобное).
Кластер также может выполнять код обычных последовательных приложений, но их производительность при этом не будет выше производительности, достигнутой в случае выполнения на одном процессоре (по закону Амдала).
Классификация кластерных систем
Есть разные подходы к классификации кластерных систем. В первую очередь можно выделить категории таких систем, в зависимости от их назначения.
-
Вычислительные кластеры (High-Performance, HP) предназначены для выполнения параллельных программ, которые описывают решение сложных научных проблем (расшифровка генома, синтеза молекул и тому подобное). Много из них сегодня нуждаются в вычислительных мощностях, которых невозможно достичь в случае использования отдельных компьютеров. Фактически, такой кластер — это аналог многопроцессорного суперкомпьютера, но при этом стоит значительно более дешево. Большую часть научных вычислительных задач в наше время решают на таких кластерах.
-
Кластеры с выравниванием нагрузки (load balancing) дают возможность распределять процессорную или сетевую нагрузку поровну между узлами кластера. Выравнивание нагрузки нужно, если большое количество пользователей выполняет один и тот же набор применений или создает много сетевых соединений одного типу (например, в веб-сервер с высокой входной нагрузкой). Обычно за деление нагрузки отвечает отдельный сервер, который выполняется на одном из узлов.
-
Кластеры с резервированием (High Availability, НА) нужны для обеспечения повышенной надежности программного и аппаратного обеспечения компьютерных систем. Такие кластеры предоставляют возможность организовывать горячее резервирование отдельных компонентов или узлов системы. В случае выхода из строя одного из узлов обслуживания сразу продолжает другой узел, при этом для пользователя робота системы не нарушенная.
На практике часто можно встретить кластеры, которые совмещают свойства разных категорий. Да, вычислительные кластеры могут реализовывать базовые функции резервирования и выравнивания нагрузки.
Еще один вид классификации связан с контролем над узлами кластера.
-
Выделенный кластер (dedicated) предусматривает, что его узлы находятся под единственным контролем и могут быть использованы лишь в рамках кластера.
-
Невыделенный кластер (non-dedicated) состоит из узлов, которые принадлежат разным владельцам и преимущественно работают независимо. В этом случае в рамках кластера используют некоторую часть вычислительных ресурсов узла (например, процессорное время, не занятое выполнением собственных приложений).
Промежуточное программное обеспечение кластерных систем
ППО кластера обычно состоит из двух уровней поддержки кластерных операций.
-
Инфраструктура поддержки единственного образа системы (Single System Image Infrastructure, SSI) объединяет вместе операционные системы всех узлов для обеспечения унифицированного доступа к системным ресурсам.
-
Инфраструктура доступности системы (System Availability Infrastructure, SAI) обеспечивает возобновление системы после сбоя отдельных ее узлов .
Назовем некоторые характеристики кластерной системы, поддержку которых обеспечивает ППО кластера.
-
Единственная точка входа дает возможность пользователю соединяться с кластером как с отдельным компьютером, при этом ППО должна определить, который из узлов будет выполнять аутентификацию.
-
Единственная иерархия файловой системы обеспечивает то, что после входа в систему пользователь воспринимает файловую систему кластера как единственную иерархию файлов и каталогов независимо от их физического местонахождения.
-
Единственная виртуальная сеть дает возможность коду, который выполняется на любом узле кластера, получать доступ к внешним сетевым соединениям, даже если они не подключены физически к этому узлу.
-
Единственное адресное пространство памяти объединяет все адресные пространства отдельных узлов. Это адресное пространство доступно для всех узлов кластера.
-
Инфраструктура доступности системы реализует ряд дополнительных характеристик.
-
Единственное пространство процессов дает возможность выполнять процессы одинаково на любом узле. В частности, все процессы имеют идентификаторы, уникальные в пределах кластера; результат выполнения fork () может быть выполнен на другом узле; разрешено взаимодействие между процессами, которые выполняются на разных узлах.
-
Поддержка контрольных точек (checkpoints) дает возможность периодически хранить состояние процесса во время его выполнения. В случае выхода узла из строя процесс может быть запущен на другом узле с использованием сохраненного состояния — без потери результатов вычислений. Разрешена также миграция процессов между узлами во время их выполнения для выравнивания нагрузки.
Отметим, что в целом ППО кластера не обязано выполняться одинаково на всех его узлах. Обычно реализация некоторой функции требует выполнения специального сервера на одном из узлов (управляющем узле) и клиентского кода на других узлах.
Средства разработки параллельного программного обеспечения
Поскольку связь между узлами кластера осуществляют обычно с использованием TCP/IP, взаимодействие между компонентами параллельного программного обеспечения, которые выполняются на разных узлах, может быть реализована на основе интерфейса сокетов. Это, однако, является сложным заданием, поскольку такой интерфейс не содержит никаких специализированных средств поддержки параллельных вычислений. В случае использования сокетов для каждой задачи нужна разработка необходимых структур данных, реализация синхронизации, координации, обработки ошибок и тому подобное.
На практике параллельные программы для кластеров разрабатывают с применением средств высшего уровня, которые используют сокеты как базовый механизм. Чаще всего при этом пользуются интерфейсом обмена сообщениями, примерами реализации которого является PVM и МРI.
-
PVM (Parallel Virtual Machine) — это мобильная библиотека обмена сообщениями и среда выполнения параллельного кода. Она доступна для разных аппаратных архитектур (многопроцессорных систем, кластеров и тому подобное) и разных ОС (в частности Linux и Windows XP).
-
Спецификация МРI (Message Passing Interface) разработана для задання стандарта организации обмена сообщениями в распределенных системах. Есть реализации МРI для разных ОС (в частности для Linux и Windows XP доступный пакет МРIСН).
Кластерная архитектура Beowulf
Архитектура Beowulf была разработана в 1994 году как результат проекта, выполненного в Агентстве космических исследований США (NASA). Главной ее особенностью является отказ от использования дорогого аппаратного обеспечения, чтобы достичь оптимального соотношения цены и производительности. Сегодня это распространенная кластерная архитектура.
Рассмотрим характеристики Beowulf-кластера.
-
Основной целью его использования является выполнение параллельных вычислений (Beowulf-кластер всегда является вычислительным кластером).
-
Узлами такого кластера являются стандартные персональные компьютеры с архитектурой ІА-32.
-
Все узлы являются выделенными и не могут быть использованы для других целей.
-
Все программное обеспечение должно быть доступное в исходных кодах. Большинство Beowulf-кластеров работают под управлением Linux.
-
Связь между узлами осуществляют через выделенную внутреннюю сеть, которая использует Ethernet, Fast Ethernet или другие сетевые технологии, поддерживаемые Linux. Заметим, что, как и для узлов, основным требованием к сети является стандартность и низкая стоимость компонентов.
Обычно один из узлов является главным (head node). Его преимущественно оснащают монитором и клавиатурой, связывают с внешней сетью, и он играет роль управляющего узла для разных функций системы. Рекомендуют, чтобы другие вычислительные узлы (computing nodes) имели одинаковую аппаратную конфигурацию (так легче поддерживать выполнение параллельных применений).
Приведем примеры ППО, которое можно использовать в Beowulf-системах.
| Для повышения производительности сетевого обмена есть возможность установить набор модификаций ядра Linux, которые реализуют поддержку параллельного использования нескольких сетевых интерфейсов (в этом случае все интерфейсы рассматривают как один виртуальный канал с большей пропускной способностью).
| Общий образ системы может быть реализован с использованием пакета распределенного пространства процессов Beowulf (Beowulf distributed Process space, BPROC). Он состоит из модификаций ядра и утилит режима пользователя, что поддерживают единственное пространство процессов.
Во время разработки параллельного программного обеспечения для Beowulf-систем можно использовать любые средства, доступные в Linux (например, PVM или реализации стандарта МРI).
Кластерная архитектура Windows XP
Серверные версии Windows XP (в частности Windows Server 2003) содержат средства реализации кластеров с резервированием (серверные кластеры) и кластеров с выравниванием нагрузки (служба сетевого выравнивания нагрузки, Network Load Balancing). Дальше остановимся на серверных кластерах.
Основой архитектуры серверных кластеров является кластерная служба (Cluster Service) - набор компонентов каждого узла, которые поддерживают функционирование кластера. Компоненты кластерной службы работают в адресном пространстве отдельного фонового процесса.
Программные и аппаратные компоненты узлов, которыми руководит кластерная служба, называют ресурсами. К ресурсам принадлежат аппаратные устройства (диски, сетевые интерфейсы) и логические объекты (IP-адреса, применения, базы данных). Ресурсы могут находиться в подключенном и отключенном состоянии. Различают локальные ресурсы узлов и общие ресурсы, доступные для всех узлов кластера (общий массив дисков, общая сеть). Специальный ресурс, который называют ресурсом кворума (quorum resource), используют для хранения служебной информации, общей для всего кластера. Его реализуют на базе одного из дисков общего массива.
Ресурсы объединены в группы ресурсов. Такая группа обычно состоит из логично связанных ресурсов (например, применения и его данных). Владельцем группы в конкретный момент может быть только один узел кластера. Для каждой группы задано, на каком узле ей преимущественно нужно выполняться и куда следует ее перевести в случае выхода текущего узла из строя.
Важнейшие компоненты кластерной службы таковы.
-
Менеджер узлов (Node manager) функционирует на каждом узле и поддерживает локальный список текущих узлов кластера. Для этого он периодически посылает тактовые сообщения (heartbeats) аналогичным менеджерам других узлов. Когда один из них не отвечает на сообщение, соответствующий узел считают таким, который вышел из строя; об этом немедленно сообщают другие узлы, в результате чего они обновляют свои списки текущих узлов (происходит событие перегруппировки — regroup event).
-
Менеджер базы данных (Database manager) руководит конфигурационной базой данных кластера, которая содержит информацию обо всех физических и логических элементах кластера (узлы, типы и группы ресурсов, конкретные ресурсы) и сохраняется в реестре каждого узла и в ресурсе кворума. Эту информацию используют для отслеживания текущего и желаемого состояния кластера.
-
Менеджер выхода из строя (Failover manager) отвечает за обработку ситуации, когда один из узлов выходит из строя (failover) или возвращается к работе (failback). Выход из строя может произойти случайно (после аппаратного или программного сбоя) или преднамеренно (по инициативе администратора кластера). При этом группы ресурсов перераспределяются между другими узлами с учетом текущей нагрузки на узлы и преимуществ, заданных для этих групп. В случае возвращении узла к работе менеджер выхода из строя переводит группы ресурсов назад под управление этого узла. Этот менеджер, кроме того, может останавливать и перезапускать отдельные ресурсы в случае их сбоев.