Что такое кластер в архитектуре
Кластерные технологии
При построении любых достаточно мощных вычислительных систем, поддерживающих чувствительные к сбоям приложения, необходимо решить две основные проблемы: обеспечение высокой производительности и продолжительного функционирования. Это прежде всего касается критичных к любого рода остановкам приложений, связанным с обработкой транзакций, базами данных и телекоммуникационными сервисами.
Продолжительность функционирования системы зависит от трех факторов: надежности, готовности и эргономичности обслуживания. Эти факторы определяются устойчивостью системы к возникающим сбоям, способностью адекватно реагировать на отказ отдельных элементов и системы в целом, способностью восстанавливать свои свойства после сбоя или отказов в ее работе. Перечисленные факторы тесно связаны друг с другом, и поэтому оценивать их необходимо в комплексе.
Повышение надежности основано на принципе снижения до минимального уровня неисправностей, отказов и сбоев. Эта цель достигается за счет применения современной элементной базы, а также за счет совершенствования методов сборки аппаратуры.
Готовность системы к использованию — показатель ее надежности для конечного пользователя — выражается в процентном соотношении между работоспособным состоянием системы и ее простоями по любой причине, в том числе и плановыми (к ним относятся профилактические работы, реконфигурации, смена версий программного обеспечения, модернизация оборудования и т.п.).
Повышение уровня готовности предполагает подавление в определенных пределах влияния отказов и сбоев на работу системы с помощью средств контроля и коррекции нештатных ситуаций, а также средств автоматического восстановления вычислительного процесса после проявления неисправности, включая аппаратную и программную избыточность, на основе которой реализуются различные варианты отказоустойчивых архитектур.
Основные эксплуатационные характеристики системы серьезно зависят от удобства ее обслуживания, в частности, от ремонтопригодности, контролепригодности и т.д.
В зависимости от уровня готовности корпоративной системы к использованию выделяют четыре типа надежности:
Уровень готовности, % | Мaкс. время простоя | Тип системы |
99,0 | 3,5 дня в год | Обычная (Conventional) |
99,9 | 8,5 часов в год | Высокая надежность (High Availability) |
99,99 | 1 час в год | Отказоустойчивая (Fault Resilient) |
99,999 | 5 минут в год | Безотказная (Fault Tolerant) |
В последнее десятилетие широкое распространение получил термин «системы высокой готовности» (High Availability Systems). Весь спектр данных систем имеет общую цель — минимизировать время простоя (в основном это касается внеплановых простоев).
Существует несколько типов систем высокой готовности, различающихся своими функциональными возможностями и стоимостью. Следует отметить, что высокая готовность не дается бесплатно. Стоимость систем высокой готовности намного превышает стоимость обычных систем. Именно поэтому наибольшее распространение в мире получили кластерные системы.
Для типичного современного сервера величина готовности к использованию составляет 99,0%. Практика показывает, что при тщательной настройке операционной системы и продуманном системном администрировании надежность обычного сервера можно довести до уровня 99,5% и даже до 99,8%. Однако при достижении 99,5%-ной готовности основную роль среди причин простоя системы начинают играть так называемые внешние причины (ошибки в программном обеспечении, неквалифицированные действия персонала и т.д.), от которых обычный сервер никак не застрахован. Кластерная технология позволяет обеспечить уровень готовности системы к использованию в 99,9% и выше, что на практике означает менее 8 часов простоя в год.
Термин «кластеризация» в компьютерной области имеет много значений. Наиболее общее определение могло бы звучать так: «Реализация объединения компьютеров, представляющегося единым целым для операционной системы, системного программного обеспечения, прикладных программ и пользователей».
Компьютеры, образующие кластер, — так называемые узлы кластера — всегда относительно независимы, что допускает остановку или выключение любого из них для проведения профилактических работ или установки дополнительного оборудования без нарушения работоспособности всего кластера. Кроме того, все узлы кластера выполняют полезную работу — в отличие от систем с реплицированием данных (к примеру, Novell SFT III), а также в отличие от FT-систем (Fault Tolerant), которые обеспечивают не более пяти минут простоя в год за счет максимальной избыточности — резервирования всех подверженных отказам элементов. При отказе одного из узлов кластера оставшиеся узлы могут взять на себя задания, выполнявшиеся на отказавшем узле, не останавливая общий процесс работы. При этом сбой в работе кластера выражается лишь в некотором снижении производительности системы или в недоступности приложений на короткое время, необходимое для переключения на другой узел.
Производительность кластерной системы легко масштабируется; это значит, что добавление в систему дополнительных процессоров, оперативной и дисковой памяти и новых узлов может выполняться в любое время, когда это реально требуется.
Обзор архитектур на основе кластеров
Эффективность работы любой кластерной системы определяется двумя главными компонентами: механизмом высокоскоростного взаимодействия процессоров между собой и системным ПО, которое обеспечивает клиентам прозрачный доступ к системным ресурсам.
Существуют две основные архитектуры современных кластеров: одна основана на совместном использовании дисков, другая же не предполагает их совместного использования. Для каждой архитектуры существует множество разновидностей.
Кластерная архитектура с совместным использованием дисков
Главная особенность данного типа построения кластеров заключается в том, что на компьютерах, входящих в состав кластера, запускается одно приложение, хотя это условие не является обязательным (рис. 1). Поскольку все компьютеры могут совместно использовать общедоступные данные для проверки паролей, контроля за изменением и удалением этих данных, необходим диспетчер доступа.
Другой особенностью является то, что в данном случае сервер приложений должен координировать доступ к дискам. Для этого в локальной сети между серверами должны быть установлены постоянные соединения.
Кластерные хост-компьютеры могут обращаться к дискам непосредственно, без помощи контроллера. Этот вариант проиллюстрирован на рис. 2. Поскольку для нормальной работы кластера управление доступом к ресурсам все-таки необходимо, в данном случае оно выполняется на уровне протокола, а не с помощью физического устройства.
При кластеризации с совместным использованием дисков реализована возможность управления узкоспециализированными кластерами непосредственно через базы данных или через любое другое программное обеспечение, координирующее доступ к дискам и хранимым на них данных.
В общем случае применение кластеризации с предоставлением доступа к дискам позволяет удовлетворить все требования, предъявляемые к операциям интенсивного ввода/вывода. Ее применение также повышает общую производительность системы и равномерно распределяет нагрузку. Такой подход часто комбинируется с другими механизмами восстановления системы после выхода из строя одного из компонентов.
К недостаткам данного типа построения кластера относится невысокая степень масштабируемости и невозможность совместного использования ресурсов, расположенных на больших расстояниях. Первый недостаток связан с необходимостью управления совместно используемыми дисками и, что более важно, их содержимым. Процедуры обслуживания усложняются при добавлении в кластер дополнительных компьютеров. Второй недостаток связан с необходимостью приобретения, установки и поддержки средств доступа и управления, географически разнесенных ресурсов кластера, а это потребует значительных затрат. Кроме того, серьезно усложняется управление удаленными данными и увеличивается время доступа к ним.
Кластерная архитектура без предоставления доступа к ресурсам
Кластеры данного типа являются более масштабируемыми и обладают большим потенциалом в отношении отказоустойчивости и исправления ошибок. Это достигается посредством того, что в данном типе кластера нет совместного использования каких-либо устройств. Для достижения высокой масштабируемости и надежной работы пришлось пожертвовать производительностью работы приложения. Скорость работы глобальных сетей по сравнению с локальными практически всегда ниже.
Это тип кластеров представлен в одном из двух вариантов. Первый из них предназначен для оборудования, находящегося в непосредственной близости, а второй — для географически удаленного. Структура кластера без предоставления доступа к ресурсам представлена на рис. 3, а географически распределенный кластер — на рис. 4.
Кластеры рассматриваемого типа могут быть распределены в обширной географической области. При этом достигается уровень надежности, который не доступен ни одной локальной системе, независимо от того, является она кластерной или нет.
Топологические разновидности
Топологические разновидности кластерных архитектур двух описанных типов возникают в процессе настройки кластеров под определенные задачи. В современных кластерных продуктах особое внимание уделяется предоставлению таких специальных функциональных возможностей, как масштабируемость, отказоустойчивость, восстановление после сбоя, высокая производительность и т.п. Одновременное предоставление всех этих возможностей достигается за счет модернизации одной из рассмотренных архитектур или даже их комбинации.
Архитектура кластера с резервированием
Существует большое количество высоконадежных кластерных продуктов, поддерживающих возможность автоматического восстановления после отказа одного из компонентов. Все они называются системами с резервированием (fail-over systems). В таких системах два или более хост-компьютера функционируют в режиме резервных устройств. Если один из них выходит из строя, то другой (другие) автоматически начинает обрабатывать все данные, которые до этого обслуживал отказавший компьютер. Это исключает возможность фатального сбоя в работе всей системы. Данный тип организации кластеров оптимально подходит для поддержки работы критически важных приложений. Простейшая топология кластера с резервированием представлена на рис. 5.
Для работы кластеров с резервированием и совместным использованием ресурсов обычно разворачивается дополнительная высокопроизводительная сеть, предназначенная исключительно для передачи служебной информации между хост-компьютерами.
В кластерах с резервированием наблюдается более разумный подход к избыточности. Резервные хост-компьютеры постоянно получают информацию о состоянии других хост-компьютеров, и поэтому в случае возникновения неисправности кластер восстанавливается незамедлительно. Использование механизма мониторинга позволяет создателям систем равномерно распределить нагрузку между хост-компьютерами, снизив коэффициент загруженности центральных процессоров до 50%.
Независимо от способа их реализации кластеры с резервированием обеспечивают наивысший уровень надежности, равномерно распределяя нагрузку на все аппаратные средства.
Масштабируемая архитектура кластера
Организация масштабируемых кластеров непосредственно затрагивает топологию и функциональные возможности системы. В коммерческих кластерных продуктах, обеспечивающих высокую степень масштабируемости, более строгому управлению кластерами уделяется особое внимание. Более высокие, по сравнению с кластерами с резервированием, требования предъявляются и к распределению нагрузки. Это приводит к необходимости предоставления всем хост-компьютерам одинаковых привилегий доступа к данным, независимо от их расположения и способа обеспечения доступа.
Кластеры должны создаваться таким образом, чтобы объем операций управления доступом к ресурсам и данным не изменился с увеличением объемов томов, иначе все эти увеличения приведут к росту кластеров. Поскольку при добавлении новых компьютеров в кластер управление доступом к дискам и данным усложняется, простейшим способом решения такой проблемы является организация кластеров, использующих расширяемые симметричные мультипроцессорные системы (SMP). Такой подход позволяет кластеру, независимо от его архитектуры, расширяться за счет простого добавления микропроцессоров в уже установленные SMP.
Корректно организованные масштабируемые кластеры дают массу преимуществ. Технологические изменения, модернизация и даже обслуживание могут осуществляться без прекращения работы. Для кластеров такого типа особенно необходимы высокоскоростные устройства ввода/вывода к совместно используемым устройствам хранения информации.
Многоуровневая архитектура кластера
Многоуровневый кластер лучше всего описать как среду «клиент/сервер/сервер». На рис. 6 показано, что кластеру сервера приложения может быть предоставлен совместный доступ к серверу, содержащему данные и подсистему базы данных. Такая организация работы позволяет один класс машин настроить непосредственно на управление базой данных, а второй — на работу с приложением.
Использование двухуровневой модели физически разделяет приложение и данные, предоставляя тем самым возможность дальнейшего масштабного расширения приложения и его хост-компьютера. Объединяющее три сервера малое кольцо FDDI используется для отделения внутреннего трафика от потоков запросов ввода/вывода. В случае организации средств резервирования такая сеть может использоваться и для установления соединений между хост-компьютерами.
Поскольку для каждого типа обработки данных сервер должен обладать определенными возможностями, системные администраторы могут настроить каждый сервер в соответствии с выполняемой им функцией. Например, серверы приложений могут быть максимально оптимизированы для обработки определенного типа транзакций или вычислений, в зависимости от типа задач. Подобным образом сервер данных можно оснастить средствами высокоскоростного ввода/вывода и дисками большого объема.
Для наиболее важных приложений можно также кластеризовать сервер данных кластера. Таким образом, два (или больше) полностью «зеркальных» сервера могут взаимозаменяемо функционировать в качестве кластерного сервера управления базой данных.
На рис. 7 показано, как устранить единственное уязвимое звено кластера путем организации кластера с резервированием, выполняющего функции сервера данных основного кластера. В зависимости от томов данных, используемых для увеличения «живучести» локальной сети, может возникнуть необходимость в дальнейшем разделении устройств связи и устройств ввода/вывода.
В случае правильной разработки и реализации проекта топология географически распределенного кластера без предоставления совместного доступа к ресурсам обеспечивает восстановление системы на уровне приложения. Для правильного функционирования данной топологии необходимо, чтобы кластерные серверы и их средства хранения информации отвечали следующим требованиям:
Кластер взаимного резервирования представлен на рис. 8.
Использование географически распределенного кластера без предоставления совместного доступа к ресурсам позволяет разработчикам удовлетворить все требования, предъявляемые к восстановлению после сбоя, не затрачивая дополнительных средств на приобретение избыточных систем резервирования.
Исходя из вышеописанного можно сделать следующий вывод: пытаясь удовлетворить коммерческие требования какой-либо организации, можно не только комбинировать несколько топологий или их разновидности, но даже объединять их в иерархические вложенные структуры. Производительность и функциональные возможности отдельных компьютеров кластера при этом можно настроить в соответствии с выполняемыми функциями.
Кластерная архитектура вычислительных систем
Презентация к уроку
Базовый учебник: И.В. Максимов, И.И. Попов, «Архитектура ЭВМ и вычислительных систем». Москва. Издательство Академия. 2014.
Цель урока: Ввести понятие архитектура вычислительных систем. Закрепить и систематизировать знания учащихся о топологии вычислительных систем.
Задачи:
Тип урока: Комбинированное занятие.
Необходимое техническое оборудование: Персональные компьютеры, различные носители информации.
План урока:
Опрос учащихся (18 мин).
Ход урока
1. Организационный момент.
Цель: Организовать группу, создание обстановки для естественного самовыражения обучающегося.
Вместе с дежурным учитель проверяет готовность класса к уроку, отмечает отсутствующих.
2. Постановка темы и цели урока.
Цель: Ознакомление с темой урока, постановка проблемы, цели урока.
При постановке проблемы используется ПК для наглядности.
3. Систематизация знаний и умений по пройденному материалу.
Цель: Обобщение и систематизация знаний. Развитие логических умений: сравнивать, выделять главное.
Для подготовки учащихся к усвоению нового материала повторяются и систематизируются их знания и умения в процессе устного опроса:
4. Изложение нового материала.
Ввести понятия: вычислительная система, архитектура вычислительных систем.
Цель: Усвоение новых знаний, создание положительного эмоционального настроя на работу всех учащихся.
Вычислительная система (ВС) — совокупность взаимосвязанных и взаимодействующих процессоров или ЭВМ, периферийного оборудования и программного обеспечения, предназначенная для сбора, хранения, обработки и распределения информации.
Создание ВС преследует следующие основные цели:
предоставление пользователям дополнительных сервисных услуг Отличительной особенностью ВС по отношению к классическим ЭВМ является наличие в ней нескольких вычислителей, реализующих параллельную обработку. Многомашинная вычислительная система. Здесь несколько процессоров, входящих в вычислительную систему, не имеют общей оперативной памяти, а имеют каждый свою (локальную). Каждый компьютер в многомашинной системе имеет классическую архитектуру, и такая система применяется достаточно широко.
Многопроцессорная архитектура. Наличие в компьютере нескольких процессоров означает, что параллельно может быть организовано много потоков данных и много потоков команд. Архитектура с параллельными процессорами. Здесь несколько АЛУ работают под управлением одного УУ. Это означает, что множество данных может обрабатываться по одной программе, т. е. по одному потоку команд. Высокое быстродействие такой архитектуры можно получить только на задачах, в которых одинаковые вычислительные операции выполняются одновременно на различных однотипных наборах данных.
Кластерная архитектура
Кластер представляет собой два или более компьютеров (часто называемых узлами), которые объединяются с помощью сетевых технологий на базе шинной архитектуры или коммутатора и предоставляются пользователю в качестве единого информационно-вычислительного ресурса. В качестве узлов кластера могут выступать серверы, рабочие станции или обычные персональные компьютеры. Преимущество кластеризации для повышения работоспособности становится очевидным в случае сбоя какого-либо узла при этом другой узел кластера может взять на себя нагрузку неисправного узла, и пользователи не заметят прерывания в доступе. Возможности масштабируемости кластеров позволяют многократно увеличивать производительность приложений для большего числа пользователей технологий (Fast/Gigabit Ethernet, Myrinet) на базе архитектуры или коммутатора. Такие суперкомпьютерные системы являются самыми дешевыми, поскольку собираются на базе стандартных комплектующих элементов («off the shelf») процессоров, коммутаторов, дисководов и внешних устройств.
Кластеризация может быть осуществлена на разных уровнях компьютерной системы, включая аппаратное обеспечение, операционные системы, программы-утилиты, системы управления и приложения. Чем больше уровней системы объединены кластерной технологией, тем выше надежность, масштабируемость и управляемость кластера.
Типы кластеров.
Наиболее употребляемыми типами кластеров являются:
Архитектура кластерной системы определяет ее производительность в большей степени, чем тип используемых в ней процессоров. параметром, влияющим на величину производительности такой системы, является расстояние между процессорами.
Рассмотрим пример построения симметричной 16-процессорной системы, в которой все процессоры были бы равноправны. Наиболее естественным представляется соединение в виде плоской решетки, где внешние концы используются для подсоединения внешних устройств. Теория же показывает, что если в системе максимальное расстояние между процессорами больше 4, то такая система не может работать эффективно. Поэтому, при соединении 16 процессоров друг с другом плоская схема является неэффективной. Для получения более компактной конфигурации необходимо решить задачу о нахождении фигуры, имеющей максимальный объем при минимальной площади поверхности.
В трехмерном пространстве таким свойством обладает шар. Но поскольку необходимо построить узловую систему, то вместо шара приходится использовать куб (если число процессоров равно 8) или гиперкуб, если число процессоров больше 8. Размерность гиперкуба будет определяться в зависимости от числа процессоров, которые необходимо соединить. Наиболее эффективной считается архитектура с топологией «толстого дерева» (fat-tree). Поскольку способ соединения процессоров друг с другом больше влияет на производительность кластера, чем тип используемых в ней процессоров, то может оказаться более рентабельным создать систему из большего числа дешевых компьютеров, чем из меньшего числа дорогих.
В кластерах используются операционные системы, стандартные для рабочих станций, чаще всего, свободно распространяемые — Linux, FreeBSD, вместе со специальными средствами поддержки параллельного программирования и балансировки нагрузки.
5. Просмотр презентации.
Работа с книгой И.В. Максимов, И.И. Попов. Архитектура ЭВМ и вычислительных систем. Москва Изд. Академия. 2014г
6. Закрепление полученных знаний.
Цель: Закрепление нового материала. Обобщение полученных знаний. Развитие логического мышления. Формирование навыков самоконтроля. Воспитание воли, настойчивости и трудолюбия.
Проверяется правильность выполнения задания.
Фронтальным опросом вместе с учащимися подводятся итоги урока.
7. Постановка домашнего задания.
Цель: Закрепление знаний, применение знаний. Развитие умений и навыков. Воспитание воли, настойчивости, трудолюбия. Воспитание самоконтроля.
На дом задается прочитать объяснительный текст. Учебник И.В. Максимов, И.И. Попов, «Архитектура ЭВМ и вычислительных систем». Москва. Издательство Академия. 2014 г.
8. Подведение итогов урока.
Цель: Выставление оценок ученикам, анализ ответов учеников, выяснить, что понравилось (не понравилось ) и почему.
Обсудить с детьми, что узнали (чем овладели), что понравилось (не понравилось) и почему, что бы хотелось выполнить еще раз. Выставление оценок (поощрение) при опросе на уроке не только правильного ответа ученика, но и анализ того, как ученик рассуждал, какой способ использовал, почему и в чем ошибся. Отметка аргументируется по ряду параметров: правильности, самостоятельности, оригинальности.
Эффективные кластерные решения
Для начала следует определить, на кого рассчитана статья, чтобы читатели решили, стоит ли тратить на нее время.
Потребность в написании этой статьи возникла после прочитанного семинара на выставке ENTEREX’2002 в городе Киеве. Именно тогда, в начале 2002-го я увидел, что интерес к теме кластерных систем значительно возрос по сравнению с тем, что наблюдалось всего пару лет назад.
Я не ставил себе целью на семинаре и в этой статье проанализировать варианты решения конкретных прикладных задач на кластерных системах, это отдельная и очень обширная тема. Я ставил себе задачу познакомить читателей с терминологией и средствами построения кластерных систем, а также показать, для каких задач полезен кластеринг. Для полного убеждения сомневающихся в статье приведены конкретные примеры реализации кластерных систем и мои контакты, по которым я готов отвечать по мере возможностей на вопросы, связанные с кластерными технологиями, а также принимать ваши замечания и советы.
Концепция кластерных систем
Впервые в классификации вычислительных систем термин «кластер» определила компания Digital Equipment Corporation (DEC).
По определению DEC, кластер — это группа вычислительных машин, которые связаны между собою и функционируют как один узел обработки информации.
Кластер функционирует как единая система, то есть для пользователя или прикладной задачи вся совокупность вычислительной техники выглядит как один компьютер. Именно это и является самым важным при построении кластерной системы.
Первые кластеры компании Digital были построены на машинах VAX. Эти машины уже не производятся, но все еще работают на площадках, где были установлены много лет назад. И наверное самое важное то, что общие принципы, заложенные при их проектировании, остаются основой при построении кластерных систем и сегодня.
Естественно, что при частных реализациях одни из требований ставятся во главу угла, а другие отходят на второй план. Так, например, при реализации кластера, для которого самым важным является быстродействие, для экономии ресурсов меньше внимания придают высокой готовности.
В общем случае кластер функционирует как мультипроцессорная система, поэтому, важно понимать классификацию таких систем в рамках распределения программно-аппаратных ресурсов.
Рисунок 2. Тесно связанная мультипроцессорная система
Рисунок 3. Умеренно связанная мультипроцессорная система
Рисунок 4. Слабо связанная мультипроцессорная система
Обычно на PC платформах, с которыми мне приходится работать, используются реализации кластерной системы в моделях тесно связанной и умеренно связанной мультипроцессорных архитектур.
Разделение на High Avalibility и High Performance системы
В функциональной классификации кластеры можно разделить на «Высокоскоростные» (High Performance, HP), «Системы Высокой Готовности» (High Availability, HA), а также «Смешанные Системы».
Смешанные системы объединяют в себе особенности как первых, так и вторых. Позиционируя их, следует отметить, что кластер, который обладает параметрами как High Performance, так и High Availability, обязательно проиграет в быстродействии системе, ориентированной на высокоскоростные вычисления, и в возможном времени простоя системе, ориентированной на работу в режиме высокой готовности.
Проблематика High Performance кластеров
Почти в любой ориентированной на параллельное вычисление задаче невозможно избегнуть необходимости передавать данные от одной подзадачи другой.
Таким образом, быстродействие High Performance кластерной системы определяется быстродействием узлов и связей между ними. Причем влияние скоростных параметров этих связей на общую производительность системы зависит от характера выполняемой задачи. Если задача требует частого обмена данными с подзадачами, тогда быстродействию коммуникационного интерфейса следует уделять максимум внимания. Естественно, чем меньше взаимодействуют части параллельной задачи между собою, тем меньше времени потребуется для ее выполнения. Что диктует определенные требования также и на программирование параллельных задач.
Основные проблемы при необходимости обмена данными между подзадачами возникают в связи с тем, что быстродействие передачи данных между центральным процессором и оперативной памятью узла значительно превышает скоростные характеристики систем межкомпьютерного взаимодействия. Кроме того, сильно сказывается на изменении функционирования системы, по сравнению с привычными нам SMP системами, разница в быстродействии кэш памяти процессоров и межузловых коммуникаций.
Быстродействие интерфейсов характеризуется двумя параметрами: пропускной способностью непрерывного потока даных и максимальным количеством самых маленьких пакетов, которые можно передать за единицу времени. Варианты реализаций коммуникационных интерфейсов мы рассмотрим в разделе «Средства реализации High Performance кластеров».
Проблематика High Availability кластерных систем
Сегодня в мире распространены несколько типов систем высокой готовности. Среди них кластерная система является воплощением технологий, которые обеспечивают высокий уровень отказоустойчивости при самой низкой стоимости. Отказоустойчивость кластера обеспечивается дублированием всех жизненно важных компонент. Максимально отказоустойчивая система должна не иметь ни единой точки, то есть активного элемента, отказ которого может привести к потере функциональности системы. Такую характеристику как правило называют — NSPF (No Single Point of Failure, — англ., отсутствие единой точки отказа).
При построении систем высокой готовности, главная цель — обеспечить минимальное время простоя.
Пренебрежение любым из указанных параметров, может привести к потере функциональности системы.
Давайте коротко пройдемся по всем трём пунктам.
Что касается обеспечения максимальной надежности, то она осуществляется путем использования электронных компонент высокой и сверхвысокой интеграции, поддержания нормальных режимов работы, в том числе тепловых.
Отказоустойчивость обеспечивается путем использования специализированных компонент (ECC, Chip Kill модули памяти, отказоустойчивые блоки питания, и т.п.), а также с помощью технологий кластеризации. Благодаря кластеризации достигается такая схема функционирования, когда при отказе одного из компьютеров задачи перераспределяются между другими узлами кластера, которые функционируют исправно. Причем одной из важнейших задач производителей кластерного программного обеспечения является обеспечение минимального времени восстановления системы в случае сбоя, так как отказоустойчивость системы нужна именно для минимизации так называемого внепланового простоя.
Много кто забывает, что удобство в обслуживании, которое служит уменьшению плановых простоев (например, замены вышедшего из строя оборудования) является одним из важнейших параметров систем высокой готовности. И если система не разрешает заменять компоненты без выключения всего комплекса, то ее коэффициент готовности уменьшается.
Смешанные архитектуры
Сегодня часто можно встретить смешанные кластерные архитектуры, которые одновременно являются как системами высокой готовности, так и высокоскоростными кластерными архитектурами, в которых прикладные задачи распределяются по узлам системы. Наличие отказоустойчивого комплекса, увеличение быстродействия которого осуществляется путем добавления нового узла, считается самым оптимальным решением при построении вычислительной системы. Но сама схема построения таких смешанных кластерных архитектур приводит к необходимости объединения большого количества дорогих компонент для обеспечения высокого быстродействия и резервирования одновременно. И так как в High Performance кластерной системе наиболее дорогим компонентом является система высокоскоростных коммуникаций, ее дублирование приведет к значительным финансовым затратам. Следует отметить, что системы высокой готовности часто используются для OLTP задач, которые оптимально функционируют на симметричных мультипроцессорных системах. Реализации таких кластерных систем часто ограничиваются 2-х узловыми вариантами, ориентированными в первую очередь на обеспечение высокой готовности. Но в последнее время использование недорогих систем количеством более двух в качестве компонент для построения смешанных HA/HP кластерных систем становится популярным решением.
Что подтверждает, в частности, информация агентства The Register, опубликованная на его страничке:
«Председатель корпорации Oracle объявил о том, что в ближайшее время три Unіх сервера, на которых работает основная масса бизнес-приложений компании, будут заменены на блок серверов на базе процессоров Іntеl под управлением ОС Lіnuх. Ларри Эллисон настаивает на том, что введение поддержки кластеров при работе с приложениями и базами данных снижает затраты и повышает отказоустойчивость.»
Средства реализации High Performance кластеров
Самыми популярными сегодня коммуникационными технологиями для построения суперкомпьютеров на базе кластерных архитектур являются:
Myrinet, Virtual Interface Architecture (cLAN компании Giganet — одна из первых коммерческих аппаратных реализаций), SCI (Scalable Coherent Interface), QsNet (Quadrics Supercomputers World), Memory Channel (разработка Compaq Computer и Encore Computer Corp), а также хорошо всем известные Fast Ethertnet и Gigabit Ethernet.
Рисунок 8. Скорость передачи непрерывного потока данных
Рисунок 9. Время передачи пакета нулевой длинны
Эти диаграммы (Рис. 8 и 9) дают возможность увидеть быстродействие аппаратных реализаций разных технологий, но следует помнить, что на реальных задачах и при использовании разнообразных аппаратных платформ параметры задержки и скорости передачи данных получаются на 20-40%, а иногда на все 100% хуже, чем максимально возможные.
Например, при использовании библиотек MPI для коммуникационных карточек cLAN и Intel Based серверов с шиной PCI, реальная пропускная способность канала составляет 80-100 MByte/sec, задержка — около 20 мксек.
Одной из проблем, которые возникают при использовании скоростных интерфейсов, например, таких как SCI является то, что архитектура PCI не подходит для работы с высокоскоростными устройствами такого типа. Но если перепроектировать PCI Bridge с ориентацией на одно устройство передачи данных, то эта проблема решается. Такие реализации имеют место в решениях некоторых производителей, например, компании SUN Microsystems.
Таким образом, при проектировании высокоскоростных кластерных систем и расчета их быстродействия, следует учитывать потери быстродействия, связанные с обработкой и передачей данных в узлах кластера.
Таблица 1. Сравнение высокоскоростных коммуникационных интерфейсов
Технология | Пропускная способность MByte/s | Задержка мксек/пакет | Стоимость карточки/свича на 8 портов | Поддержка платформ | Комментарий |
---|---|---|---|---|---|
Fast Ethertnet | 12.5 | 158 | 50/200 | Linux, UNIX, Windows | Низкие цены, популярная |
Gigabit Ethernet | 125 | 33 | 150/3500 | Linux, UNIX, Windows | Удобство модернизации |
Myrinet | 245 | 6 | 1500/5000 | Linux, UNIX, Windows | Открытый стандарт, популярная |
VI (сLAN от Giganet) | 150 | 8 | 800/6500 | Linux, Windows | Первая аппаратная промышленная реализация VI |
SCI | 400 | 1.5 | 1200/5000 * | Linux, UNIX, Windows | Стандартизирована, широко используется |
QsNet | 340 | 2 | N/A ** | True64 UNIX | AlphaServer SC и системы Quadrics |
Memory Channel | 100 | 3 | N/A | True64 UNIX | Используется в Compaq AlphaServer |
* аппаратура SCI (и программное обеспечение поддержки) допускает построение так называемых MASH топологий без использования коммутаторов
Одной интересной особенностью коммуникационных интерфейсов, которые обеспечивают низкие задержки, является то, что на их основе можно строить системы с архитектурой NUMA, а также системы, которые на уровне программного обеспечения могут моделировать многопроцессорные SMP системы. Преимуществом такой системы является то, что вы можете использовать стандартные операционные системы и программное обеспечение, ориентированное на использование в SMP решениях, но в связи с высокой, в несколько раз выше по сравнению с SMP задержкой междупроцессорного взаимодействия, быстродействие такой системы будет малопрогнозируемо.
Средства распараллеливания
По опыту пользователей высокоскоростных кластерных систем, наиболее эффективно работают программы, специально написанные с учетом необходимости межпроцессорного взаимодействия. И даже несмотря на то, что программировать на пакетах, которые используют shared memory interface или средства автоматического распараллеливания, значительно удобней, больше всего распространены сегодня библиотеки MPI и PVM.
Учитывая массовою популярность MPI (The Message Passing Interface), хочется немного о нём рассказать.
«Интерфейс передачи сообщений» — это стандарт, который используется для построения параллельных программ и использует модель обмена сообщениями. Существуют реализации MPI для языка C/C++ и Fortran как в бесплатных, так и коммерческих вариантах для большинства распространенных суперкомпьютерных платформ, в том числе High Performance кластерных систем, построенных на узлах с ОС Unix, Linux и Windows. За стандартизацию MPI отвечает MPI Forum (http://www.mpi-forum.org). В новой версии стандарта 2.0 описано большое число новых интересных механизмов и процедур для организации функционирования параллельных программ: динамическое управление процессами, односторонние коммуникации (Put/Get), параллельные I/O. Но к сожалению, пока нет полных готовых реализаций этой версии стандарта, хотя часть из нововведений уже активно используется.
Для оценки функциональности MPI, хочу представить вашему вниманию график зависимости времени вычисления задачи решения систем линейных уравнений в зависимости от количества задействованных процессоров в кластере. Кластер построен на процессорах Intel и системе межузловых соединений SCI (Scalable Coherent Interface). Естественно, задача частная, и не надо понимать полученные результаты как общую модель прогнозирования быстродействия желаемой системы.
На графике отображены две кривые, синяя — линейное ускорение и красная — полученное в результате эксперимента. То есть, в результате использования каждой новой ноды мы получаем ускорение выше, чем линейное. Автор эксперимента утверждает, что такие результаты получаются из-за более эффективного использования кэш памяти, что вполне логично и объяснимо. Если у кого возникнут мысли и идеи по этому поводу, буду благодарен, если вы ими поделитесь (мой e-mail: svv@ustar.kiev.ua).
Средства реализации High Availability кластеров
Архитектура без распределения ресурсов не использует общей системы хранения данных. При ее использовании каждый узел имеет свои дисковые накопители, которые не используются совместно узлами кластерной системы. Фактически, на аппаратном уровне разделяются только коммуникационные каналы.
Архитектура с общими дисками классически используется для построения кластерных систем высокой готовности, ориентированных на обработку больших объемов данных. Такая система состоит из общей системы хранения данных и узлов кластера, которые распределяют доступ к общим данным. При высокой мощности системы хранения данных, при работе с задачами, ориентированными на их обработку, архитектура с общими дисками является более эффективной. В этом случае не нужно держать несколько копий данных и в то же время, при выходе из строя узла, задачи могут быть мгновенно доступны для других узлов.
В случае, если в задаче удается логически разделить данные для того, чтобы запрос из некого подмножества запросов можно было бы обработать с использованиям части данных, то система без разделения ресурсов может оказаться более эффективным решением.
На мой взгяд интересной является возможность построения гетерогенных кластерных систем. Например, программное обеспечение Tivoli Sanergy разрешает строить системы, в которых возможно разделение доступа к данным между гетерогенными узлами. Такое решение может быть очень полезным в системах коллективной обработки видеоинформации или других данных в организации, где на одной платформе просто не существует требуемого спектра решений или же уже существует сформированный парк аппаратных и программных ресурсов, которые нужно использовать более эффективно.
Самыми популярными коммерческими системами сегодня являются двухузловые отказоустойчивые кластеры. Различают Активный-Активный (Active-Active) и Активный-Пассивный (Active-Passive) модели реализации отказоустойчивых кластерных систем в отношении распределения програмных ресурсов.
В модели Активный-Активный мы практически получаем вместе с отказоустойчивым решением — решение высокоскоростное, так как одна задача работает на нескольких серверах одновременно. Такой вариант реализован, например, в Oracle Prallel Server, MS SQL 2000, IBM DB2. То есть, реализация такой модели возможна лишь в случае написания прикладного программного обеспечения с ориентацией на функционирование в кластерном режиме (исключение составляют кластерные системы с разделением оперативной памяти). В модели Активный-Активный возможно масштабирование скорости работы задачи путем добавления нового узла, если конечно программным обеспечением поддерживается необходимое количество нод. Например, Oracle Parallel Server 8.0.5 поддерживает работу на кластере от 2-х до 6-ти узлов.
Очень часто пользователи встречаются с такой проблемой, когда нужно обеспечить отказоустойчивое функционирование уже готовых программных решений. К сожалению, модель Активный-Активный в таком случае не работает. Для подобных ситуаций используется модель, в которой обеспечивается миграция задач, выполнявшихся на узле, вышедшем из строя, на другие узлы. Таким образом, мы получаем реализацию Активный-Пассивный.
Учитывая то, что во многих случаях мы можем разбить одну задачу на несколько распределением зон ответственности, а также то, что в общем случае на предприятии нужно выполнять много разных задач, реализуется так называемая модель кластерной системы псевдо Активный-Активный.
Если вам нужно обеспечить отказоустойчивую работу нескольких программных ресурсов, то достаточно добавить в систему новый узел и запустить на кластере нужные вам задачи, которые в случае отказа этого узла перейдут на выполнение на другом узле. Такая модель реализована в программном обеспечении ReliantHA для ОС Caldera OpenUnix и Unixware, которое поддерживает кластеризацию от 2-х к 4-х узлам, в MSCS (Microsoft Cluster Service) и Linux Failover Cluster модели.
Система коммуникаций в отказоустойчивых кластерных системах может быть построена на таком же оборудовании, как и в высокоскоростных кластерах. Но в случае реализации архитектуры с разделяемым дисковым накопителем, возникает необходимость обеспечения высокоскоростного доступа к общей системе хранения данных. Эта задача имеет сегодня множество вариантов решений.
Если используется простейшая 2-х узловая модель, то доступ к дискам может быть построен через их прямое подключение к общей SCSI шине,
или с помощью автономной дисковой подсистемы со встроенным контролером SCSI to SCSI. В последнем случае диски подключаются ко внутренним независимым каналам дисковой подсистемы.
Вариант с использованием SCSI to SCSI дисковой подсистемы является более масштабируемым, функциональным и отказоустойчивым. Несмотря на то, что появляется еще один мостик между узлом и дисками, скорость такой системы обычно выше, так как мы получаем коммутируемый доступ к накопителю (ситуация похожа на использование концентратора и коммутатора в локальной сети). В отличие от варианта с разделением доступа к дискам на общей SCSI шине, отдельная независимая дисковая подсистема имеет также удобную возможность построения систем без точек отказа и возможность построения многоузловых конфигураций.
В последнее время начинает приобретать популярность новый последовательный интерфейс для протокола SCSI — FC (Fibre Channel). На базе FC строятся так называемые сети хранения данных — SAN (Storage Area Network).
Эти замечательные особенности Fibre Channel получил благодоря тому, что в его проектировании принимали участие специалисты в областях как канальных, так и сетевых интерфейсов, причем им удалось объединить в одном FC интерфейсе положительные черты обоих.
Для понимания значимости FC я приведу сравнительную табличку FC и параллельного SCSI интерфейса.
Таблица 2. Таблица сравнительных характеристик FC и параллельного SCSI интерфейса
Новый стандарт: 200MB/s & 400MB/s
Новый стандарт: 320MB/s
Fiber optic: 2-10km
Copper, differential: 25m
2 24 на коммутатор
Сегодня FC устройства стоят дороже, чем устройства с параллельным SCSI, но разница в цене в последнее время резко уменьшается. Диски и системы хранения данных уже практически равны по стоимости с параллельными SCSI реализациями, значительную разницу в стоимости обеспечивают только FC адаптеры.
Существует еще один очень интересный вариант реализации кластерной архитектуры — кластерная система с разделяемой памятью (в т.ч. оперативной) Shared Memory Cluster. Фактически этот кластер может функционировать как в модели умеренно связанной многопроцессорной системы, так и тесно связанной. Такая система, как уже говорилось в начале статьи, называется NUMA.
Кластер с разделяемой памятью использует программное обеспечение (кластерные сервисы), которое обеспечивает один образ системы (single system image), даже если кластер построен как архитектура без распределения ресурсов, которым его соответственно видит операционная система.
В завершение рассказа о кластерных системах высокой готовности, хочу привести статистику по простоям различных систем.
Приведены усредненные данные, а также данные, взятые из рекламных материалов одной из компаний производителей, поэтому их нужно воспринимать с некоторой долей критичности. Однако общая картина, которую они описывают, является вполне корректной.
Как видим, кластерные системы высокой готовности не являются панацеей при минимизации простоев. Если простой системы является чрезвычайно критичным, тогда следует использовать системы класса Fault Tolerant или Continuous Availability, системы такого класса имеют коэффициент готовности на порядок выше, чем системы класса High Availability.
Примеры проверенных решений
Так как успешность любой технологии доказывается примерами ее практического использования, я хочу показать конкретные варианты реализации нескольких наиболее важных, на мой взгляд, кластерных решений.
Сперва о высокоскоростных кластерах.
Одним из наиболее полезных, на мой взгляд, примеров является то, что первые места, да и вообще большинство мест 18-й редакции списка самых мощных суперкомпьютеров мира занимают системы IBM SP2 и Compaq AlphaServer SC. Обе системы являются массивно-параллельными вычислительными системами (MPP), которые структурно аналогичны High Performance кластерным решениям.
В IBM SP2 в качестве узлов используются машины RS/6000, соединенные коммутатором SP Switch2. Пропускная способность коммутатора — 500MB/s в одном направлении, величина задержки — 2.5 мксек.
Compaq AlphaServer SC. Узлы — 4-х процессорные системы типа Compaq AlphaServer ES45, соединенные с помощью коммуникационного интерфейса QsNet, параметры которого упоминались выше.
В том же суперкомпьютерном списке находятся машины, построенные на обычных Intel платформах и коммутаторах SCI и Myrinet и даже обычном Fast и Gigabit Ethernet. Причем как в первых двух вариантах, так и на высокоскоростных кластерных системах, построенных на рядовом оборудовании, для програмирования используются пакеты MPI.
Ну и напоследок хочется привести красивый пример масштабируемой кластерной системы высокой готовности. Аппаратная модель кластерного решения для отказоустойчивой высокоскоростной обработки базы данных IBM DB/2.
На этом все. Если у кого возникнут вопросы, советы или желание пообщаться — милости просим. Мои координаты вы найдете в конце статьи.