> > How about selecting a new server for the connection, and signalling (not
> > necessarily via signals, mind you...) to a user-space program that the
> > target should immediately be checked for availability? Then the userspace
> > program can set up checks to be run, and re-add it later when it becomes
> > available again -- assuming it really is unavailable.
> My first thought is that this can be very complex. I don't
> have good ideas.
Or it can be very simple. You could simply register a program when you
create a virtual service on the director. When a condition occurs that
the LVS code has a reasonable belief that something may go wrong, it
simply spawns off the program with a pre-defined set of arguments; for
example,
program host port time
I think that should probably be sufficient in almost all cases, since if
you have very specific needs for the check, you can simply register a
program which provides them.
And it seems reasonably simple; the hardest part of that would probably
be the code that triggers it.
Thanks,
Kyle Sparger
On Tue, 30 Jan 2001, Julian Anastasov wrote:
>
> Hello,
>
> On Mon, 29 Jan 2001, Kyle Sparger wrote:
>
> > How about selecting a new server for the connection, and signalling (not
> > necessarily via signals, mind you...) to a user-space program that the
> > target should immediately be checked for availability? Then the userspace
> > program can set up checks to be run, and re-add it later when it becomes
> > available again -- assuming it really is unavailable.
>
> My first thought is that this can be very complex. I don't
> have good ideas.
>
> > If the server _is_ available, and acting normally, it should respond in
> > the first place, though, right? :)
> >
> > This method might be more efficient than the existing scheduled poll
> > method, but I'm sure it also has hidden traps.
>
> Agreed. If you have many real servers the L4 checks can eat
> many CPU cycles in the director.
>
> There can be another model: register for information
> in a real server agent who will notify the director with one
> packet (on each 1 to 5 seconds): "All my real services are OK".
> If some real service is stopped it is reported. If the host is down
> or busy and the agent can't report "I'm alive" for specific time
> all real services can be removed from the director user space cluster
> software. Of course, this is dangerous if the kernel kills your agent
> on OOM ("thanks" to the new OOM killers) but everything can happen.
> 20 real servers reporting info on each 2 seconds means 10p/sec
> which is a low value. With this packet we can even report the weight(s)
> for the real services and to use it as iamalive reply.
>
> BTW, I'm working on such system but am too busy with other
> things. I'll try to implement the basics and then other people can
> extend it.
>
> > Thanks,
> >
> > Kyle Sparger - Senior System Administrator
> > Dialtone Internet - Extremely Fast Web Systems
> > (954) 581-0097 x 122 - Voice (954) 581-7629 - Fax
> > ksparger@xxxxxxxxxxxxxxxxxxxx
> > http://www.dialtoneinternet.net
> > "Forget college, I'm going pro."
>
>
> Regards
>
> --
> Julian Anastasov <ja@xxxxxx>
>
>
|