[erlang-questions] Forming a cluster
Wed Oct 24 17:12:40 CEST 2007
On Wed, Oct 24, 2007 at 09:48:09AM -0400, Jack Orenstein wrote:
> What is the recommended procedure for setting up a cluster of nodes,
> each running an Erlang VM (all with the same .erlang.cookie)? The
> nodes are all in the same subnet, behind a firewall. The node
> population is reasonably static, but nodes there may be occasional
> additions. When a node joins, the nodes already in the cluster need
> to know about it. Each node has to know about every other node, (e.g.
> by calling nodes()).
> net_kernel:monitor_nodes will indicate when a node joins, but only if
> the new node sends a message to some node in the cluster. How does
> the new node know who is present? There seems to be a bootstrapping
> problem. Also, requiring a new node to know about a cluster member is
> problematic since the selected node might be down.
> net_adm and the .erlang.hosts file is a possible solution, but that
> seems static. It doesn't seem to accomodate nodes joining after the
> initial cluster forms.
> Is there a dynamic solution that doesn't require the new node to know
> anything about the existing cluster members?
Most systems I've worked on involved a shared set of mnesia database nodes
containing configuration information for the entire cluster.
All other nodes in the cluster are started with -mnesia extra_db_nodes [...],
and thus no explicit net_adm:ping/1 is required (in my code).
Of course this is just another form of static configuration...
To do what you want you may need to take a close look at how epmd(1) works.
More information about the erlang-questions