Questions about Riak Enterprise

Mark Rose markrose at
Tue May 8 10:59:19 EDT 2012

On Mon, May 7, 2012 at 9:25 PM, Andrew Thompson <andrew at> wrote:
> Hi Mark, I'm the riak EDS 'maintainer'. Sorry I didn't reply earlier, I
> was travelling all week.

Hi Andrew, glad to hear from you!

> I understand that the open source version of Riak's replication is
> designed
> > for single data center usage only, but I'm unsure about how Riak
> Entreprise
> > handles replication. Specifically, I'm curious about locality and high
> > availability.
> >
> > Our setup is already running in multiple availability zones on EC2. We're
> > running Galera across the zones to provide both redundancy and a local
> copy
> > of the data to avoid the network latency of going to another zone.
> However,
> > Galera, as nice as it is, doesn't scale writes. We're going to be using
> > Riak to store a lot of information going forward, and may eventually move
> > our existing data to it as well.
> >
> > The only thing holding us back from going to multiple regions on Amazon
> is
> > our datastore.
> >
> > How well does Riak handle layered topologies, such as EC2?
> >
> > Is it possible to configure Riak Enterprise to store two copies of the
> data
> > in each EC2 region, ensuring that the two copies are in different zones
> > when there are more than one Riak servers in a zone?
> Current EDS replication is pretty simple, it will just try to
> (eventually) ensure that data on one cluster is mirrored on another. It
> won't forward reads and riak doesn't have anything like 'rack
> awareness', at least not yet.

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?

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?

> > When a query is run, is it run in one region only? Would Riak prefer
> copies
> > of the data in the local zone?
> Riak only queries the local cluster, yes.
> > For what it's worth, our current datastore load is roughly half and half
> > writes and reads. We heavily cache reads with memcache (99%). We may drop
> > memcache if reads on Riak prove fast enough (thus avoiding the issues of
> > invalidating remote caches).
> Given the current limitations, you'd probably be best off with N
> clusters in different regions and/or zones. Don't try to span a single
> cluster across a zone, or even worse, a region. Then hook them together
> with replication.

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

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?

> There's also some fun with NAT on EC2, but it can be made to work.

We currently using "role based" host names. On boot, the Riak machine sets
a CNAME to its public DNS name. -> -> ->

and the cluster members would be riak at,
riak at, and riak at

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

> Let me know if that helps,
> Andrew

It helps tremendously!

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the riak-users mailing list