Hello,
Ian G Batten wrote:
On a related note, I am seeing problems with keepalived deleting
I was using multiple TCP_CHECK entries in a single real server. It
appears that if _any_ of them succeed, the machine is considered to be
up.
Sidenote:
In an LVS health checking framework I've written for my company I once had to
deal with that situation and it can be tricky. I then implemented a means by
which one could provide additional information as to how return status of health
checks should be dealt with. I used the boolean AND and OR. So one could specify
something along the lines of (fictive example):
VIP1 = {
RIP1 = {
NETCONF = {
IFACE = eth3;
MAC =;
IP = 192.168.1.1;
};
# [ more LVS specific information ]
CHECK1 = {
METHOD = tcp:80;
RETRY = 1;
TMOUT = 3500; #in ms
LOG = {
# [ ... ]
};
};
CHECK2 = {
METHOD = tcp:443;
RETRY = 2;
TMOUT = 5000;
};
CHECK3 = {
METHOD = http:80;
RETRY = 1;
TMOUT = 5000;
URL = http://VIP1->RIP1->NETCONF->IP:VIP1->RIP1->CHECK3->METHOD[2]/\
test.html;
EXPECT_STRING = "MySQL DB: OK";
};
HEALTHCHECK = {
METHOD = ((CHECK1 || CHECK2) && (CHECK2));
RETRY = 1;
TMOUT = ( VIP1->RIP1->CHECK1->TMOUT * VIP1->RIP1->CHECK1->RETRY +
VIP1->RIP1->CHECK2->TMOUT * VIP1->RIP1->CHECK2->RETRY +
VIP1->RIP1->CHECK3->TMOUT * VIP1->RIP1->CHECK3->RETRY );
};
};
RIP2 = {
};
};
Alexandre, is it possible to configure keepalived in such a way?
That, by the way, is one of the reasons why hardware load balancers can never
keep up with software load balancers as for example provided by the LVS project.
We probably don't have the throughput of a hardware load balancer but we sure as
hell do have flexibility :).
Best regards,
Roberto Nibali, ratz
--
echo '[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq' | dc
|