LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

Re: Problems with fwmark LVS setup; LVS/keepalived interaction

To: "LinuxVirtualServer.org users mailing list." <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: Problems with fwmark LVS setup; LVS/keepalived interaction
Cc: Alexandre Cassen <Alexandre.Cassen@xxxxxxxxxx>
Cc: Gareth Whitcomb <G.Whitcomb@xxxxxxxxxx>
From: Roberto Nibali <ratz@xxxxxx>
Date: Wed, 13 Aug 2003 14:06:20 +0200
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

<Prev in Thread] Current Thread [Next in Thread>