On Fri, Mar 06, 2009 at 11:47:14PM +0100, Alexander Staubo wrote: > On Fri, Mar 6, 2009 at 7:48 PM, Willy Tarreau <w...@1wt.eu> wrote: > > When it comes to just move an IP address between two machines an do > > nothing else, the VRRP protocol is really better. It's what is > > implemented in keepalived. Simple, efficient and very reliable. > > Actually, it seems that my information is out of date, and we (that > is, our IT management company that we outsource our system > administration to) are in fact using Keepalived these days. I was > confused by the presence of ha_logd on our boxes, which is part of the > Heartbeat package; don't know what the one is doing there. So, yeah, > you're right. Stick with Keepalived. :-)
Ah nice! The author will be please to read this, he's subscribed to the list :-) > > In fact it's useless to synchronise TCP sessions between load-balancers > > for fast-moving connections (eg: HTTP traffic). Some people require that > > for long sessions (terminal server, ...) but this cannot be achieved in > > a standard OS, you need to synchronise every minor progress of the TCP > > stack with the peer. > > A less ambitious scheme would have the new proxy take over the client > connection and retry the request with the next available backend. Will not work because the connection from the client to the proxy will have been broken during the take-over. The second proxy cannot inherit the primary one's sockets. > This > depends on a couple of factors: For one, it only works if nothing has > yet been sent back to the client. Secondly, it assumes the request > itself is repeatable without side effects. The latter, of course, is > application-dependent; but following the REST principle, in a > well-designed app GET requests are supposed to have no side effects, > so they can be retried, whereas POST, PUT etc. cannot. Still expensive > and error-prone, of course, but much more pragmatic and limited in > scope. What you're talking about are idempotent HTTP requests, which are quite well documented in RFC2616. Those are important to consider because idempotent requests are the only ones a proxy may retry upon a connection error when sending a request on a keep-alive session. IIRC, HEAD, PUT, GET and DELETE were supposed to be idempotent methods. But we all know that GET is not that much when used with CGIs. Willy