On Mon, 2011-03-21 at 17:50 -0700, Erik Schorr wrote:
> In other words, if a DNS request comes into the VIP on the load
> balancer, the load balancer forwards it (either via routing or nat) to a
> "real server", but that real server is unable to correctly receive that
> packet or process the query it contains for any reason, be it a dropped
> packet on the wire, intermittent CPU saturation, a missed interrupt,
> etc, then it would be desirable for the load balancer to detect that a
> response has not been sent back to the client from the realserver and
> basically re-send the same packet (same payload) to another real server
> in the cluster. The typical time it takes one of these servers to
> respond is usually less than 50ms, but may be as high as 100ms. If
> 200ms has passed after a request and the chosen server hasn't responded
> yet, retransmit a copy of the original request packet to a new server
> without the requesting client realizing there was a timeout.
So... that would be an application proxy, really. LVS/IPVS is an
"intelligent" (I use the word carefully!) router with rules dictating
where the traffic is sent. Once a packet is sent, that's it - there's no
state kept regarding content (ie. whether a connection was successful or
not) other than in the TCP sense, where the connection state is tracked
but *not* monitored. As with other routing devices, the application
layer is responsible for that bit of cleverness, and the routers are
below that layer.
Even with something like ldirectord, keepalived or mon monitoring your
realservers and changing the IPVS tables accordingly you wouldn't get
the guarantee you're after as your latency is so low.
You mention "UDP dns-style queries"; if this really is DNS then I would
consider building something different using a forwarding DNS server (or
more than one) which can then do the retries as necessary.
Please read the documentation before posting - it's available at:
LinuxVirtualServer.org mailing list - lvs-users@xxxxxxxxxxxxxxxxxxxxxx
Send requests to lvs-users-request@xxxxxxxxxxxxxxxxxxxxxx
or go to http://lists.graemef.net/mailman/listinfo/lvs-users