Erlang: запуск удаленного узла программно - PullRequest
8 голосов
/ 31 января 2011

Мне известно, что узлы можно запускать из оболочки. То, что я ищу, - это способ запустить удаленный узел из модуля. Я искал, но ничего не смог найти.

Любая помощь приветствуется.

Ответы [ 2 ]

13 голосов
/ 31 января 2011

Существует средство pool(3): пул

может использоваться для запуска набора узлов Erlang в качестве пула вычислительных процессоров.Он организован как ведущий и набор подчиненных узлов.

pool:start/1,2 запускает новый пул.Файл .hosts.erlang читается, чтобы найти имена хостов, с которых можно запускать узлы пула.Подчиненные узлы начинаются с slave:start/2,3, проходя вдоль Name и, если предусмотрено, Args.Name используется в качестве первой части имен узлов, Args используется для указания аргументов командной строки.

С пулом вы получаете средство распределения нагрузки бесплатно.

Главный узел может быть запущен следующим образом:

erl -sname poolmaster -rsh ssh

Ключ -rsh здесь указывает альтернативу rsh для запуска подчиненного узла на удаленном хосте.Мы использовали SSH здесь.Убедитесь, что на вашем компьютере есть работающие ключи SSH, и вы можете проходить аутентификацию на удаленных хостах, используя эти ключи.

Если в файле .hosts.erlang нет хостов, то никакие подчиненные узлы не запускаются, и вы можете использоватьslave:start/2,3 для запуска подчиненных узлов, вручную передавая аргументы, если это необходимо.

Вы можете, например, запустить удаленный узел:

Arg = "-mnesia_dir " ++ M,
slave:start(H, Name, Arg).

Обеспечить epmd(1) запущен и работает на удаленных компьютерах для запуска узлов Erlang.

Надеюсь, это поможет.

11 голосов
/ 31 января 2011

Чуть ниже этого уровня находится модуль slave (3) . Пул строится на функциональности в подчиненном.

Используйте slave:start для запуска нового ведомого.

Возможно, вам также следует указать -rsh ssh в командной строке.

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

...