[erlang-questions] Dynamically add node to Distributed Application

黃耀賢 (Yau-Hsien Huang) g9414002.pccu.edu.tw@REDACTED
Fri Sep 3 03:21:56 CEST 2010


Hi, Steve!

I'm a EC2 noob. But I recently wrote somethings in HP high performance
computer.
I have a monitoring module that takes all working nodes in the cluster. Part
of code
is

loop(Pid, NStates) ->
    receive
{Pid, get_nodes} ->
    Pid ! [ N || N <- NStates, is_atom(N) ],
    loop(Pid, NStates);
{Pid, refresh} ->
    manage(Pid, NStates);
{Pid, stop} ->
    [ slave:stop(N) || N <- NStates, is_atom(N) ],
    Pid ! ok,
    ok
    end.

First it starts a process that end with keeping the loop. The loop knows
the PID of the master node and a list of node states, NStates, that contains
either NodeNames or {idle, NodeNames}. Then when I want
to add a node, it may be a new request such as

        {Pid, add_nodes, ListOfIdleNodes} ->
            loop(Pid, NStates ++ ListOfIdleNodes);

ListOfIdleNodes contains a set of {idle, NodeName}. After adding nodes
by sending this message, the master node shell send refresh command
and new nodes may work.

Best regards,
Y.H.H.



On Fri, Sep 3, 2010 at 5:09 AM, Steve Strong <steve@REDACTED> wrote:

> Hi,
>
> I'm working on the design of an Erlang based system which will be hosted on
> EC2.  Right now, a distributed application with a set of nodes looks like
> the right way forward, but one of my requirements is to be able to
> dynamically spin up new amazon instances and add them to the nodes within
> the distributed app.
>
> However, I can't see a way of adding nodes to a running distributed app - I
> am, however, a self-confessed Erlang noob, so any pointers would be much
> appreciated!
>
> Cheers,
>
> Steve
>


More information about the erlang-questions mailing list