Questions about Riak Enterprise

Andrew Thompson andrew at hijacked.us
Wed May 9 00:38:14 EDT 2012


On Tue, May 08, 2012 at 10:59:19AM -0400, Mark Rose wrote:
> 
> Approximately how fast is "eventually"? Is it based on the network
> bandwidth/latency between the clusters or is there additional latency?
> Basically, would I expect more or less than a second if the two clusters
> were 250 ms away?

Depends on the write speed and the bandwidth between clusters, EDS will
try to immediately forward a write but there's no gurantees on latency.
If the write doesn't make it, a periodic 'fullsync' should make it
happen.

> Also, how does EDS work with regards to writes to the same key in both
> clusters? Does it use a second level of vector clocks or is the vector
> clock shared? I imagine last-one-wins wouldn't work in such a setup. Is it
> standard practice to send all the writes to a single cluster?

A write on both sides is a conflict, plain and simple. You'll either get
a sibling or get stuck with last-write-wins. Obviously last-write-wins
isn't ideal so you'd probably want to think about resolving siblings
yourself.

> Does the approximately 1 ms of latency between av zones affect Riak's
> performance that much?

If the latency is *guranteed* to be that low, then you should be ok,
although I'm not sure how the networking works across zones. If the
latency can do crazy things in outage conditions, you'll stand a decent
chance of screwing the cluster. A downed node is better than a really,
really slow one.

> We were planning to run across av zones for fault tolerance, just beefing
> up single nodes for the moment until rack awareness is available. So the
> recommended solution is to use EDS to accomplish this?

I'm not sure what you're describing here.

> We currently using "role based" host names. On boot, the Riak machine sets
> a CNAME to its public DNS name.
> 
> riak1.us-east-1a.example.net -> ec2-203-0-113-239.compute-1.amazonaws.com
> riak1.us-east-1b.example.net -> ec2-198-51-100-13.compute-1.amazonaws.com
> riak1.us-east-1c.example.net -> ec2-192-0-2-144.compute-1.amazonaws.com
> 
> and the cluster members would be riak at riak1.us-east-1a.example.net,
> riak at riak1.us-east-1a.example.net, and riak at riak1.us-east-1c.example.net.
> 
> The names resolve to either the private or public IP of the machine
> depending on whether the machine is in the same region or not. We haven't
> tried running across regions yet... so I gather this might confuse
> Riak/Erlang?

Actually, its worse than that because of some legacy behaviour. EDS
wants to know the bind IP, not a hostname, and it will exchange node IPs
with the other side of the connection, so internal IPs can 'leak' to the
other cluster and cause connection problems. There is a workaround for
this, and I do plan to address it.

Andrew




More information about the riak-users mailing list