Для чего нужен кластер из компьютеров
Что нужно чтобы вскопать огород? При наличии огорода, нужны рабочие инструменты и рабочая сила (работники). А что делать если нужно вскопать быстрей или больше? Можно позвать друзей или нанять других людей, то есть увеличить число работников. Вот это и является примером высокопроизводительного вскапывания огорода. Не всегда можно увеличивать производительность вскапывания огорода путём поиска сильных работников, так как производительность каждого отдельно взятого работника ограничена. Потому и приходится прибегать к услугам большего числа работников.
Аналогично и с высокопроизводительными вычислениями. Работниками (анг. workers) так и называются отдельные компьютеры и процессорные ядра в вычислительных кластерах, если опираться на терминологию пакета МАТЛАБ (англ. MATLAB). В документации других кластеров эти ядра и компьютеры называются нодами (англ. nodes), так и буду их называть в этой заметке.
Просто о сложном: высокопроизводительные вычисления для инженерных и научно-исследовательских задач
Введение
На Хабрахабре уже много писалось о высокопроизводительных, распределённых и параллельных вычислениях (ВВ). freetonik уже сделал подробное и наглядное введение в параллельные вычисления и продолжение тут, ВВ были рассмотрены автором keleg в тут, теория распределённых вычислений была раскрыта в заметке автора mkosyakov, Melges описал опыт организации параллельных вычислений по сети на Си и XakepRU описал как можно распараллелить процессы в Linux. Перечитав их я понял что нет заметки которая могла бы помочь начать использовать ВВ для решения инженерных и научных задач. Это скорее всего общая особенность многих источников информации по данной тематике. Программисты пишут хорошие программы которые выполняют возложенные на них задачи. Университетские преподаватели доступно объясняют как и почему стоит использовать высокопроизводительные вычисления. Но как только исследователи осознают что им пора воспользоваться ВВ, то они сталкиваются с малым числом 'мостиков' которые связывают понимание ВВ с непосредственным использованием ВВ систем в их работе. В университетах студенты могут найти такой 'мостик' на лабораторных и практических работах. А я попробую восполнить этот пробел в надежде что материал будет полезным для тех кто этого не изучал и поможет им начать пользоваться ВВ. Сначала будет краткое введение в ВВ, после чего будут рассмотрены возможности использования МАТЛАБ, HPCondor суперкомпьютеров.
Высокопроизводительные вычисления (ВВ) приходят на помощь в тех случаях когда нужно сократить время расчётов или получить доступ к большему объёму памяти. Например, ваша программа может проводить необходимые вычисления в течение недели, но вам нужно получить результаты завтра. Если разделить эту программу на части и выполнять каждую из них на отдельном ноде, то теоретически можно ускорить расчёты пропорционально числу вовлечённых нодов. Но это только теоретически, а на практике этому всегда что-то мешает (о чём подробно писалось тут). Тут стоит упомянуть и другой случай, когда ваша программа требует большой объём оперативной памяти. Например, в вашем компьютере установленно только 4 Гб оперативной памяти, но для расчётов нужно хотя бы 64 Гб. В системах ВВ на каждом ноде установленна память определённой ёмкости. Так если каждому ноду доступно 2 Гб памяти, то опять же можно разделить программу на 32 части, каждая из которых будет выполняться на отдельном ноде, будет взаимодействовать с другими частями, обмениваться данными и, в конечном итоге, программа в целом будет иметь доступ к 64 Гб памяти.
Из этих примеров вы наверняка поняли что высокопроизводительные вычисления – это вычисления проводимые на компьютерных системах со спецификациями, которые значительно превышают обычные компьютеры. Это понятие условное, возможно есть и более точное определение, но я его сейчас не смог найти. Существуют параллельные, распределённые ВВ, а так же их комбинации.
Параллельные вычисления предусматривают разработку программ, которые во время их выполнения представляют собой несколько параллельных и взаимодействующих между собой процессов. Например, моделирование характеристик ячейки солнечной батареи предусматривает взаимодействие трёх моделей описывающих: перенос носителей заряда, распространение падающего света внутри ячейки, температурные эффекты, растяжение-сжатие. Так перенос носителей, растяжение-сжатие и показатель преломления материала, который используется в оптической модели падающего света, зависят от температуры и модели, описывающие эти эффекты, должны взаимодействовать друг с другом в процессе расчёта. Чтобы ускорить расчёты можно код модели описывающей транспорт носителей выполнять на одном ноде, код отвечающий за распространение света – на другом, температурную модель – на третьем, и так далее. То есть, ноды будут выполнять взаимодействующие расчёты параллельно.
Распределённые вычисления предусматривают использование нескольких не взаимодействующих друг с другом нодов и процессов. Очень часто в таком случае выполняется один и тот же код на разных нодах. Например, нам нужно оценить растяжение и сжатие той же ячейки солнечной батареи в зависимости от температуры. В таком случае, температура – входной параметр модели и один и тот же программный код этой модели можно выполнить на разных нодах для разных значений температуры.
- как конечный пользователь взаимодействует с системой ВВ;
- какие ВВ системы доступны и какие у них ограничения;
- о кластерах построенных при помощи ПО Кондор (англ. Condor) и МАТЛАБ (выбор пал на них просто по причине опыта автора с ними);
- немного о суперкомпьютерах и гридах;
- и о том как всем этим хозяйством можно можно воспользоваться.
Взаимодействие пользователя с системой высокопроизводительных вычислений
- подготавливать программы для запуска на системах ВВ;
- запускать расчёты на системах ВВ либо подключаться к системам ВВ для запуска программ;
- на котором он будет обрабатывать результаты расчётов.
Тут многое зависит от личного предпочтения пользователя, доступности нужного программного обеспечения и других требований. Есть возможность выбора языка программирования, операционной системы рабочего компьютера и кластера, используемых программных библиотек и ПО для организации кластеров. Лично я всё время пытаюсь писать программы на С или С++ с использованием MPI и openMP для Линукс (тут и тут уже есть хорошие статьи по этой теме этих пап и мам высокопроизводительных вычислений ), но по разным причинам это не всегда получается. Типичная ситуация – приходит шеф в пятницу и говорит что нам срочно нужны результаты. Заканчивается это тем что пишется программа в МАТЛАБ для проведения нужных расчётов. А чтобы быстрей получить результаты, эта программа работает на кластере МАТЛАБ нашей организации до понедельника.
Что касается операционной системы рабочего компьютера пользователя, то в большинстве случаев удобней всего использовать ту же операционную систему и её дистрибутив что установленна на системе ВВ. В данный момент большинство ВВ систем работает под управлением различных дистрибутивов Линукс. Если на нашем кластере стоит Scientific Linux, то и на рабочий компьютер проще поставить эту же систему чтобы в дальнейшем не путаться в командах. Если планируете использовать кластер на базе МАТЛАБ, то выбор операционной системы роли не играет, так как программы написанные на МАТЛАБ могут выполняться на компьютерах с любыми ОС (доступными для установки МАТЛАБ, естественно).
Если же вы выбираете смешанную схему, при которой у вас на компьютере установлена ОС семейства MS Windows, а ВВ система построена на ОС Линукс, то вам понадобится клиент для подключения к удалённой системе (например, PuTTY), и, возможно X-сервер или же сразу Cygwin, в котором это всё есть. В выборе программного обеспечения вам всегда помогут локальные администраторы ВВ системы.
Важный момент: ВВ системы обычно либо не поддерживают программы требующие работы в интерактивном режиме (которые в процессе выполнения запрашивают ввод данных, ожидают других действий пользователя таких как нажатие клавиш или манипуляций мышкой) или поддерживают их ограниченно. Аналогично и в отношении графического интерфейса – его использование чаще всего не предусмотренно и ВВ системы используются в текстовом режиме из командной строки (исключение — тот же МАТЛАБ). Перед использованием вашей программы в ВВ системе, она должна быть отлажена и потом преобразована так чтобы она могла быть запущенна на ВВ системе и без дальнейшего вмешательства человека она провела расчёты и сохранила результаты в файлах либо передала их пользователю другим способом.
К производительности компьютера пользователя требования минимальны, так как основные расчёты всё равно планируется проводить на системах ВВ. Следить за состоянием расчётов, запускать и прерывать их можно с компьютера минимальной конфигурации и с мобильного телефона.
Некоторые системы ВВ
Общий обзор
Чаще всего для проведения ВВ используются суперкомпьютеры, компьютерные кластеры и гриды (англ. computing grids).
Суперкомпьютеры – компьютерные системы, значительно превышающие большинство существующих компьютеров по своим параметрам таким как производительность, доступная оперативная память, доступное число процессоров. Для большей информации о них вы можете посмотреть список пятиста самых производительных суперкомпьютеров мира.
Компьютерный кластер – группа компьютеров, которые могут взаимодействовать друг с другом для наращивания доступной памяти и числа процессоров вовлечённых в работу. Чаще всего такие кластеры строятся внутри исследовательских групп или организаций.
Гриды – это группы кластеров и суперкомпьютеров, разбросанных по разным городам и странам. Так, например, вы можете передать свою вычислительную задачу на сервер в Швейцарии, но она будет выполняться либо на кластерах в Германии, Франции или Польше. Наиболее известный пример грида – европейская грид-система EGEE, объединяющая в себе около сорока тысяч процессоров и несколько петабайтов дискового пространства.
Конечному пользователю часто сложно или не возможно различить суперкомпьютеры и кластеры. Вот три примера:
1. Не редко суперкомпьютерами называют и группу компьютеров подключённых друг к другу через высокоскоростные сети связи, что по сути — тот же самый компьютерный кластер;
2. В то же время существуют кластеры построенные на базе программного обеспечения HPCondor, это так же группа компьютеров взаимодействующих с сервером в локальной сети (часто – медленной сети) и не кто не рискнёт назвать такие кластеры суперкомпьютерами;
3. Есть же суперкомпьютеры NVIDIA (которые имеют системный блок большего размера чем обычные офисные компьютеры) у которых вся вычислительная система не разбросана по сети, а умещается в этом системном блоке.
Если взять примеры 2 и 3, то разница между суперкомпьютером и кластером очевидна. В первом и третьем, особой грани не видно, опять же обе системы из этих двух примеров называют суперкомпьютерами.
Кластеры HPCondor (англ. Condor, после 2012 года — HTCondor)
Программное обеспечение для организации такого кластера можно загрузить бесплатно со страницы проекта. Кластеры данного типа состоят из рабочих компьютеров и сервера. К комментариях dunordavind сделал важное уточнение: такие системы ВВ — не кластеры в классическом смысле, а скорее менеджеры ресурсов (но чтобы не переписывать весь текст я далее всё равно буду называть их кластерами). Преимущество такого кластера в том что рабочими компьютерами могут выступать обыкновенные офисные и лабораторные компьютеры на которых установленно клиентское ПО. В дневное время эти компьютеры могут использоваться для основной работы, но как только ими перестают пользоваться (это зависит от настроек) сервер начинает запускать на этих компьютерах задачи которые были переданы ему ранее. Обязательным условием использования этого кластера является установка клиентского ПО и на тот компьютер, с которого пользователи передают задачи. То есть и их компьютер должен быть частью кластера. Поддерживаемые операционные системы: MS Windows, MacOS и Linux.
Для выполнения программы, эта программа должна быть скомпилирована в исполняемый код для нужной ОС и вместе с необходимыми библиотеками передана на сервер. Это применимо и к программам написанным для МАТЛАБ – вам так же необходимо откомпилировать их используя компилятор C, который поставляется с МАТЛАБ. Для запуска этой программы в кластере, необходимо написать простой конфигурационный скрипт, в котором записаны требования к среде выполнения вашей программы (размер оперативной памяти, операционная система и так далее) и список передаваемых вместе с этой программой файлов. В качестве примера ниже приведён текст из одного из таких файлов (назовём его cost_top.txt):
Содержимое файла cost_top.bat, который выполняется на ноде:
Скорее всего вы поймёте, что первая строка в этом скрипте отвечает за добавление нужных путей в переменную окружения, вторая – за запуск нужной нам программы.
Для передачи вашей задачи на сервер кластера, необходимо будет в командной строке набрать 'condor_submit cost_top.txt'. После этого ваша задача будет поставлена в очередь и через некоторое время сервер будет готов запустить вашу задачу на клиентских компьютерах. Время ожидания в очереди зависит приоритета каждого из пользователей и нагрузки на кластер и выбирается системой балансировки задач сервера.
- с момента постановки задачи в очередь и до момента окончания расчёта ваш клиентский компьютер должен быть включён и подкючен к локальной сети так как сервер и клиент обмениваются файлами;
- данный кластер поддерживает только распределённые ВВ задачи;
- есть сложности в использовании какой-либо сторонней программы (отличной от написанной и откопелированной вами) и программ требующих множества библиотек.
Кластеры МАТЛАБ
МАТЛАБ сам по себе способен создать кластер. Для этого вам понадобится соответствующие библиотеки и сервер — Distributed Computing Toolbox и Distributed Computing Server. Сейчас современные процессоры компьютеров имеют более чем одно ядро и МАТЛАБ способен развернуть ваш собственный локальный кластер прямо на базе вашего рабочего компьютера. Такая конфигурация кластера известна как локальная конфигурация. Она удобна в тех случаях когда хочется немного ускорить расчёты без особых усилий как и тогда когда требуется протестировать программу перед её стартом на более серьёзной ВВ системе такой как суперкомпьютер или кластер.
Наряду с локальной конфигурацией существует и другие конфигурации. Например для кластера объединяющего группу компьютеров в локальной сети, группу компьютеров в кластере или в гриде. Если у администраторов есть возможность и они не ленятся, то они обычно настраивают кластеры МАТЛАБ и проводят обучающие курсы для того чтобы пользователям было легко пользоваться такими кластерами.
- клиентский компьютер, с которого передаются задачи для расчёта, может быть выключен после передачи задачи и пользователь может забрать результаты расчётов позже;
- могут выполнять как распределённые так и параллельные вычислительные задачи;
- пользователям МАТЛАБ легче начать пользоваться такими кластерами, так как язык программирования уже знаком;
- программы не требуют компиляции;
- адаптация программы для параллельных расчётов в которой уже есть операторы цикла 'for' очень проста – достаточно заменить такой оператор на 'parfor' и добавить пару строк для инициализации кластера и его закрытия после окончания работы.
Например, код без использования parfor:
А теперь то же самое с использованием parfor и четырёх нодов:
- МАТЛАБ – не бесплатный продукт и части пользователей он просто не по карману;
- кластерное ПО не поставляется с программой для балансировки нагрузки (она может быть установленна отдельно), что приводит к ситуациям когда некоторые пользователи занимают все ноды кластера и блокируют доступ других пользователей.
Суперкомпьютеры и гриды
Как уже было выше упомянуто, иногда сложно найти отличие между суперкомпьютером, вычислительным кластером и гридом. С этой стороны окна терминала все они выглядят одинаково. Все они имеют большое число процессоров и памяти в ВВ системе. Среди установленного программного обеспечения у них есть компиляторы и библиотеки MPI и OpenMP. Иногда установлен МАТЛАБ и другие программы поддерживающие использование группы нод и их памяти.
- пользователь подключается (как правило по SSH) к специальным нодам (англ. login nodes) на которых он интерактивно может выполнять часть команд и с которых может контролировать свои расчёты;
- загружает модули, необходимые для выполнения той или иной задачи, например, компилятор gcc и библиотеку MPI;
- если необходимо, то компилирует свою программу с поддержкой нужных библиотек;
- аналогично кластеру HPCondor, готовит файл настроек и команд для выполнения своей программы (англ. job submiossion file);
- передаёт этот файл настроек и команд при помощи команды 'qsub имя_файла' в очередь на выполнение;
- как только выполнение программы будет завершено, пользователь может получить результаты её выполнения (и проще их сохранять в файлы).
Файлы настроек аналогичны файлам кластеров HPCondor. Например для того чтобы запустить вышеприведённый пример с parfor можно воспользоваться следующим файлом:
Во второй строке указывается максимальное время необходимое для выполнения данной задачи, а в третьей – команда которую необходимо выполнить на данной системе для запуска нужного пользователю программного кода МАТЛАБ.
Ещё один пример файла для запуска программы которая использует библиотеки MPI:
Во второй строке – максимальное время необходимое для расчёта, в третьей – указание имени среды для параллельных расчётов (задано администраторами) и число запрашиваемых нодов, далее 4 строки с присвоением нужного значения переменным окружения, после чего две строки которые отвечают за подключение нужных модулей и в конце скрипта – запуск нужной программы которая будет использовать 12 нодов.
Заключение
Нельзя объять необъятное, но пытаться можно и нужно. В этой заметке я попытался сделать обзор систем высокопроизводительных вычислений, помочь начинающим пользователям разобраться со спектром возможностей и понять что доступно и как это можно использовать. Как вы видите, даже если у вас нет доступа к суперкомпьютерам и гридам, то можно построить свой кластер на основе МАТЛАБ или бесплатного ПО Кондор.
p.s. Если можете дополнить эту заметку или нашли ошибку, то прошу написать об этом ниже. В конце концов это будет только на пользу знаниям и пониманию вопроса и это даст возможность улучшить заметку.
p.p.s. Есть ещё возможность использования технологии CUDA для ускорения расчётов в С/C++ и МАТЛАБ путём вовлечения ядер графического процессора в работу, но об этом написано много.
Вычислительный кластер – это набор соединенных между собой компьютеров (серверов), которые работают вместе и могут рассматриваться как единая система. В отличие от грид-вычислений, все узлы компьютерного кластера выполняют одну и ту же задачу и управляются одной системой управления.
Серверы кластера обычно соединяются между собой по быстродействующей локальной сети, причем на каждом из серверов работает собственный экземпляр операционной системы. В большинстве случаев все вычислительные узлы кластера используют одинаковое оборудование и одну и ту же операционную систему. Однако в некоторых инсталляциях, например, с использованием платформы приложений для организации кластеров OSCAR (Open Source Cluster Application Resources), могут использоваться различные операционные системы или разное серверное оборудование.
Кластеры обычно развертываются для большей производительности и доступности, чем то, что можно получить от одного компьютера, пусть даже очень мощного. Часто такое решение более экономично, чем отдельные компьютеры.
Высокопроизводительные кластеры (HPC)
Высокопроизводительные вычисления HPC (High-performance computing) – это способность обрабатывать данные и выполнять сложные расчеты с высокой скоростью. Это понятие весьма относительное. Например, обычный лэптоп с тактовой частотой процессора в 3 ГГц может производить 3 миллиарда вычислений в секунду. Для обычного человека это очень большая скорость вычислений, однако она меркнет перед решениями HPC, которые могут выполнять квадриллионы вычислений в секунду.
Одно из наиболее известных решений HPC – это суперкомпьютер. Он содержит тысячи вычислительных узлов, которые работают вместе над одной или несколькими задачами, что называется параллельными вычислениями.
HPC очень важны для прогресса в научных, промышленных и общественных областях.
Такие технологии, как интернет вещей IoT (Internet of Things), искусственный интеллект AI (artificial intelligence), и аддитивное производство (3D imaging), требуют значительных объемов обработки данных, которые экспоненциально растут со временем. Для таких приложений, как живой стриминг спортивных событий в высоком разрешении, отслеживание зарождающихся тайфунов, тестирование новых продуктов, анализ финансовых рынков, – способность быстро обрабатывать большие объемы данных является критической.
Чтобы создать HPC-кластер, необходимо объединить много мощных компьютеров при помощи высокоскоростной сети с широкой полосой пропускания. В этом кластере на многих узлах одновременно работают приложения и алгоритмы, быстро выполняющие различные задачи.
Чтобы поддерживать высокую скорость вычислений, каждый компонент сети должен работать синхронно с другими. Например, компонент системы хранения должен быть способен записывать и извлекать данные так, чтобы не задерживать вычислительный узел. Точно так же и сеть должна быстро передавать данные между компонентами НРС-кластера. Если один компонент будет подтормаживать, он снизит производительность работы всего кластера.
Существует много технических решений построения НРС-кластера для тех или иных приложений. Однако типовая архитектура НРС-кластера выглядит примерно так, как показано на рисунке ниже.
Схемы архитектур кластеров серверов 1С
Результаты тестирования схем архитектур кластеров серверов 1С
Результаты тестирования по т.н. «тесту Гилева» и методике специализированного центра тестирования «Тест центр» с использованием инструментария 1С: КИП приведены в таблице ниже.
«Тест Гилева» оценивает скорости работы в одном потоке, включая скорость отрисовки интерфейса пользователя на мониторе, обслуживание ресурсов виртуальной среды, повторный ввод документов, и т.п.
С помощью теста «Тест центр» можно моделировать работу 1С:Предприятие без участия реальных пользователей, что позволяет оценивать применимость, производительность и масштабируемость информационной системы в реальных условиях.
Если рассматривать вкратце, то в рамках предложения существуют следующие типовые схемы кластеров:
Кластеры высокой доступности (High Availability cluster)
Создаются для обеспечения высокой доступности сервиса, предоставляемого кластером. Избыточное число узлов, входящих в кластер, гарантирует предоставление сервиса в случае отказа одного или нескольких серверов. Минимальное количество узлов — два, но может быть и больше.
Обычно High Availability кластер строится для Microsoft SQL server'ов, который поддерживает базы данных интернет проектов. High Availability кластер возможно построить и для Exchange систем.
Существует ещё одна разновидность High Availability SQL кластера — «зеркалирование БД» или database mirroring. Этот вид кластера не требует выделенного дискового хранилища, но для автоматического переключения в случае аварии нужен ещё один SQL сервер — следящий/witness. Такой кластер идеально подходит для WEB приложений и требует меньше затрат на создание.
Балансировка нагрузки (Network Load Balancing, NLB)
Принцип действия NLB-кластеров — распределение приходящих запросов на несколько физических или виртуальных узлов серверов. Первоначальная цель такого кластера — производительность, однако, они используются также для повышения надёжности, поскольку выход из строя одного узла приведет просто к равномерному увеличению загрузки остальных узлов. Совокупность узлов кластера часто называют кластерной фермой. Минимальное количество узлов в ферме — два. Максимальное — 32.
При размещении высоконагруженных web-проектов в режиме NLB строится ферма web-серверов на IIS 7.х
Кластеры на виртуальных машинах
Наиболее доступным и масштабируемым решением является построение кластера на основе виртуальных машин на платформе Hyper-V.
В качестве web-боксов NLB-кластера используются виртуальные машины с установленными на них Windows Web Server 2008 (IIS7.х, пользовательское приложение).
В качестве кластера баз данных используется две виртуальные машины необходимой мощности на Windows Server 2008 Standard Edition и SQL Server 2008 Standard Edition.
Отказоустойчивое единое хранилище данных на основе Storage System от NetApp или HP.
Для обеспечения бОльшей надежности все узлы кластера располагаются на различных физических серверах\узлах кластера.
Масштабируемость решения достигается путем увеличения мощности используемых виртуальных машин (вплоть до 100% мощности физического сервера), а также за счет добавления новых узлов в NLB-кластер.
С использованием средств онлайновой миграции со временем возможен перенос узлов кластера на новые, более современные физические сервера без потери работоспособности и без простоя любого узла.
Данный кластер является лучшим решением в соотношении цена/качество и рекомендуется как для критичных для бизнеса приложений, так и для относительно нагруженных web-проектов (~до 30000-50000 посетителей ежедневно).
Кластеры на физических серверах
Web-проекты с нагрузкой выше 50000 посетителей, проекты со специальными требования по безопасности требуют построения кластерных решений на выделенных серверах без потерь мощностей физических серверов на виртуализацию.
Схема построения таких кластеров аналогична схеме построения кластеров на виртуальных машинах, только в качестве узлов используются выделенные физические серверы.
Геокластеры
Каждый из узлов кластера имеет независимый выход в интернет, но при этом из сети данных кластер выглядят как единый сервер с единым адресом и контентом.
Кластер 1С "active-active" с одним сервером баз данных
Если в первую очередь требуется повышенная производительность, то лучше использовать увеличение числа вычислительных кластеров 1С с единственным сервером баз данных для повышения скорости обмена данными.
Рис. 3. Кластер 1С "active-active" с одним сервером баз данных.
Компоненты кластера
Вычислительные кластеры обычно состоят из следующих компонентов:
- узел доступа;
- вычислительные узлы;
- файловый сервер;
- файловая или объектная СХД с общим доступом;
- локальная сеть LAN.
Сервер 1С и сервер SQL на одном аппаратном сервере с SharedMemory.
В случае ограничения ресурсов на предприятии, можно использовать схему расположения сервера 1С и SQL на одном аппаратном сервере без виртуализации с общей памятью SharedMemory.
Рис. 4. Сервер 1С и сервер SQL на одном аппаратном сервере с SharedMemory.
Виды кластеров
Различают следующие основные виды кластеров:
- кластеры высокой доступности (High-availability clusters, HA);
- кластеры с балансировкой нагрузки (Load balancing clusters);
- высокопроизводительные кластеры (High performance computing clusters, HPC).
Кластеры с балансировкой нагрузки
Балансировка нагрузки – это эффективное распределение входящего сетевого трафика в группе (кластере) серверов.
Современные веб-сайты должны одновременно обслуживать сотни тысяч и даже миллионы запросов от пользователей или клиентов и не слишком задерживать их в получении контента: текста, видео или данных приложений. Чем больше серверов будут обслуживать эти запросы, тем лучше будет качество воспринимаемого сервиса для клиентов. Однако может возникнуть ситуация, когда одни серверы сайта будут работать с перегрузкой, а другие будут почти простаивать.
Балансировщик нагрузки направляет запросы клиентов равномерно на все серверы кластера, которые способны ответить на те или иные запросы. Таким образом, балансировщик максимизирует процент использования вычислительной емкости, а также обеспечивает то, что ни один сервер не оказывается перегруженным, вызывая общую деградацию производительности кластера.
Если какой-то сервер отказывает, то балансировщик перенаправляет трафик на оставшиеся серверы. Когда новый сервер добавляется к группе (кластеру), то балансировщик автоматически перераспределяет нагрузку на всех серверах с учетом вновь вступившего в работу.
Таким образом, балансировщик нагрузки выполняет следующие функции:
- Распределяет запросы клиентов и нагрузку сети эффективным образом в во всем кластере серверов.
- Обеспечивает высокую доступность и надежность посылкой запросов только на те серверы, которые находятся в режиме онлайн.
- Обеспечивает гибкость, добавляя или удаляя серверы по мере надобности.
Работа балансировщика нагрузки
Кластеры высокой доступности
Кластеры высокой доступности НА (high-availability cluster) известны также как отказоустойчивые (failover) кластеры, построенные по схеме сети с большой избыточностью (redundancy). Они применяются для критических серверных приложений, например сервера баз данных. Компьютерный кластер может называться НА-кластером, если он обеспечивает доступность приложений не менее, чем «пять девяток», т. е. приложение должно быть доступно (uptime) в течение 99,999 % времени за год.
Чрезвычайно высокая доступность в НА-кластерах достигается за счет использования специального программного обеспечения и аппаратных решений со схемами обнаружения отказов, а также благодаря работе по подготовке к отказам.
ПО для НА-кластеров обычно заблаговременно конфигурирует узел на резервном сервере и запускает на нем приложение в фоновом режиме так, чтобы основной экземпляр приложения мог немедленно переключиться на свою реплику на резервном компьютере при отказе основного.
НА-кластеры обычно используются для терминальных серверов, серверов баз данных, почтовых серверов, а также для серверов общего доступа к файлам. Они могут быть развернуты как на одном местоположении («серверной ферме»), так и в географически разнесенных местоположениях.
Но не следует думать, что технология кластера высокой доступности, или вообще кластеризация, могут служить заменой резервному копированию (backup), а также решениям катастрофоустойчивости (disaster recovery).
Кластер 1С
Кластер серверов 1С:Предприятия 8 – это логическая система, представляющая собой совокупность процессов, которые обслуживают множество баз данных.
Традиционно платформа 1С работала в режиме «клиент-сервер» и данные хранились в базе данных под управлением SQL-сервера Microsoft. Бизнес-логика при этом работала на машине-клиенте.
В версии 1С:Предприятие 8.0 впервые была использована архитектура «клиент – сервер приложений – СУБД».
Сервер 1С в платформе 8.0 построен по модели компонентного объекта СОМ+ (Component Object Model), разработанной Microsoft для того, чтобы взаимодействующие компоненты объекта могли совместно использоваться во многих программах.
Платформу 1С:Предприятие 8.0 было легко настраивать, однако, её масштабируемость, доступность и балансировка нагрузки оставляли желать лучшего.
Поэтому в версии 1С:Предприятие 8.1 была использована концепция вычислительного кластера. Сервер 1С в этой версии является платформенно-независимым, и может работать как на Windows, так и на Linux.
Процессы сервера в версии 8.1 разбиты на три вида:
- рабочий процесс, обслуживающий клиентов и исполняющий прикладной код;
- процесс агента сервера, запускающий все другие виды процессов, а также ведущий список кластеров на сервере;
- управляющий процесс «менеджер кластера».
В составе кластера может быть более одного рабочего процесса, причём, рабочие процессы могут исполняться на разных физических серверах, что позволяет обеспечить требуемую масштабируемость.
Рис. 1. Кластер 1С:Предприятие 8.1 (источник: 1С).
Центральный сервер кластера – один из компьютеров, которые входят в состав кластера. Центральный сервер обслуживает клиентские соединения, управляет работой всего кластера и хранит его реестр.
Клиентское приложение обращается к центральному серверу кластера для установки соединения с рабочим процессом. На основе анализа загруженности рабочих процессов, центральный сервер устанавливает соединение клиентского приложения к соответствующему рабочему процессу. Данный процесс может быть активирован на любом сервере кластера, в т.ч и на центральном сервере. Обслуживание соединения и аутентификация пользователя поддерживаются этим рабочим процессом до прекращения работы клиента с базой данных.
Процесс агента сервера (ragent) обеспечивает работу компьютера как составной части кластера. Процесс ragent также ведёт реестр кластеров, которые находятся на рабочем сервере.
Вычислительный кластер / High-Performance Computing cluster
Кластер построен на основе нескольких серверов, объединенных высокоскоростными линиями передач и специальным ПО. На выходе образуется единая система для комплексных вычислений. Каждый сервер в таком кластере обрабатывает задачу, которая автоматически выделяется ему из общего объема работы.
Применение: аналитика, сбор и обработка данных для Big Data, системы искусственного интеллекта, нейронные сети.
Преимущества: высокая производительность в ресурсоемких задачах, выполнение параллельных вычислений.
Специалисты компании ITELON имеют необходимый опыт и компетенцию для подбора высокопроизводительного кластерного решения для вашего бизнеса. Они разработают и внедрят отказоустойчивую высокопроизводительную систему, используя оборудование ведущих вендоров и современные технологии виртуализации. Мы рекомендуем использовать серверы HPE ProLiant DL380 Gen10 (2U), Dell PowerEdge R740 (2U), Fujitsu PRIMERGY RX2540 M4, Lenovo System x3650 M5 (2U).
Кластер серверов — это распределённая система, которая состоит из нескольких связанных между собой компьютеров (серверов) и используется как единый, унифицированный вычислительный ресурс.
Известны такие основные виды кластеров:
· Кластеры высокой доступности HA (High-availability), которые также называют отказоустойчивыми кластерами;
· Кластеры с балансировкой нагрузки LBC (Load balancing clusters);
К кластерам иногда относят также grid-системы распределённых вычислений, которые могут состоять из территориально разнесенных и некоторым образом связанных между собой компьютеров или серверов, выполняющих одну вычислительную задачу. Однако, они взаимодействуют между собой значительно меньше, чем серверы в кластерах, поэтому относить их к кластерам не совсем корректно.
Основные возможности кластера серверов:
- может работать как на нескольких, так и на одном компьютере (рабочих серверах);
- каждый сервер кластера может поддерживать работу как одного, так и нескольких рабочих процессов, которые обслуживают подключения клиентов в данном кластере;
- включение новых клиентов в рабочие процессы кластера происходит на основе анализа и прогнозирования загруженности рабочих процессов и серверов;
- процессы кластера могут быть запущены как сервис и как приложение.
Программная и аппаратная балансировка нагрузки
Балансировщики нагрузки бывают двух типов: программные и аппаратные. Программные балансировщики можно установить на любой сервер достаточной для задачи емкости. Поставщики аппаратных балансировщиков просто загружают соответствующее программное обеспечение балансировки нагрузки на серверы со специализированными процессорами. Программные балансировщики менее дорогие и более гибкие. Можно также использовать облачные решения сервисов балансировки нагрузки, такие как AWS EC2.
Примеры реализации вычислительного кластера
В лаборатории вычислительного интеллекта создан вычислительный кластер для решения сложных задач анализа данных, моделирования и оптимизации процессов и систем.
Кластер представляет собой сеть из 11 машин с распределенной файловой системой NFS. Общее число ядер CPU в кластере – 61, из них высокопроизводительных – 48. Максимальное число параллельных высокоуровневых задач (потоков) – 109. Общее число ядер графического процессора CUDA GPU – 1920 (NVidia GTX 1070 DDR5 8Gb).
На оборудовании кластера успешно решены задачи анализа больших данных (Big Data): задача распознавания сигнала от процессов рождения суперсимметричных частиц, задача классификации кристаллических структур по данным порошковой дифракции, задача распределения нагрузки электросетей путем определения выработки электроэнергии тепловыми и гидроэлектростанциями с целью минимизации расходов, задача поиска оптимального расположения массива кольцевых антенн и другие задачи.
Архитектура вычислительного кластера
Другой вычислительный НРС-кластер дает возможность выполнять расчеты в любой области физики и проводить многодисциплинарные исследования.
Графические результаты расчета реактивного двигателя, полученные на НРС-клатере (источник: БГТУ «ВОЕНМЕХ»)
На рисунке показана визуализация результатов расчета реактивного двигателя, зависимость скорости расчетов и эффективности вычислений от количества ядер процессора.
Кластер серверов представляет собой группу из нескольких машин, которые объединены в единый аппаратно-программный ресурс. Для соединения отдельных серверов в кластер применяются высокоскоростные каналы связи. Пользователи и приложения видят их как единую высокопроизводительную и надежную систему. В зависимости от назначения выделяют три вида кластеров.
Кластер с балансировкой нагрузки / Load balancing cluster
В пределах этого кластера нагрузка, которую создают сервисы и приложения, равномерно распределяется между доступными машинами. Так исключается простой одного сервера, пока второй работает на пределе возможностей. Для распределения запросов в кластере используется один или несколько входных вычислительных узлов, через которые задачи перенаправляются с одной машины на другую.
Применение: ЦОД, комплексы для ERP/CRM-систем, сервисы биллинга в телекоммуникационных системах.
Преимущества: масштабируемость, возможность использования недорогих серверов стандартной архитектуры.
Алгоритмы балансировки нагрузки
Различные алгоритмы балансировки предназначены для разных целей и достижения разных выгод. Можно назвать следующие алгоритмы балансировки:
- Round Robin – запросы распределяются по кластеру серверов последовательно.
- Least Connections – новый запрос посылается на сервер с наименьшим числом подключений клиентов, однако при этом учитывается и вычислительная мощность каждого сервера.
- Least Time – запросы посылаются на сервер, выбираемый по формуле, которая комбинирует быстроту ответа и наименьшее число активных запросов.
- Hash – распределяет запросы на основании определяемого пользователем ключа, например, IP-адреса клиента или URL запрашиваемого сайта.
- Random with Two Choices – выбираются два сервера по методу произвольного выбора и затем запрос посылается на один из них, который выбирается по критерию наименьшего числа подключений.
1С:Предприятие 8.1
В следующей версии 8.3 была улучшена масштабируемость, отказоустойчивость, балансировка нагрузки, а также усовершенствован механизм резервирования кластеров.
Масштабируемость. Масштабируемость кластера серверов в версии 8.3 реализуется следующими способами:
- увеличение количества менеджеров в кластере и распределение сервисов между ними;
- увеличение количества рабочих процессов на рабочем сервере;
- увеличение количества рабочих серверов, из которых состоит кластер;
- использование нескольких менеджеров одновременно.
Три основных способа повышения отказоустойчивости:
- резервирование самого кластера;
- резервирование рабочих процессов;
- повышение устойчивости к обрыву канала связи.
Несколько кластеров могут объединяться в группу резервирования с автоматической синхронизацией. В случае выхода из строя активного кластера, его заменяет следующий рабочий кластер группы. После восстановления отказавшего кластера, он вновь становится активным после синхронизации данных.
В версии 8.2 резервирование кластеров производилось по схеме Active/Passive для рабочего и резервного кластера. В случае недоступности рабочего кластера клиентские вызовы автоматически перенаправлялись на резервный кластер.
В новой версии 1С:Предприятие 8.3 схема Active/Passive для кластеров больше не используется, и имеется только один распределённый кластер, в которой запросы на отказавший узел распределяются между оставшимися рабочими узлами.
Кластер 1С с катастрофоустойчивой синхронной репликацией SQL AlwaysOn
Кластеризация баз SQL AlwaysOn использует принцип автоматической онлайн-синхронизации таблиц между основным и резервным SQL-серверами. Катастрофоустойчивость обеспечивается благодаря использованию двух независимых серверов SQL. Репликация SQL Always On доступна только в версии Microsoft SQL Enterprise.
Рис. 2. Схема катастрофоустойчивого кластера серверов 1С 8.3 SQL AlwaysOn (источник: 1С).
В последнее время предприятия стали гораздо больше внимания уделять вопросу безопасности данных в соответствии с требованиями ФЗ-152, а также для минимизации возможности взлома баз данных и пр. Поэтому в такой схеме часто используют шифрование баз данных при репликации.
Отказоустойчивый кластер / High-Availability cluster (HA)
Это кластер высокой доступности, в котором при отказе одного сервера его функции перенимают на себя другие машины в кластере. Таким образом, сервисы и приложения продолжают работать без остановки благодаря аппаратной избыточности. Чтобы построить отказоустойчивую структуру, требуется минимум два физических сервера с системами хранения данных. В рамках СХД дисковое пространство распределяется между всеми серверами, а для управления виртуальными машинами используют специальное ПО – гипервизор. Виртуальные машины, запущенные на серверах кластера, работают по следующему принципу: если одна из них выходит из строя, в работу автоматически включается вторая.
Применение: везде, где требуется непрерывная работа бизнес-сервисов и поддержка важных баз данных (банк, биржа, круглосуточное производство), электронные торговые площадки.
Преимущества: надежность, высокая доступность сервисов и приложений, сокращение потерь из-за простоев в работе.
Читайте также: