Hi Jak,
Thank you for your response - much appreciated!
We're doing this for redundancy. Our application provides the e-
commerce infrastructure for 3,000 businesses. We simply cannot afford
to go down and need to stay up and running, even in the case of losing
an entire data center (it happened before).
We cannot afford to be down for a single minute and need automatic
failover, with no disruption in service.
Under normal operating conditions, our global load balancer connects
users in the East Coast with the East Coast web servers/redis/mysql
etc. and users in the West Coast with the West Coast web servers/redis/
mysql etc.
Consider this simplified scenario -
A customer begins his transaction on the East coast. A few seconds
later, the entire East coast data center goes down. That same
customer is now redirected to the West coast. All data should be
there for the customer to seamlessly continue transacting with the
site.
Our redundancy protocol calls for supporting three types of disasters:
#1. We lose one local redis node (no problem, because we have a few in
each data center and they're all in-sync)
#2. We lose all redis nodes in the local data center due to a software/
hardware problem => switch to using the remote redis
#3. We lose the entire data center => customers are redirected to the
remote data center
Under #2 - obviously things will get a bit slower. Not too bad and
it's generally only going to last a few minutes at most.
Under #3 - we simply need to ensure that data persists from the local
redis to the remote one, just like MySQL master/master replication
works.
Security is not a concern for us because both data centers are
connected via a private network and all information streams across
private ip addresses, outside of the public Internet.
As I said, right now the solution we're using is our home-grown master/
master redis replication, by running a jobqueue on each side which
keeps a transaction log of all writes and then transmits them to the
remote redis asynchronously.
Thanks again for any insight anyone can offer.