However the answer is almost always to spread out your instances a little
bit. Either make it easy for a standby server to take over the IP of a
dead host, or make it easy to push an update to your server list.
-Dormando
Anyone interested in getting one of the windows clients to support
libmemcached, or at least the same replication method that the windows
client uses?
http://blogs.sun.com/trond/date/20090625
^ client side replication.
I like this and feel it's more powerful, since tt scales past two severs
implicitly, and you can enable/disable it per key or key type. So instead
of halving your effective cache, you can make a decision that some bulk of
data is easier to recache than others.
-Dormando
http://blogs.sun.com/trond/date/20090625
^ client side replication.
I like this and feel it's more powerful, since tt scales past two severs
implicitly, and you can enable/disable it per key or key type. So instead
of halving your effective cache, you can make a decision that some bulk of
data is easier to recache than others.
How it works depends on which client you use. If you use the BeITMemcached client, when one instance goes down it will internally mark it as dead, start writing about it in the error log, and all requests that would end up at that server will be cache misses, which means that if you only have two servers, half of your data will not be cached. Your application should be able to handle this, and you should have something monitoring the servers and the error log so that you can see that one instance is down, and then you have the choice of either bringing the server back up again, or removing it from the configuration of you application and restarting it.
If you have a client that supports automatic failover (BeITMemcached doesn't) then in the scenario above, all your data would be cached on the other instance instead, so you would still be fully cached while bringing the failing instance back up, or removing it from the configuration. However, you would still have to restart your application to reset the failover. This would be the best option, I'll try to add failover to the BeITMemcached client as soon as I have time for it. :-)
The third case is a client that supports automatic failover, and automatic recovery from failover. It's similar to the scenario above, except it won't need an application restart when the failing memcached server comes back up, HOWEVER this means that your cache will not be synchronized while your application gradually discovers that the memcached server is back up. Depending on your application, this can be catastrophic, or it can be inconsequential. I don't really want to add this to my client, and if I do, there will be lots of warnings about it.
Heh... There're a few use cases that get me. One is new users who're
bolting memcached on to deal with horrific backend responsetime/etc. If
they're not too huge they can reduce cache efficiency by half and not
bankrupt themselves. Then over time remove keys from the replicated
scenario.
For larger folks it'd hopefully be used sparingly.
-Dormando
- Steve
On Tue, 20 Oct 2009, Henrik Schröder wrote:
> Date: Tue, 20 Oct 2009 14:13:23 +0200
> From: Henrik Schröder <skr...@gmail.com>
> Reply-To: memc...@googlegroups.com
> To: memc...@googlegroups.com
> Subject: Re: memcached failover solution?
--
Steve Webb - Lead System Administrator for Pronto.com
Email: sw...@pronto.com (Please send any work requests to: r...@pronto.com)
Cell: 303-564-4269, Office: 303-351-1312, YIM: scumola