Кластеры
По мере развития компьютерной техники и ее интеграции в бизнес-процесс предприятий проблема увеличения времени, в течение которого доступны вычислительные ресурсы, приобретает все большую актуальность. Надежность серверов становится одним из ключевых факторов успешной работы компаний с развитой сетевой инфраструктурой, например, электронных магазинов, ведущих продажи через Интернет, крупных предприятий, в которых специальные системы осуществляют поддержку производственных процессов в реальном времени, банков с разветвленной филиальной сетью или центров обслуживания телефонного оператора, использующих систему поддержки принятия решений. Всем таким предприятиям жизненно необходимы серверы, которые работают и предоставляют информацию 24 часа в день семь дней в неделю (24х7х365).
Стоимость поломок и простоя оборудования постоянно растет. Она складывается из стоимости потерянной информации, потерянной прибыли, стоимости технической поддержки и восстановления, неудовлетворенности клиентов и т. д. Имеются методики, позволяющие вычислить стоимость минуты простоя и затем на основе этого показателя выбрать наиболее выгодное решение с наилучшим соотношением функциональности и цены.
Существует немало средств для построения надежной системы. Дисковые массивы RAID, например, позволяют не прерывать обработку запросов к информации, хранящейся на дисках, при выходе из строя одного или нескольких элементов массива. Резервные блоки питания в ряде случаев позволят в какой-то степени застраховаться на случай отказа других компонентов. Источники бесперебойного питания поддержат работоспособность системы в случае сбоев в сети энергоснабжения. Многопроцессорные системные платы обеспечат функционирование сервера в случае отказа одного процессора. Однако ни один из этих вариантов не спасет, если из строя выйдет вся вычислительная система целиком. Вот тут на помощь приходит кластеризация. Пожалуй, первым шагом к созданию кластеров можно считать широко распространенные в пору расцвета мини-компьютеров системы «горячего» резерва. Одна или две такие системы, входящие в сеть из нескольких серверов, не выполняют никакой полезной работы, но готовы начать функционировать, как только выйдет из строя какая-либо из основных систем. Таким образом, серверы дублируют друг друга на случай отказа или поломки одного из них. Но при объединении компьютеров желательно, чтобы они не просто дублировали друг друга, но и выполняли другую полезную работу, распределяя нагрузку между собой. Для этого во многих случаях как нельзя лучше подходят кластеры.
Изначально кластеры использовались для мощных вычислений и поддержки распределенных баз данных, особенно таких, для которых требуется повышенная надежность. В дальнейшем их стали применять для сервиса Web. Однако снижение цен на кластеры привело к тому, что подобные решения все активнее используют и для других нужд. Кластерные технологии наконец-то стали доступны рядовым организациям — в частности, благодаря использованию в кластерах начального уровня недорогих серверов Intel, стандартных средств коммуникации и распространенных ОС.
Кластерные решения на платформах Microsoft ориентированы прежде всего на борьбу с отказами оборудования и ПО. Статистика отказов подобных систем хорошо известна: только 20% из них непосредственно вызвано отказами оборудования, ОС, питания сервера и т. п. Для исключения этих факторов применяются различные технологии повышения отказоустойчивости серверов (резервируемые и заменяемые в горячем режиме диски, источники питания, платы в разъемах PCI и т. д.). Однако 80% оставшихся инцидентов вызваны обычно отказами приложений и ошибками оператора. Кластерные решения — действенное средство для решения этой проблемы.
В ряде случаев привлекательность кластера во многом определяется возможностью построить уникальную архитектуру, обладающую достаточной производительностью, устойчивостью к отказам аппаратуры и ПО. Такая система к тому же должна легко масштабироваться и модернизироваться универсальными средствами, на основе стандартных компонентов и за умеренную цену (несравненно меньшую, чем цена уникального отказоустойчивого компьютера или системы с массовым параллелизмом).
Термин «кластер» имеет множество определений. Одни во главу угла ставят отказоустойчивость, другие — масштабируемость, третьи — управляемость. Классическое определение кластера звучит примерно так: «кластер — параллельная или распределенная система, состоящая из нескольких связанных между собой компьютеров и при этом используемая как единый, унифицированный компьютерный ресурс». Таким образом, кластер представляет собой объединение нескольких компьютеров, которые на определенном уровне абстракции управляются и используются как единое целое. На каждом узле кластера (по сути, узел в данном случае — компьютер, входящий в состав кластера) находится своя собственная копия ОС. Напомним, что системы с архитектурой SMP и NUMA, имеющие одну общую копию ОС, нельзя считать кластерами. Впрочем, узлом кластера может быть как однопроцессорный, так и многопроцессорный компьютер, причем в пределах одного кластера компьютеры могут иметь различную конфигурацию (разное количество процессоров, разные объемы ОЗУ и дисков). Узлы кластера соединяются между собой либо с помощью обычных сетевых соединений (Ethernet, FDDI, Fibre Channel), либо посредством нестандартных специальных технологий. Такие внутрикластерные, или межузловые соединения позволяют узлам взаимодействовать между собой независимо от внешней сетевой среды. По внутрикластерным каналам узлы не только обмениваются информацией, но и контролируют работоспособность друг друга.
Более широкое определение кластера предложили эксперты Aberdeen Group (http://www.aberdeen.com): кластер в их понимании — это система, действующая как одно целое, гарантирующая высокую надежность, имеющая централизованное управление всеми ресурсами и общую файловую систему и, кроме того, обеспечивающая гибкость конфигурации и легкость в наращивании ресурсов.
Кластер – это …
Для начала выясним, что обозначает слово в переводе с английского языка. «Cluster» — это «скопление, рой».
Если рассматривать шире, то кластер – это объединение каких-либо однородных элементов в единое целое. Кластер, как результат объединения, обретает новые уникальные свойства, дополнительно к тем, которые имеют элементы, из которых он состоит.
Далее проанализируем наиболее актуальные сферы применения этого понятия.
Как определяется размер кластера
Перед тем как с чистого листа начать работу с жестким диском или флешкой необходимо произвести форматирование. Если вы считаете что это всего лишь полная очистка с удалением содержимого, то ошибаетесь.
Такая процедура в первую очередь связана с разметкой памяти и разделением ее на кластеры для конкретной файловой системы. Это так же осуществляется не произвольно. Мы говорили о секторах на диске, так вот ранее выпускаемых моделях размер одного составлял 512 байт и их в одном кластере может быть несколько (число, кратное степени 2). Например, система FAT 32 позволяет отдавать под кластер до 64 секторов, что соответствует 32Мб. Но на флешку с таким форматированием вы не запишите файл объемом более 4Гб.
Сейчас активно используются более совершенные файловые системы NTFS или exFAT. Их возможности позволяют работать с объемными файлами и хранилищами информации.
На современных дисках емкостью в несколько терабайт используется новая разметка секторов Advanced Format, в которых 1 сектор занимает уже 4Кб. Соответственно и размер кластера будет кратен этой величине.
Здесь мы можем наблюдать интересный момент, позволяющий уловить разницу между тем, что такое размер кластера программный и физический . Дело в том, что к каждому сектору прилагаются служебные метки и ECC-данные. Под них так же выделяется место на диске. Оно не может быть использовано для непосредственной записи файлов. И чем больше секторов, тем коэффициент полезного места меньше. Поэтому выгоднее иметь сектора большего объема. И это отлично иллюстрирует данное схематическое сравнение разных структур кластера:
Такой способ распределения секторов позволяет существенно увеличивать емкость жестких дисков. И соответственно снизить условную себестоимость 1 Тб памяти.
Другие новшества технологий кластеризации Windows.
Выше мы перечислили только самые важные и крупные новшества в области кластеризации в Windows Server 2012. Другие менее крупные нововведения, однако, тоже появились не случайно.
Была расширена поддержка виртуализации за счет существенного упрощения создания гостевых кластеров (из виртуальных машин). В отличие от Windows Server 2008 R2, где для этого нужно было предоставить iSCSI Target в общее пользование виртуальных машин, в операционной системе Windows Server 2012 появилась функция, позволяющая виртуализировать FC-контроллер (по аналогии с сетевыми адаптерами), за счет чего виртуальные машины получают возможность непосредственного доступ к LUN. Реализован и более простой вариант с использованием общей сетевой папки SMB 3.0 для гостевых Windows Server 2012.
Одной из важных, но нетривиальных задач является установка программных обновлений в кластере. При этом может потребоваться перезагрузка узлов, поэтому процедура должна контролироваться. В операционной системе Windows Server 2012 предлагается инструмент Cluster-Aware Updating, который работает следующим образом: один из узлов назначается координатором и следит за наличием обновлений, загружает их на остальные узлы и выполняет поочередное обновление узлов, начиная с тех, которые загружены меньше всего. Благодаря этому доступность кластера сохраняется на максимально возможном уровне в течение всего процесса обновления.
Есть новшества и в управлении кворумом. Например, реализована возможность давать право голоса только некоторым узлам. Это может быть полезно при размещении отдельных узлов на удаленной площадке, но имеет наибольшую ценность при реализации новой модели динамического кворума. Основная идея динамического кворума состоит в том, что узел, прекративший свою работу и недоступный в течение определенного промежутка времени по любой причине, теряет право голоса вплоть до повторного подключения. Таким образом, общее число голосов сокращается и кластер сохраняет доступность максимально долго.
Новшества в Windows Server 2012 R2.
Операционная система Windows Server 2012 R2 не является простым обновлением Windows Server 2012, а представляет собой полноценную новую операционную систему. Новшества, реализованные в Windows Server 2012 R2 переводят некоторые возможности серверной платформы на качественно новый уровень. В первую очередь это касается SOFC и Hyper-V.
Высокодоступные виртуальные машины.
Упрощена процедура создания гостевых кластеров, поскольку теперь появилась возможность использовать в качестве общего хранилища обычные VHDX, которые внутри виртуальной машины будут представлены как Shared SAS-диски. При этом сами VHDX должны быть размещены на CSV или в общих папках SMB 3.0. При этом в виртуальных машинах могут использоваться как Windows Server 2012 R2, так и Windows Server 2012 (с обновленными интеграционными компонентами).
Опция DrainOnShutdown призвана избавить системных администраторов от ошибок и лишней работы. Функция активирована по умолчанию и при плановых перезагрузках или выключениях заранее переводит узел в такой режим обслуживания при котором эвакуируются все кластеризованные роли. При этом происходит миграция активных виртуальных машин на другие узлы кластера Hyper-V.
Также в новой операционной системе Windows Server 2012 R2 Hyper-V производит мониторинг сетевых интерфейсов в виртуальных машинах и в случае возникновения проблемы запускает процесс их миграции на узел, где доступна внешняя сеть.
Кворум.
Кроме динамического кворума в Windows Server 2012 R2 реализован еще и динамический диск-свидетель (witness). При изменении числа узлов его голос может быть автоматически учтен, так, чтобы общее число голосов оставалось нечетным. В случае, если сам диск окажется недоступным, его голос будет просто обнулен. Такая схема позволяет полностью положиться на автоматические механизмы, отказавшись от моделей кворума.
Увеличена надежность работы кластеров, размещенных на двух площадках. Часто при такой реализации на каждой площадке находится ровно половина узлов, поэтому нарушения коммуникации между площадками может возникнуть проблема с формированием кворума. Хотя с большинством подобных ситуаций успешно справляется механизм динамического кворума, в Windows Server 2012 R2 существует возможность назначить одной из площадок низкий приоритет, для того, чтобы в случае сбоя кластер всегда функционировал на основной площадке. В случае, если кластер был запущен с принудительным кворумом, то при восстановлении связи с удаленной площадкой службы кластера будут перезапущены в автоматическом режиме и весь кластер будет вновь объединен.
CSV 2.1
Существенные изменения коснулись и реализации CSV. Теперь роли владельцев томов равномерно распределяются по узлам в автоматическом режиме, в соответствии с изменением их числа. Увеличена отказоустойчивость CSV благодаря тому, что на каждом узле кластера запускается по два экземпляра серверной службы. Один используется для обслуживания клиентского SMB-трафика, другой обеспечивает коммуникацию между узлами. При этом обязательно производится мониторинг службы и в случае сбоя роль владельца CSV мигрирует на другой узел.
Целый ряд новшеств в CSV обеспечивает более эффективное использование SOFC и Storage Spaces. Добавлена поддержка файловой системы ReFS, которая обладает более совершенной, чем NTFS внутренней организацией. Скорее всего постепенно эта файловая система займет ведущее положение в продуктах компании Microsoft. Также в Windows Server 2012 R2 реализован механизм дедупликации, который ранее был прерогативой всецелевого файлового сервера. Активация дедупликации приводит к отключению CSV Block Cache, однако в некоторых случаях она может быть достаточно эффективной. Тома CSV могут создаваться на дисковых пространствах с контролем четности.
В Windows Server 2012 R2 возможность комбинировать накопители различных типов приобрела особый смысл с многоуровневыми пространствами. Появилась возможность формировать два уровня быстрый (на основе SSD) и емкий (на основе жестких дисках) и при создании виртуального диска выделять определенный объем из каждого из них. Далее в соответствии с некоторым расписанием содержимое виртуального диска будет анализироваться и размещаться блоками по 1 МБ на более быстрых или медленных носителях в зависимости от востребованности. Другим применением многоуровневых пространств является реализация кэша с обратной записью на SSD. В моменты пиковых нагрузок запись осуществляется на быстрые твердотельные накопители, а позже холодные данные перемещаются на более медленные жесткие диски.
Новшества, касающиеся CSV и Storage Spaces, являются наиболее существенными в Windows Server 2012 R2. На их основе можно разворачивать не просто надежные файловые серверы, а мощные и гибкие системы хранения данных с прекрасными возможностями масштабирования и отличной отказоустойчивостью, предоставляющие в распоряжение пользователя широкий спектр современных инструментов.
Преимущества [ править ]
Кластеры в первую очередь разрабатываются с учетом производительности, но установка основана на многих других факторах. Отказоустойчивость ( способность системы продолжать работу с неисправным узлом ) обеспечивает масштабируемость , а в ситуациях высокой производительности — низкую частоту процедур обслуживания, консолидацию ресурсов (например, RAID ) и централизованное управление. Преимущества включают возможность восстановления данных в случае аварии и обеспечение параллельной обработки данных и высокую производительность обработки. [14] [15]
Что касается масштабируемости, кластеры обеспечивают это возможностью добавлять узлы по горизонтали. Это означает, что к кластеру можно добавить больше компьютеров, чтобы улучшить его производительность, избыточность и отказоустойчивость. Это может быть недорогое решение для более производительного кластера по сравнению с масштабированием одного узла в кластере. Это свойство компьютерных кластеров позволяет выполнять большие вычислительные нагрузки на большем количестве менее производительных компьютеров.
При добавлении нового узла в кластер надежность увеличивается, поскольку нет необходимости отключать весь кластер. Один узел может быть отключен для обслуживания, а остальная часть кластера берет на себя нагрузку этого отдельного узла.
Если у вас есть большое количество компьютеров, сгруппированных вместе, это позволяет использовать распределенные файловые системы и RAID , которые могут повысить надежность и скорость кластера.
Компоненты кластера
В целом, для работы кластера необходимы различные программные и аппаратные компоненты:
- узлы
- хранилище
- операционные системы
- сетевые соединения
- протоколы связи и сервисы
- Приложения
- среда параллельного программирования
Это могут быть простые компьютеры, многопроцессорные системы или рабочие станции . В информатике, в самом общем смысле, узел — это точка пересечения или объединения нескольких элементов, которые собираются вместе в одном месте. Теперь, в области вычислений, слово «узел» может относиться к разным понятиям в зависимости от области, в которой мы движемся:
- В компьютерных сетях каждая из машин является узлом, а если сеть представляет собой Интернет, то каждый сервер также является узлом.
- В динамических структурах данных узел представляет собой запись, содержащую интересующие данные и хотя бы один указатель на ссылку (точку) на другой узел. Если структура имеет только один указатель, единственная структура, которую можно построить с ее помощью, — это список, если узел имеет более одного указателя, можно построить более сложные структуры, такие как деревья или графы.
Кластер может состоять из выделенных узлов или невыделенных узлов.
В кластере с выделенными узлами узлы не имеют клавиатуры, мыши или монитора, и их использование предназначено исключительно для выполнения задач, связанных с кластером. В то время как в кластере с невыделенными узлами узлы имеют клавиатуру, мышь и монитор, и их использование не предназначено исключительно для выполнения задач, связанных с кластером, кластер использует тактовые циклы, которые не использует пользователь компьютера. вы используете для выполнения своих задач.
Следует уточнить, что при проектировании кластера узлы должны иметь схожие характеристики, то есть иметь определенное сходство по архитектуре и операционным системам, так как при формировании кластера с совершенно разнородными узлами (существует большая разница между мощностями процессоров, памяти, жесткого диска) будет неэффективным, потому что промежуточное ПО будет делегировать или назначать все процессы узлу с наибольшей вычислительной мощностью и будет распределять только тогда, когда он насыщен процессами; именно поэтому рекомендуется создать группу компьютеров, максимально похожих друг на друга.
Хранилище
Хранилище может состоять из NAS , SAN или внутреннего хранилища на сервере. Наиболее часто используемый протокол — NFS (сетевая файловая система), файловая система, совместно используемая сервером и узлами. Однако существуют специфичные для кластера файловые системы, такие как Lustre (CFS) и PVFS2.
Технологии поддержки хранения на жестких дисках:
-
: скорости 33, 66, 100, 133 и 166 МБ /с : скорости 150, 300 и 600 МБ/с — скорости 160, 320, 640 МБ/с. Обеспечивает высокие урожаи. : сочетает в себе SATA-II и SCSI. Скорость 300 и 600 МБ/с
- Ленточные накопители ( DLT ) используются для резервного копирования из-за их низкой стоимости.
NAS (сетевое хранилище) — это специальное устройство, предназначенное для хранения через сеть (обычно TCP/IP ), которое использует оптимизированную операционную систему для предоставления доступа через протоколы CIFS , NFS , FTP или TFTP .
Со своей стороны, DAS (хранилище с прямым подключением) состоит из подключения внешних устройств хранения SCSI или к SAN ( сети хранения данных: «сеть хранения данных») через волоконно-оптический канал . Эти соединения являются выделенными.
В то время как NAS поддерживает совместное использование хранилища, использование сети и более простое управление, DAS обеспечивает более высокую производительность и надежность, не разделяя ресурсы.
Операционная система
Операционная система должна быть многопоточной и многопользовательской . Другими желательными функциями являются простота использования и доступность. Операционная система — это программа или набор компьютерных программ, предназначенных для эффективного и безопасного управления ее ресурсами. Он начинает работать, когда загрузчик загружает свое ядро в память . и управляет аппаратным обеспечением машины с самых базовых уровней, а также позволяет взаимодействовать с пользователем. Обычно его можно найти в большинстве электронных устройств, в которых для работы используются микропроцессоры, поскольку благодаря им мы можем понять машину и то, что она выполняет свои функции (мобильные телефоны, DVD-плееры, радиоприемники, компьютеры и т. д.).
Примеры
Сетевые соединения
Узлы кластера могут быть связаны с помощью простой сети Ethernet с общими картами (сетевыми адаптерами или сетевыми адаптерами), либо могут использоваться специальные высокоскоростные технологии, такие как Fast Ethernet , Gigabit Ethernet , Myrinet , InfiniBand , SCI и т . д.
- Сегодня они являются наиболее широко используемыми сетями из-за их относительно низкой стоимости. Однако их технология ограничивает размер пакета, они выполняют чрезмерную проверку ошибок, а их протоколы неэффективны, а их скорость передачи может ограничивать производительность кластеров. Для приложений с крупнозернистым параллелизмом это может быть удачным решением.
- На сегодняшний день наиболее широко используемым вариантом является Gigabit Ethernet (1 Гбит/с), а также появляется решение 10 Gigabit Ethernet (10 Гбит /с) . Задержка этих технологий составляет от 30 до 100 мкс, в зависимости от используемого протокола связи.
- В любом случае, это сеть администрирования по преимуществу, поэтому, даже если это не высокопроизводительное сетевое решение для связи, это сеть, предназначенная для административных задач.
- Его задержка составляет от 99 до 10 мкс, а пропускная способность — от 2 до 10 Гбит/с (для Myrinet 2000 и Myri-10G соответственно).
- Сегодня это наиболее используемая сеть с низкой задержкой, как в кластерах, так и в MPP; он присутствует более чем в половине систем из списка top500. Он имеет две низкоуровневые коммуникационные библиотеки (GM и MX). MPICH-GM, MPICH-MX, Sockets-GM и Sockets MX реализованы поверх этих библиотек, чтобы использовать преимущества замечательных возможностей Myrinet. Существуют также эмуляции IP через TCP/IP, IPoGM и IPoMX.
- Это сеть, созданная на основе стандарта, разработанного специально для осуществления связи в кластерах. Одним из его самых больших преимуществ является то, что путем агрегирования каналов (x1, x4 и x12) он позволяет получить очень высокую пропускную способность. Базовое соединение имеет эффективную скорость 2 Гбит/с, а при «четверном соединении» x12 достигает 96 Гбит/с. Однако запуски не очень высокие, они составляют около 10 мкс.
- Определяет соединение между вычислительным узлом и узлом ввода-вывода. Соединение идет от адаптера хост-канала (HCA) к адаптеру целевого канала (TCA). В основном он используется для доступа к дисковым массивам SAS.
- Его теоретическая задержка составляет 1,43 мкс, а пропускная способность — 5333 Мбит /с в обоих направлениях. Благодаря возможности настройки топологий «кольцо» (1D), «тор» (2D) и «гиперкуб» (3D) без необходимости использования коммутатора сеть подходит для малых и средних кластеров.
- Будучи сетью с чрезвычайно низкой задержкой, она имеет преимущества перед Myrinet в небольших кластерах, поскольку имеет топологию «точка-точка » и не требует покупки коммутатора. Программное обеспечение на SCI менее развито, чем на Myrinet, но полученная производительность выше, особенно с точки зрения SCI Sockets (которые обеспечивают запуск в 3 микросекунды) и ScaMPI, высокопроизводительной библиотеки MPI.
- Кроме того, с помощью механизма предварительной загрузки (LD_PRELOAD) можно обеспечить, чтобы все системные коммуникации проходили через SCI-SOCKETS (прозрачность для пользователя).
- Единый интерфейс доступа к системе, называемый SSI ( Single System Image ), который дает пользователю ощущение, что он использует один очень мощный компьютер;
- Инструменты для оптимизации и обслуживания системы: миграция процессов, чекпойнт-рестарт (замораживание одного или нескольких процессов, перенос их на другой сервер и продолжение их работы на новом хосте), балансировка нагрузки, отказоустойчивость и т. д.;
- Масштабируемость: он должен автоматически обнаруживать новые серверы, подключенные к кластеру, чтобы продолжить его использование.
- сбалансировать нагрузку: если один сервер сильно загружен процессами, а другой простаивает, процессы можно перенести на последний, чтобы разгрузить первый и оптимизировать производительность;
- Обслуживание сервера: если на сервере запущены процессы, требующие обслуживания или обновления, можно перенести процессы на другой сервер и приступить к отключению первого от кластера;
- Приоритезация заданий: если у вас в кластере запущено несколько процессов, но один из них важнее других, этот процесс можно перенести на серверы, у которых больше или лучше ресурсы, чтобы ускорить его обработку.
-
(Myrinet 2000 и Myri-10G).
-
(масштабируемый согласованный интерфейс) стандарт IEEE 1596-1992
ПО промежуточного слоя
Промежуточное ПО — это программное обеспечение , которое обычно действует между операционной системой и приложениями, чтобы предоставить кластеру следующее:
Существуют различные типы промежуточного программного обеспечения, такие как: MOSIX , OpenMOSIX , Condor , OpenSSI и т. д.
Промежуточное ПО принимает входящие задания в кластер и перераспределяет их, чтобы процесс выполнялся быстрее, а система не перегружалась на сервере. Это делается заданными в системе политиками (автоматически или администратором), которые указывают ей, куда и как распределять процессы, системой мониторинга, контролирующей загрузку каждого процессора и количество процессов в нем.
Промежуточное ПО также должно иметь возможность переносить процессы между серверами для различных целей:
Среды параллельного программирования
Среды параллельного программирования позволяют реализовать алгоритмы, использующие общие ресурсы: ЦП ( центральный процессор: «центральный процессор»), память, данные и службы.