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


Reply via email to