Развертывание Perl в кластере без общего доступа - PullRequest
5 голосов
/ 25 сентября 2008

У кого-нибудь есть предложения по способам развертывания модулей Perl для кластера без общего доступа?

Наш текущий метод очень ручной.

  1. Сними половину скопления
  2. Копирование модулей Perl (модулей в стиле CPAN) в сброшенные элементы кластера
  3. ssh для каждого участника и запуска perl Makefile.pl; make ; make install на каждом устанавливаемом модуле
  4. Подтверждение развертывания
  5. При обслуживании вновь развернутых элементов кластера отключите старые элементы кластера и повторите шаги 2 -> 4

Очевидно, что это далеко не оптимально, кто-нибудь знает или знает о хороших цепочках инструментов для развертывания модулей Perl в кластере без общего доступа?

Ответы [ 7 ]

4 голосов
/ 25 сентября 2008

Переведите один узел в автономный режим, установите Perl, а затем используйте его для переизображения других узлов.

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

3 голосов
/ 25 сентября 2008

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

2 голосов
/ 25 сентября 2008

Если вы используете ОС Debian или Ubunto, вы можете упаковать свои модули Perl - я открыл некоторый код, чтобы помочь с этим: Конструктор модулей Perl он все еще очень груб, но работает и может быть работать с собственным кодом, а также с модулями CPAN, что значительно упрощает развертывание.

Существует также проект для получения RPM RedHat для всех CPAN, Дейв Кросс выступил с докладом Perl в RPM-Land , который может быть полезен.

Если вы работаете в другой системе, в которой нет упаковки, опция rsync (установите на одну машину, а затем rsync на другие) также будет работать, обратите внимание, что вы можете смонтировать общий ресурс Windows и rsync к нему через unix, если необходимо.

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

2 голосов
/ 25 сентября 2008

В настоящее время у нас есть кластерное приложение Perl, которое выполняет обработку данных. У нас также есть многочисленные CPAN-модули и модули, которые мы разработали, от которых зависит программное обеспечение. Когда вы говорите «ничего не поделился», я предполагаю, что вы имеете в виду такие вещи, как монтирование NFS.

Если машины имеют одинаковую конфигурацию, то вы можете собрать все приложение в единую структуру каталогов (например, / opt / my-app), сконфигурировать его, и это может быть единственным, что вам нужно подтолкнуть к коробкам.

Для развертывания на коробках вы можете использовать Capistrano . Мы разработали несколько наших собственных утилит кластера, которые работали с ssh - я выпустил одну форму этой утилиты: параллельные задания . Его README показывает пример выполнения нескольких параллельных команд ssh. Это небольшой шаг, чтобы расширить эту программу, чтобы иметь возможность узнать о вашем кластере, а затем выполнить одну и ту же команду по всему кластеру (в отличие от ряда различных команд).

2 голосов
/ 25 сентября 2008

В прошлом я разрабатывал Perl-программу, которая использовала модуль Expect (из CPAN) для автоматизации в основном описанного вами процесса, автоматического sshing на каждый хост, копирования любых необходимых файлов и выполнения установок. К сожалению, это было разработано на месте для клиента, поэтому у меня нет доступа к коду для обмена. Если вы знакомы с Expect, его не должно быть слишком сложно настроить.

1 голос
/ 25 сентября 2008

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

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

0 голосов
/ 25 сентября 2008

Я точно не знаю, что такое кластер без общих ресурсов, но использует ли он какую-то базовую * nix-систему, такую ​​как Fedora, Mandriva или Ubuntu. Многие из модулей Perl предварительно скомпилированы для конкретных архитектур. Вы можете легко запустить их.

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

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