A method is provided for replicating data. All nodes coupled to a source
node via a network are surveyed to determine candidate replication nodes,
and coordinates for each candidate replication node are acquired. The
coordinates are used to determine a geographic location of and a
communication cost for each candidate replication node. Each geographic
location is rated based on probability of a concurrent failure of the
source node and the candidate replication node, and a branch-and-bound
algorithm is used to assign values to sets of candidate replication nodes
based on the communication costs and the ratings. One set of candidate
replication nodes is selected based on the assigned values. The data is
replicated on the nodes of the selected set of candidate replication
nodes, and all nodes coupled to the source node via the network are at
least periodically monitored to determine availability of new nodes.