I've setup a cluster of physical servers. Each server runs exactly the same 
code. Moreover, each server runs multiple node processes using the build 
in cluster functionality.

I use MongoDB (native) to share information between processes and servers. 
However, I am having some difficulty with running a special task that needs 
to be executed only once during initialization:
> if a special `admin` account does not yet exist in the database, it 
should be created

Originally I figured that I could read from the MongoDB master server on 
each node and check if the admin account already exists. If it does not 
then another node has not yet created it, so this node should do so. 
However this is problematic because creating an admin password hash is 
asynchronous and takes time. Therefore there is a delay between when a node 
decides to create the account and when the account is being found by other 
nodes when querying the database.

The code snippet that reads from the Mongo master only and creates the 
account is available here: https://gist.github.com/3839429

In the future I would also like a special task to be executed every 5 
minutes. This task must then only be executed by a running server, and not 
by all servers.

In short: when running a cluster of servers, how do you coordinate between 
these servers which of them is going to execute a sole task such as the one 
described above?

Tom

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to