Создание кластера из 2 компьютеров. Настольный кластер

В первую очередь определитесь с тем, какие компоненты и ресурсы потребуются. Вам нужен будет один главный узел, минимум десяток идентичных вычислительных узлов, свитч Ethernet, блок распределения питания и стойка. Определите мощность проводки и охлаждения, а также площадь пространства, которые вам потребуются. Также определитесь, какие IP адреса вы хотите использовать для узлов, какое ПО вы поставите и какие технологии потребуются для создания параллельных вычислительных мощностей (подробнее об этом ниже).

  • Хотя «железо» стоит дорого, все приведенные в статье программы распространяются бесплатно, и большинство из них - с открытым исходным кодом.
  • Если вы хотите узнать, насколько быстрым теоретически может быть ваш суперкомпьютер, используйте этот инструмент:

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

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

    Установите свитч Ethernet рядом со стойкой. Стоит сразу же сконфигурировать свитч: установите размер джамбо-кадров 9000 байт, установите статический IP адрес, который вы выбрали на шаге 1 и выключите ненужные протоколы, такие как SMTP.

    Установите распределитель питания (PDU, или Power Distribution Unit). В зависимости от того, какую максимальную нагрузку выдают ноды в вашей сети, вам может потребоваться 220 вольт для высокопроизводительного компьютера.

  • Когда все установлено, переходите к конфигурированию. Linux по факту является основной системой для высокопроизводительных (HPC) кластеров – он не только идеально подходит в качестве окружения для научных вычислений, но вам еще и не придется платить за установку системы на сотни и даже тысячи узлов. Представьте, во сколько обошлась бы установка Windows на все ноды!

    • Начните с установки последней версии BIOS для материнской платы и ПО от производителя, которое должно быть одинаковым для всех серверов.
    • Установите предпочитаемый дистрибутив Linux на все ноды, а на главный узел - дистрибутив с графическим интерфейсом. Популярные системы: CentOS, OpenSuse, Scientific Linux, RedHat и SLES.
    • Автор очень рекомендует использовать Rocks Cluster Distribution. В дополнение к установке всех необходимых для кластера программ и инструментов, Rocks реализует отличный метод для быстрого "переноса" множества копий системы на аналогичные сервера с использованием PXE boot и процедуры "Kick Start" от Red Hat.
  • Установите интерфейс передачи сообщений, менеджер ресурсов и другие необходимые библиотеки. Если вы не поставили Rocks на предыдущем шаге, вам придется вручную устанавливать необходимое программное обеспечение, чтобы настроить логику параллельных вычислений.

    • Для начала вам понадобится портативная система для работы с bash, например, Torque Resource Manager, который позволяет разделять и распределять задачи на несколько машин.
    • Добавьте к Torque еще Maui Cluster Scheduler, чтобы закончить установку.
    • Дальше вам нужно установить интерфейс передачи сообщений, который необходим для того, чтобы индивидуальные процессы в каждой отдельной ноде использовали общие данные. OpenMP - самый простой вариант.
    • Не забудьте о многопоточных математических библиотеках и компиляторах, которые будут «собирать» ваши программы для распределенных вычислений. Я уже говорил, что вам стоит просто поставить Rocks?
  • Соедините компьютеры в сеть. Главная нода посылает задачи для вычисления на подчиненные ноды, которые в свою очередь должны вернуть результат обратно, а также отправлять сообщения друг другу. И чем быстрее все это происходит, тем лучше.

    • Используйте частную Ethernet сеть, чтобы соединить все ноды в кластер.
    • Главная нода может также работать в качестве NFS, PXE, DHCP, TFTP и NTP сервера при подключении к Ethernet.
    • Вы должны отделить эту сеть от публичных, чтобы быть уверенным, что пакеты не перекрываются другими в LAN.
  • Протестируйте кластер. Последнее, что вам стоит сделать перед тем, как дать доступ пользователям к компьютерным мощностям - протестировать производительность. HPL (High Performance Lynpack) benchmark - популярный вариант для измерения скорости вычислений в кластере. Вам нужно скомпилировать ПО из исходников с самой высокой степенью оптимизации, которую позволяет ваш компилятор для той архитектуры, которую вы выбрали.

    • Вы должны, конечно, компилировать со всеми возможными настройками оптимизации, которые доступны для платформы, которую вы выбрали. Например, при использовании AMD CPU компилируйте в Open64 и уровнем оптимизации -0.
    • Сравните полученные результаты с TOP500.org, чтобы сопоставить свой кластер с 500 самыми быстрыми суперкомпьютерами в мире!
  • Свой первый “кластер” из одноплатных компьютеров я построил почти сразу после того, как микрокомпьютер Orange Pi PC начал набирать популярность. “Кластером” это можно было назвать с большой натяжкой, ибо с формальной точки зрения это была всего лишь локальная сеть из четырёх плат, которые “видели” друг друга и могли выходить в Интернет.

    Устройство участвовало в проекте SETI@home и даже успело что-то насчитать. Но, к сожалению, никто не прилетел забрать меня с этой планеты.
    Однако, за всё время возни с проводами, разъёмами и microSD-картами я многому научился. Так, например, я выяснил, что не стоит доверять заявленной мощности блока питания, что было бы неплохо распределять нагрузку в плане потребления, да и сечение провода имеет значение.

    И да, пришлось “колхозить” систему управления питанием, ибо одновременный старт пяти одноплатников может потребовать стартовый ток порядка 8-10а (5*2)! Это немало, особенно для БП, сделанных в подвалах страны, где мы так любим заказывать всякие… интересные гаджеты.

    Начну, пожалуй, с неё. Задача свелась к относительно простым действиям - через заданный промежуток времени последовательно включить 4 канала, по которым подаётся 5 вольт. Самый простой способ реализовать задуманное - Arduino (коих у каждого уважающего себя гика в избытке) и вот такая чудо-плата с Али с 4мя реле.

    И знаете, оно даже заработало.

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

    Так что в один прекрасный день я просто заменил блок реле на транзисторные ключи на основе IRL520.

    Это решило вопрос с помехами, но поскольку mosfet управляет “нулём”, пришлось отказаться от латунных ножек в стойке, дабы не соединить случайно землю плат.

    И вот, решение отлично тиражируется и уже два кластера работают стабильно без всяких сюрпризов. Just as planned.

    Но, вернёмся к тиражируемости. Зачем покупать блоки питания за ощутимую сумму, когда буквально под ногами есть много доступных ATX ?
    Мало того, на них есть все напряжения (5,12,3.3), зачатки самодиагностики и возможность программного управления.

    Ну тут я особо распинаться не буду - статья про управление ATX через Ардуино .

    Ну что, все таблетки подъедены, марки тоже наклеены? Пора объединить это всё воедино.

    Будет один головной узел, который соединяется с внешним миром по WiFi и отдаёт " интернеты" в кластер. Он будет питаться от дежурного напряжения ATX.

    Фактически, за раздачу инета отвечает TBNG .
    Так что при желании узлы кластера можно спрятать за TOR.

    Также, будет хитрая плата, подключенная по i2c к этому головному узлу. Она сможет включать-выключать каждый из 10 рабочих узлов. Плюс, будет уметь управлять тремя вентиляторами 12в для охлаждения всей системы.

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

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

    Вот она в процессе сборки

    Вот один из первых эскизов расположения компонент кластера. Сделан на листке в клетку и увековечен через Office Lens телефоном.

    Вся конструкция помещается на листе текстолита, купленного по случаю.

    Примерно так выглядит расположение узлов внутри. Две стойки по пять плат.

    Тут проглядывается управляющая Arduino. Она соединена с головной Orange Pi Pc по i2c через конвертер уровней.

    Ну а вот финальный (текущий вариант).

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

    Не буду утомлять техническими подробностями - выглядит примерно так:

    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/env sh

    echo "Starting ATX board..."
    /home/zno/i2creobus/i2catx_tool.py --start
    echo "Setting initial fan values..."
    /home/zno/i2creobus/i2creobus_tool.py --fan 0 --set 60
    /home/zno/i2creobus/i2creobus_tool.py --fan 1 --set 60
    /home/zno/i2creobus/i2creobus_tool.py --fan 2 --set 60

    Поскольку узлов у нас уже целых 10, берём на вооружение Ansible, который поможет, например, правильно выключить все узлы. Или запустить на каждом монитор температуры.

    1
    2
    3
    4
    5
    6
    7
    8
    ---

    - hosts: workers
    roles:
    - webmon_stop
    - webmon_remove
    - webmon_install
    - webmon_start

    Меня часто в пренебрежительном тоне обвиняют, мол это просто локальная сеть одноплатников (как я уже упоминал в самом начале). Мне, в целом, насрать на чужое мнение, но пожалуй, добавим гламура и организуем docker swarm cluster.
    Задача весьма простая и выполняется меньше чем за 10 минут. Потом запустим на головной ноде экземпляр Portainer , и вуаля!

    Теперь можно реально масштабировать задачи. Так, в данный момент в кластере работает майнер криптовалюты Verium Reserve. И, довольно успешно. Надеюсь, ближайший туземун окупит съеденное электричество;) Ну или сократить количество вовлеченных узлов и майнить что-нибудь ещё типа Turtle Coin.

    Если хочется полезной нагрузки - в кластер можно закинуть Hadoop или устроить балансировку веб-серверов. Готовых образов в интернете много, да и обучающего материала достаточно. Ну а если образ (docker image) отсутствует - всегда можно собрать свой.

    Чему меня это научило? В целом, “стек” технологий очень широкий. Судите сами - Docker, Ansible, Python, прокачка Arduino (прости господи, ни к ночи будет сказано), ну и шелл конечно же. А так же KiCad и работа с подрядчиком:).

    Что можно сделать лучше? Многое. По софтовой части было бы неплохо переписать управляющие утилиты на Go. По железной - make it more steampunkish - КДПВ в начале отлично задирает планку. Так что есть, над чем работать.

    Роли исполняли:

    • Головной узел - Orange Pi PC с usb wifi.
    • Рабочие узлы - Orange Pi PC2 x 10.
    • Сеть - 100 мбит TP-link@16ports.
    • Мозг - Клон Arduino на базе Atmega8 + конвертер уровней.
    • Сердце - контроллер питания АТХ с блоком питания.
    • Софт (душа) - Docker, Ansible, Python 3, немного шелла и чуть чуть лени.
    • Потраченное время - бесценно.

    В процессе экспериментов пострадала пара плат Orange Pi PC2 из-за перепутанного питания (очень красиво горят), ещё одна PC2 лишилась Ethernet (это отдельная история, в которой я не понимаю физики процесса).

    Вот вроде бы и вся история “по верхам”. Если кто-то считает её интересной - задавайте вопросы в комментариях. И голосуйте там же за вопросы (плюсуйте - у каждого коммента есть кнопка для этого). Наиболее интересные вопросы будут освещены в новых заметках.
    Спасибо, что дочитали до конца.

    (К слову, говоря, при этом есть возможность собрать недорогой и эффективный кластер из xbox 360 или PS3, процессоры там примерно как Power, и на миллион можно купить не одну приставку.)

    Исходя из этого отметим интересные по цене варианты построения высокопроизводительной системы. Разумеется, она должна быть многопроцессорной. У Intel для таких задач используются процессоры Xeon, у AMD – Opteron.

    Если много денег


    Отдельно отметим крайне дорогую, но производительную линейку процессоров на сокете Intel Xeon LGA1567.
    Топовый процессор этой серии – E7-8870 с десятью ядрами 2,4 ГГц. Его цена $4616. Для таких CPU фирмы HP и Supermicro выпускают! восьмипроцессорные! серверные шасси. Восемь 10-ядерных процессоров Xeon E7-8870 2.4 ГГц с поддержкой HyperThreading поддерживают 8*10*2=160 потоков, что в диспетчере задач Windows отображается как сто шестьдесят графиков загрузки процессоров, матрицей 10x16.

    Для того, чтобы восемь процессоров уместились в корпусе, их размещают не сразу на материнской плате, а на отдельных платах, которые втыкаются в материнскую плату. На фотографии показаны установленные в материнскую плату четыре платы с процессорами (по два на каждой). Это решение Supermicro. В решении HP на каждый процессор приходится своя плата. Стоимость решения HP составляет два-три миллиона, в зависимости от наполнения процессорами, памятью и прочим. Шасси от Supermicro стоит $10 000, что привлекательнее. Кроме того в Supermicro можно поставить четыре сопроцессорных платы расширения в порты PCI-Express x16 (кстати, еще останется место для Infiniband-адаптера чтобы собирать кластер из таких), а в HP только две. Таким образом, для создания суперкомпьютера восьмипроцессорная платформа от Supermicro привлекательнее. На следующем фото с выставки представлен суперкомпьютер в сборе с четырьмя GPU платами.


    Однако это очень дорого.
    Что подешевле
    Зато есть перспектива сборки суперкомпьютера на более доступных процессорах AMD Opteron G34, Intel Xeon LGA2011 и LGA 1366.

    Чтобы выбрать конкретную модель, я составил таблицу, в которой сосчитал для каждого процессора показатель цена/(число ядер*частота). Я отбросил из расчета процессоры частотой ниже 2 ГГц, и для Intel - с шиной ниже 6,4GT/s.

    Модель
    Кол-во ядер
    Частота
    Цена, $
    Цена/ядро, $
    Цена/Ядро/ГГц
    AMD





    6386 SE
    16
    2,8
    1392
    87
    31
    6380
    16
    2,5
    1088
    68
    27
    6378
    16
    2,4
    867
    54
    23
    6376
    16
    2,3
    703
    44
    19
    6348
    12
    2,8
    575
    48
    17
    6344
    12
    2,6
    415
    35
    13
    6328
    8
    3,2
    575
    72
    22
    6320
    8
    2,8
    293
    37
    13
    INTEL





    E5-2690
    8
    2,9
    2057
    257
    89
    E5-2680
    8
    2,7
    1723
    215
    80
    E5-2670
    8
    2,6
    1552
    194
    75
    E5-2665
    8
    2,4
    1440
    180
    75
    E5-2660
    8
    2,2
    1329
    166
    76
    E5-2650
    8
    2
    1107
    138
    69
    E5-2687W
    8
    3,1
    1885
    236
    76
    E5-4650L
    8
    2,6
    3616
    452
    174
    E5-4650
    8
    2,7
    3616
    452
    167
    E5-4640
    8
    2,4
    2725
    341
    142
    E5-4617
    6
    2,9
    1611
    269
    93
    E5-4610
    6
    2,4
    1219
    203
    85
    E5-2640
    6
    2,5
    885
    148
    59
    E5-2630
    6
    2,3
    612
    102
    44
    E5-2667
    6
    2,9
    1552
    259
    89
    X5690
    6
    3,46
    1663
    277
    80
    X5680
    6
    3,33
    1663
    277
    83
    X5675
    6
    3,06
    1440
    240
    78
    X5670
    6
    2,93
    1440
    240
    82
    X5660
    6
    2,8
    1219
    203
    73
    X5650
    6
    2,66
    996
    166
    62
    E5-4607
    6
    2,2
    885
    148
    67
    X5687
    4
    3,6
    1663
    416
    115
    X5677
    4
    3,46
    1663
    416
    120
    X5672
    4
    3,2
    1440
    360
    113
    X5667
    4
    3,06
    1440
    360
    118
    E5-2643
    4
    3,3
    885
    221
    67

    Жирным курсивом выделена модель с минимальным показателем соотношения, подчеркнутым – самый мощный AMD и на мой взгляд наиболее близкий по производительности Xeon.

    Таким, образом, мой выбор процессоров для суперкомпьютера – Opteron 6386 SE, Opteron 6344, Xeon E5-2687W и Xeon E5-2630.

    Материнские платы

    PICMG
    На обычные материнские платы невозможно поставить более четырех двухслотовых плат расширения. Есть и другая архитектура – использование кросс-плат, таких как BPG8032 PCI Express Backplane.


    В такую плату ставятся платы расширения PCI Express и одна процессорная плата, чем-то похожая на те, которые установлены в восьмипроцессорных серверах на базе Supermicro, о которых речь шла выше. Но только эти процессорные платы подчиняются отраслевым стандартам PICMG. Стандарты развиваются медленно и такие платы зачастую не поддерживают самые современные процессоры. Максимум такие процессорные платы сейчас выпускают на два Xeon E5-2448L - Trenton BXT7059 SBC.

    Стоить такая система будет без GPU не меньше $5000.

    Готовые платформы TYAN
    За ту же примерно сумму можно приобрести готовую платформу для сборки суперкомпьютеров TYAN FT72B7015 . В такой можно установить до восьми GPU и два Xeon LGA1366.
    «Обычные» серверные материнские платы
    Для LGA2011
    Supermicro X9QR7-TF - на эту материнскую плату можно установить 4 Платы расширения и 4 процессора.

    Supermicro X9DRG-QF - эта плата специально разработана для сборки высокопроизводительных систем.

    Для Opteron
    Supermicro H8QGL-6F - эта плата позволяет установить четыре процессора и три платы расширения

    Усиление платформы платами расширения

    Этот рынок почти полностью захвачен NVidia, которые выпускают помимо геймерских видеокарт еще и вычислительные карты. Меньшую долю рынка имеет AMD, и относительно недавно на этот рынок пришла корпорация Intel.

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

    FP32, Tflops FP64, Tflops Цена Память, Гб
    Nvidia Tesla K20X 3.95 1.31 5.5 6
    AMD FirePro S10000 5.91 1.48 3.6 6
    Intel Xeon Phi 5110P 1 2.7 8
    Nvidia GTX Titan 4.5 1.3 1.1 6
    Nvidia GTX 680 3 0.13 0.5 2
    AMD HD 7970 GHz Edition 4 1 0.5 3
    AMD HD 7990 Devil 13 2x3,7 2х0.92 1.6 2x3

    Топовое решение от Nvidia называется Tesla K20X на архитектуре Kepler. Именно такие карты стоят в самом мощном в мире суперкомпьютере Titan. Однако недавно Nvidia выпустила видеокарту Geforce Titan. Старые модели были с урезанной производительностью FP64 до 1/24 от FP32 (GTX680). Но в Титане производитель обещает довольно высокую производительность в расчетах с двойной точностью. Решения от AMD тоже неплохи, но они построены на другой архитектуре и это может создать трудности для запуска вычислений, оптимизированных под CUDA (технология Nvidia).

    Решение от Intel - Xeon Phi 5110P интересно тем, что все ядра в сопроцессоре выполнены на архитектуре x86 и не требуется особой оптимизации кода для запуска расчетов. Но мой фаворит среди сопроцессоров – относительно недорогая AMD HD 7970 GHz Edition. Теоретически эта видеокарта покажет максимальную производительность в расчете на стоимость.

    Можно соединить в кластер

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

    Использовать в качестве сетевого интерфейса для связи компьютеров обычный гигабитный Ethernet слишком медленно. Для этих целей чаще всего используют Infiniband. Хост адаптер Infiniband относительно сервера стоит недорого. Например, на международном аукционе Ebay такие адаптеры продают по цене от $40. Например, адаптер X4 DDR (20Gb/s) обойдется с доставкой до России примерно в $100.

    При этом коммутационное оборудование для Infiniband стоит довольно дорого. Да и как уже было сказано выше, классическая звезда в качестве топологии вычислительной сети – не лучший выбор.

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

    Сколько нужно видеокарт

    В самом мощном суперкомпьютере современности Cray Titan отношение процессоров к «видеокартам» 1:1, то есть в нем 18688 16-ядерных процессоров и 18688 Tesla K20X.

    В Тяньхэ-1А – китайском суперкомпьютере на ксеонах отношение следующее. Два шестиядерных процессора к одной «видюшке» Nvidia M2050 (послабее, чем K20X).

    Такое отношение мы и примем для наших сборок за оптимальное (ибо дешевле). То есть 12-16 ядер процессоров на один GPU. На таблице ниже жирным обозначены практически возможные варианты, подчеркиванием – наиболее удачные с моей точки зрения.

    GPU Cores 6-core CPU 8-core CPU 12-core CPU 16-core CPU
    2 24 32 4
    5
    3
    4
    2
    3
    2
    2
    3 36 48 6
    8
    5
    6
    3
    4
    2
    3
    4 48 64 8
    11
    6
    8
    4
    5
    3
    4

    Если система с уже установленным отношением процессоров/видеокарт сможет принять «на борт» еще дополнительно вычислительных устройств, то мы их добавим, чтобы увеличить мощность сборки.

    Итак, сколько стоит

    Представленные ниже варианты – шасси суперкомпьютера без оперативной памяти, жестких дисков и ПО. Во всех моделях используется видеоадаптер AMD HD 7970 GHz Edition. Его можно заменить на другой, по требованию задачи (например, на xeon phi). Там, где система позволяет, одна из AMD HD 7970 GHz Edition заменена на трехслотовую AMD HD 7990 Devil 13.
    Вариант 1 на материнской плате Supermicro H8QGL-6F


    Материнская плата Supermicro H8QGL-6F 1 1200 1200
    Процессор AMD Opteron 6344 4 500 2000
    Кулер Процессора Thermaltake CLS0017 4 40 160
    Корпус 1400Вт SC748TQ-R1400B 1 1000 1000
    Графический ускоритель AMD HD 7970 GHz Edition 3 500 1500
    5860

    Теоретически, производительность составит около 12 Tflops.
    Вариант 2 на материнской плате TYAN S8232, кластерный


    Эта плата не поддерживает Opteron 63xx, поэтому используется 62xx. В этом варианте два компьютера объединены в кластер по Infiniband x4 DDR двумя кабелями. Теоретически скорость соединения в этом случае упрется в скорость PCIe x8 то есть 32Гб/с. Блоков питания используется два. Как их согласовать между собой, можно найти в интернете.
    Количество Цена Сумма
    Материнская плата TYAN S8232 1 790 790
    Процессор AMD Opteron 6282SE 2 1000 2000
    Кулер Процессора Noctua NH-U12DO A3 2 60 120
    Корпус Antec Twelve Hundred Black 1 200 200
    Блок питания FSP AURUM PRO 1200W 2 200 400
    Графический ускоритель AMD HD 7970 GHz Edition 2 500 1000
    Графический ускоритель AX7990 6GBD5-A2DHJ 1 1000 1000
    Infiniband адаптер X4 DDR Infiniband 1 140 140
    Infiniband кабель X4 DDR Infiniband 1 30 30
    5680 (за один блок)

    Для кластера таких конфигураций нужно две и стоимость их составит $11360 . Его энергопотребление при полной нагрузке будет около 3000Вт. Теоретически, производительность составит до 31Tflops.

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

    В Windows Server 2012 появилось так много новшеств, что за всеми уследить трудно. Часть наиболее важных строительных блоков новой ИТ-инфраструктуры связана с улучшениями в отказоустойчивой кластеризации. Отказоустойчивая кластеризация зародилась как технология для защиты важнейших приложений, необходимых для производственной деятельности, таких как Microsoft SQL Server и Microsoft Exchange. Но впоследствии отказоустойчивая кластеризация превратилась в платформу высокой доступности для ряда служб и приложений Windows. Отказоустойчивая кластеризация - часть фундамента Dynamic Datacenter и таких технологий, как динамическая миграция. Благодаря Server 2012 и усовершенствованиям нового протокола Server Message Block (SMB) 3.0 область действия отказоустойчивой кластеризации стала увеличиваться, обеспечивая непрерывно доступные файловые ресурсы с общим доступом. Обзор функциональности отказоустойчивой кластеризации в Server 2012 приведен в опубликованной в этом же номере журнала статье «Новые возможности отказоустойчивой кластеризации Windows Server 2012».

    Обязательные условия отказоустойчивой кластеризации

    Для построения двухузлового отказоустойчивого кластера Server 2012 необходимы два компьютера, работающие с версиями Server 2012 Datacenter или Standard. Это могут быть физические компьютеры или виртуальные машины. Кластеры с виртуальными узлами можно построить с помощью Microsoft Hyper-V или VMware vSphere. В данной статье используются два физических сервера, но этапы настройки кластера для физических и виртуальных узлов одни и те же. Ключевая особенность заключается в том, что узлы должны быть настроены одинаково, чтобы резервный узел мог выполнять рабочие нагрузки в случае аварийного переключения или динамической миграции. Компоненты, использованные в тестовом отказоустойчивом кластере Server 2012 представлены на рисунке.

    Для отказоустойчивого кластера Server 2012 необходимо общее хранилище данных типа iSCSI, Serially Attached SCSI или Fibre Channel SAN. В нашем примере используется iSCSI SAN. Следует помнить о следующих особенностях хранилищ этого типа.

    • Каждый сервер должен располагать по крайней мере тремя сетевыми адаптерами: одним для подключения хранилища iSCSI, одним для связи с узлом кластера и одним для связи с внешней сетью. Если предполагается задействовать кластер для динамической миграции, то полезно иметь четвертый сетевой адаптер. Однако динамическую миграцию можно выполнить и через внешнее сетевое соединение - она просто будет выполняться медленнее. Если серверы используются для виртуализации на основе Hyper-V и консолидации серверов, то нужны дополнительные сетевые адаптеры для передачи сетевого трафика виртуальных машин.
    • В быстрых сетях работать всегда лучше, поэтому быстродействие канала связи iSCSI должно быть не менее 1 ГГц.
    • Цель iSCSI должна соответствовать спецификации iSCSI-3, в частности обеспечивать постоянное резервирование. Это обязательное требование динамической миграции. Оборудование почти всех поставщиков систем хранения данных соответствует стандарту iSCSI 3. Если нужно организовать кластер в лабораторной среде с небольшими затратами, обязательно убедитесь, что программное обеспечение цели iSCSI соответствует iSCSI 3 и требованиям постоянного резервирования. Старые версии Openfiler не поддерживают этот стандарт, в отличие от новой версии Openfiler с модулем Advanced iSCSI Target Plugin (http://www.openfiler.com/products/advanced-iscsi-plugin). Кроме того, бесплатная версия StarWind iSCSI SAN Free Edition компании StarWind Software (http://www.starwindsoftware.com/starwind-free) полностью совместима с Hyper-V и динамической миграцией. Некоторые версии Microsoft Windows Server также могут функционировать в качестве цели iSCSI, совместимой со стандартами iSCSI 3. В состав Server 2012 входит цель iSCSI. Windows Storage Server 2008 R2 поддерживает программное обеспечение цели iSCSI. Кроме того, можно загрузить программу Microsoft iSCSI Software Target 3.3 (http://www.microsoft.com/en-us/download/details.aspx?id=19867), которая работает с Windows Server 2008 R2.

    Дополнительные сведения о настройке хранилища iSCSI для отказоустойчивого кластера приведены во врезке «Пример настройки хранилища iSCSI». Более подробно о требованиях к отказоустойчивой кластеризации рассказано в статье «Failover Clustering Hardware Requirements and Storage Options» (http://technet.microsoft.com/en-us/library/jj612869.aspx).

    Добавление функций отказоустойчивой кластеризации

    Первый шаг к созданию двухузлового отказоустойчивого кластера Server 2012 - добавление компонента отказоустойчивого кластера с использованием диспетчера сервера. Диспетчер сервера автоматически открывается при регистрации в Server 2012. Чтобы добавить компонент отказоустойчивого кластера, выберите Local Server («Локальный сервер») и прокрутите список вниз до раздела ROLES AND FEATURES. Из раскрывающегося списка TASKS выберите Add Roles and Features, как показано на экране 1. В результате будет запущен мастер добавления ролей и компонентов.

    Первой после запуска мастера откроется страница приветствия Before you begin. Нажмите кнопку Next для перехода к странице выбора типа установки, на которой задается вопрос, нужно ли установить компонент на локальном компьютере или в службе Remote Desktop. Для данного примера выберите вариант Role-based or feature-based installation и нажмите кнопку Next.

    На странице Select destination server выберите сервер, на котором следует установить функции отказоустойчивого кластера. В моем случае это локальный сервер с именем WS2012-N1. Выбрав локальный сервер, нажмите кнопку Next, чтобы перейти к странице Select server roles. В данном примере роль сервера не устанавливается, поэтому нажмите кнопку Next. Или можно щелкнуть ссылку Features в левом меню.

    На странице Select features прокрутите список компонентов до пункта Failover Clustering. Щелкните в поле перед Failover Clustering и увидите диалоговое окно со списком различных компонентов, которые будут установлены как части этого компонента. Как показано на экране 2, по умолчанию мастер установит средства управления отказоустойчивыми кластерами и модуль отказоустойчивого кластера для Windows PowerShell. Нажмите кнопку Add Features, чтобы вернуться на страницу выбора компонентов. Щелкните Next.

    На странице Confirm installation selections будет показана функция отказоустойчивого кластера наряду с инструментами управления и модулем PowerShell. С этой страницы можно вернуться и внести любые изменения. При нажатии кнопки Install начнется собственно установка компонентов. После завершения установки работа мастера будет завершена и функция отказоустойчивого кластера появится в разделе ROLES AND FEATURES диспетчера сервера. Этот процесс необходимо выполнить на обоих узлах.

    Проверка отказоустойчивого кластера

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

    Чтобы открыть диспетчер отказоустойчивого кластера, выберите параметр Failover Cluster Manager в меню Tools в диспетчере сервера. В области Management щелкните ссылку Validate Configuration, как показано на экране 3, чтобы запустить мастер проверки настроек.


    Экран 3. Запуск мастера проверки конфигурации

    Сначала выводится страница приветствия мастера. Нажмите кнопку Next, чтобы перейти к выбору серверов или странице Cluster. На этой странице введите имена узлов кластера, который необходимо проверить. Я указал WS2012-N1 и WS2012-N2. Нажмите кнопку Next, чтобы показать страницу Testing Options, на которой можно выбрать конкретные наборы тестов или запустить все тесты. По крайней мере в первый раз я рекомендую запустить все тесты. Нажмите кнопку Next, чтобы перейти на страницу подтверждения, на которой показаны выполняемые тесты. Нажмите кнопку Next, чтобы начать процесс тестирования кластера. В ходе тестирования проверяется версия операционной системы, настройки сети и хранилища всех узлов кластера. Сводка результатов отображается после завершения теста.

    Если тесты проверки выполнены успешно, можно создать кластер. На экране 4 показан экран сводки для успешно проверенного кластера. Если при проверке обнаружены ошибки, то отчет будет отмечен желтым треугольником (предупреждения) или красным значком "X" в случае серьезных ошибок. С предупреждениями следует ознакомиться, но их можно игнорировать. Серьезные ошибки необходимо исправить перед созданием кластера.

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

    На странице Access Point for Administering the Cluster следует указать имя и IP-адрес кластера, которые должны быть уникальными в сети. На экране 7 видно, что имя моего кластера WS2012-CL01, а IP-адрес - 192.168.100.200. При использовании Server 2012 IP-адрес кластера может быть назначен через DHCP, но я предпочитаю для своих серверов статически назначаемый IP-адрес.

    После ввода имени и IP-адреса нажмите кнопку Next, чтобы увидеть страницу подтверждения (экран 8). На этой странице можно проверить настройки, сделанные при создании кластера. При необходимости можно вернуться и внести изменения.

    После нажатия кнопки Next на странице подтверждения формируется кластер на всех выбранных узлах. На странице хода выполнения показаны шаги мастера в процессе создания нового кластера. По завершении мастер покажет страницу сводки с настройками нового кластера.

    Мастер создания кластера автоматически выбирает хранилище для кворума, но часто он выбирает не тот диск кворума, который хотелось бы администратору. Чтобы проверить, какой диск используется для кворума, откройте диспетчер отказоустойчивого кластера и разверните кластер. Затем откройте узел Storage и щелкните узел Disks. Диски, доступные в кластере, будут показаны на панели Disks. Диск, выбранный мастером для кворума кластера, будет указан в разделе Disk Witness in Quorum.

    В данном примере для кворума был использован Cluster Disk 4. Его размер 520 Мбайт, чуть больше минимального значения для кворума 512 Мбайт. Если нужно использовать другой диск для кворума кластера, можно изменить настройки кластера, щелкнув правой кнопкой мыши имя кластера в диспетчере отказоустойчивого кластера, выбрав пункт More Actions и Configure Cluster Quorum Settings. В результате появится мастер выбора конфигурации кворума, с помощью которого можно изменить параметры кворума кластера.

    Настройка общих томов кластера и роли виртуальных машин

    Оба узла в моем кластере имеют роль Hyper-V, так как кластер предназначен для виртуальных машин с высокой доступностью, обеспечивающих динамическую миграцию. Чтобы упростить динамическую миграцию, далее требуется настроить общие тома кластера Cluster Shared Volumes (CSV). В отличие от Server 2008 R2, в Server 2012 общие тома кластера включены по умолчанию. Однако все же требуется указать, какое хранилище следует использовать для общих томов кластера. Чтобы включить CSV на доступном диске, разверните узел Storage и выберите узел Disks. Затем выберите диск кластера, который нужно использовать как CSV, и щелкните ссылку Add to Cluster Shared Volumes на панели Actions диспетчера отказоустойчивого кластера (экран 9). Поле Assigned To этого диска кластера изменится с Available Storage на Cluster Shared Volume (общий том кластера), как показано на экране 9.

    В это время диспетчер отказоустойчивого кластера настраивает хранилище диска кластера для CSV, в частности добавляет точку подключения в системном диске. В данном примере общие тома кластера включаются как на Cluster Disk 1, так и на Cluster Disk 3 с добавлением следующих точек подключения:

    * C:ClusterStorageVolume1 * C:ClusterStorageVolume2

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

    Чтобы добавить новую роль, выберите имя кластера на панели навигации диспетчера отказоустойчивого кластера и щелкните ссылку Configure Roles на панели Actions, чтобы запустить мастер высокой готовности. Нажмите кнопку Next на странице приветствия, чтобы перейти на страницу выбора роли. Прокрутите список ролей, пока не увидите роль виртуальной машины, как показано на экране 10. Выберите роль и нажмите кнопку Next.

    На странице выбора виртуальной машины будут перечислены все VM на всех узлах кластера, как показано на экране 11. Прокрутите список и выберите виртуальные машины, которым необходимо обеспечить высокую готовность. Нажмите кнопку Next. Подтвердив свой выбор, нажмите Next, чтобы добавить роли виртуальной машины в диспетчер отказоустойчивого кластера.

    Пример настройки хранилища iSCSI

    Для отказоустойчивого кластера Windows Server 2012 требуется общее хранилище, которое может быть типа iSCSI, Serially Attached SCSI или Fibre Channel SAN. В данном отказоустойчивом кластере используется Channel SAN.

    Сначала в сети iSCSI SAN были созданы три логических устройства LUN. Один LUN был создан для диска кворума кластера (520 Мбайт). Другой LUN предназначен для 10 виртуальных машин и имеет размер 375 Гбайт. Третий LUN выделен для небольшой тестовой виртуальной машины. Все три LUN представлены в формате NTFS.

    После того, как были созданы LUN, была выполнена настройка iSCSI Initiator на обоих узлах Server 2012. Чтобы добавить цели iSCSI, был выбран iSCSI Initiator в меню Tools в диспетчере сервера. На вкладке Discovery я нажал кнопку Discover Portal. В результате появилось диалоговое окно Discover Portal, куда были введены IP-адрес (192.168.0.1) и порт iSCSI (3260) сети SAN.

    Затем я перешел на вкладку Targets и нажал кнопку Connect. В диалоговом окне Connect To Target («Подключение к целевому серверу») я ввел целевое имя iSCSI SAN. Оно было получено из свойств SAN. Имя зависит от поставщика SAN, имени домена и имен созданных LUN. Помимо целевого имени я установил режим Add this connection to the list of Favorite Targets.

    По завершении настройки iSCSI эти LUN появились на вкладке Targets iSCSI Initiator. Чтобы автоматически подключать LUN при запуске Server 2012, я убедился, что они перечислены на вкладке Favorite Targets, как показано на экране A.

    Экран A. Настройка iSCSI Initiator

    Наконец, были назначены буквенные обозначения устройствам LUN с помощью оснастки Disk Management консоли управления Microsoft (MMC). Я выбрал Q для диска кворума и W для диска, используемого для виртуальных машин и общих томов кластера (CSV). При назначении буквенных обозначений необходимо сначала назначить их на одном узле. Затем нужно перевести диски в автономный режим и сделать аналогичные назначения на втором узле. Результаты назначения букв дискам для одного узла приведены на экране B. При создании кластера диски будут показаны как доступное хранилище.