Как установить Riak на несколько удаленных узлов с помощью горячей загрузки кода?

Я изучаю Riak на одной машине и имею доступ к кластеру узлов Erlang (на Ubuntu 9). Используя удаленную загрузку кода, как мне установить Riak на все удаленные узлы?

Например, представьте, что у меня есть кластер узлов Erlang. На одном из узлов установлен Riak. Могу ли я сделать что-то вроде nl(riak), чтобы установить Riak на другие узлы.


person yazz.com    schedule 04.02.2010    source источник
comment
что именно вы подразумеваете под удаленной загрузкой кода?   -  person Felix Lange    schedule 05.02.2010
comment
Например, представьте, что у меня есть кластер узлов Erlang. На одном из узлов установлен Riak. Могу ли я сделать что-то вроде nl(riak), чтобы установить Riak на другие узлы.   -  person yazz.com    schedule 05.02.2010


Ответы (3)


Поскольку мы добавили Innostore и встроили движок Javascript Riak больше не является чистым приложением Erlang. Это означает, что установка через удаленную загрузку кода Erlang не будет работать. Если вы используете Riak в однородном кластере, вы должны иметь возможность создать один выпуск OTP с помощью make rel, скопировать выпуск на каждую машину в кластере и настроить app.config и vm.args в соответствии с требованиями.

Загрузочный сервер теоретически мог бы работать, но я не знаю никого, кто использовал бы Riak таким образом. Если вы решите попробовать, мы (Basho) будем рады оказать помощь через riak-users.

person Kevin Smith    schedule 09.02.2010
comment
Будет ли это работать, если встроенный механизм Javascript или функциональность Innodb каким-либо образом отключены? - person yazz.com; 09.02.2010
comment
Приятно видеть, что Basho поддерживает свои продукты в дикой природе :) - person ZeissS; 10.02.2010

Короткий ответ: вы не можете.
Удаленная загрузка кода работает на уровне модуля (а не на уровне приложения). Riak состоит из нескольких модулей Erlang и требует некоторых зависимостей. nl(riak) по сути загружает один модуль на все подключенные узлы.

Длинный ответ: можно, но не делайте этого.
На самом деле, вы можете собрать список модулей, связанных с Riak, затем удаленно загрузить их и настроить Riak по сети. В этом может помочь модуль application. Проблема с этим подходом заключается в том, что если удаленный узел выйдет из строя или перезагрузится, вам нужно будет снова перенести все модули и повторить настройку.

Если какая-то «удаленная загрузка» должна быть задействована, вам следует установить Riak где-нибудь в $ERL_LIBS на удаленной машине, чтобы процесс загрузки можно было инициировать через rpc:call/4.

person Felix Lange    schedule 08.02.2010
comment
Что я намерен сделать, так это связаться с персоналом Riak, так как удаленная загрузка кода является основной функцией Erlang, а процесс установки Riak настолько насыщен ошибками на каждой платформе, что удаленная загрузка кода, вероятно, необходима для установки Riak на многих серверах. - person yazz.com; 08.02.2010

Афаик, для этого есть модуль erl_boot_server. Я никогда не использовал (и не пробовал) его, но, похоже, это то, что вы ищете: http://erldocs.com/R13B03/kernel/erl_boot_server.html?search=erl&i=0

person ZeissS    schedule 08.02.2010