[Pacemaker] Arp and configuration advice [SOLVED]

E-Blokos infos at e-blokos.com
Tue Sep 15 14:26:56 EDT 2009


----- Original Message ----- 
From: "j" <j at intuitivecreations.com>
To: <pacemaker at clusterlabs.org>
Sent: Friday, September 11, 2009 10:45 AM
Subject: Re: [Pacemaker] Arp and configuration advice


> Hi,
>
> I tried running the send_arp program by hand. The output suggested it
> was looking for the IP address given via the given eth.
>
> So, I have VIP 192.168.20.150
> eth0 with 192.168.20.10
>
> and the send_arp program would say something similar to
> "Looking up 192.168.20.150 from eth0 192.168.20.10"
>
> and would successfully update the arp cache for the VIP.
>
> That tells me that either I'm using the program completely backwards or
> it's actually looking a who-is lookup and not a gratuitous announcement.
>
> I'm not a network guru though, so I could be off base here.
>
> j
>
> On Fri, 2009-09-11 at 12:10 +0200, Dejan Muhamedagic wrote:
>> Hi,
>>
>> On Wed, Sep 09, 2009 at 01:55:33PM -0400, j wrote:
>> > Thanks for your replies.
>> >
>> > I seemed to have found the solution. Perhaps this will help others, so
>> > I'll send along what I've found:
>> >
>> > I have a VIP on all db servers using IPAddr2. I found this link (to
>> > follow) before but executed the instructions on ALL machines, which was
>> > my stupidity...
>> >
>> > http://kb.linuxvirtualserver.org/wiki/Using_arp_announce/arp_ignore_to_disable_ARP
>> >
>> > Instead, the instructions should be followed for all machines with a 
>> > VIP
>> > *not* running LVS/director.
>> >
>> > That solves the problem of the wrong machines replying to who-is
>> > requests.
>> >
>> > The only thing left is to make sure the web servers update their arp
>> > cache. So, I can execute SendArp on the web servers via an order
>> > constraint to they re-ask for the arp address for the director machine.
>> >
>> > In testing, I had found that the SendArp tool (contrary to what it 
>> > says)
>> > actually *asks* for the arp address, it doesn't send a gratuitous arp
>> > like advertised.
>>
>> It does send an ARP packet. You can take a look at send_arp.c.
>> How did you find out it doesn't?
>>
>> Thanks,
>>
>> Dejan
>>
>> > I hope this helps someone. Thank you all so much for your input!
>> >
>> > Justin
>> >
>> > On Wed, 2009-09-09 at 11:13 -0400, E-Blokos wrote:
>> > > ----- Original Message ----- 
>> > > From: <Darren.Mansell at opengi.co.uk>
>> > > To: <pacemaker at clusterlabs.org>
>> > > Sent: Wednesday, September 09, 2009 10:39 AM
>> > > Subject: Re: [Pacemaker] Arp and configuration advice
>> > >
>> > >
>> > > >> Greetings,
>> > > >>
>> > > >> I have a two webserver/two database server clustered setup. I've 
>> > > >> got
>> > > >> ldirector and LVS managed by pacemaker and configured to be able 
>> > > >> to
>> > > > run
>> > > >> on either database machine.
>> > > >>
>> > > >> I know how to disable ARP for the machine not running ldirector,
>> > > >> unfortunately I'm not sure how to dynamically get the webservers 
>> > > >> to
>> > > >> update their ARP cache when ldirector gets moved upon failure.
>> > > >>
>> > > >> Is it possible to set up a service for the two web servers to 
>> > > >> delete
>> > > >> the
>> > > >> ARP cache for the VIP on the event that ldirector gets moved?
>> > > >
>> > > > The IPaddr2 RA runs send_arp when the start action is called I 
>> > > > believe:
>> > > >
>> > > >
>> > > > #
>> > > > # Run send_arp to note peers about new mac address
>> > > > #
>> > > > run_send_arp() {
>> > > >        ARGS="-i $ARP_INTERVAL_MS -r $ARP_REPEAT -p $SENDARPPIDFILE 
>> > > > $NIC
>> > > > $BASEIP auto not_used not_used"
>> > > >        if [ "x$IP_CIP" = "xyes" ] ; then
>> > > >            if [ x = "x$IF_MAC" ] ; then
>> > > >                MY_MAC=auto
>> > > >            else
>> > > >                MY_MAC=`echo ${IF_MAC} | sed -e 's/://'`
>> > > >            fi
>> > > >            ARGS="-i $ARP_INTERVAL_MS -r $ARP_REPEAT -p 
>> > > > $SENDARPPIDFILE
>> > > > $NIC $BASEIP $MY_MAC not_used not_used"
>> > > >        fi
>> > > >        ocf_log info "$SENDARP $ARGS"
>> > > >        case $ARP_BACKGROUND in
>> > > >        yes)
>> > > >                ($SENDARP $ARGS || ocf_log err "Could not send
>> > > > gratuitous arps" &) >&2
>> > > >                ;;
>> > > >        *)
>> > > >                $SENDARP $ARGS || ocf_log err "Could not send 
>> > > > gratuitous
>> > > > arps"
>> > > >                ;;
>> > > >        esac
>> > > > }
>> > > >
>> > > >
>> > > > So when the VIP is started on another node, other nodes should be
>> > > > notified the IP has changed hosts. Doesn't it work for you?
>> > > >
>> > > >>
>> > > >> I can build my own OCF script to update the arp cache, that's not 
>> > > >> an
>> > > >> issue. I simply don't know how to configure pacemaker to say "Oop. 
>> > > >> db2
>> > > >> died. Move ldirector to db1 and tell the webservers to update 
>> > > >> their
>> > > > ARP
>> > > >> cache".
>> > > >>
>> > > >> Any suggestions?
>> > > >>
>> > > >> Thanks in advance!
>> > > >>
>> > > >> Justin
>> > > >>
>> > > >
>> > > > Regards,
>> > > > Darren
>> > >
>> > > I have also this kind of problem months ago,
>> > > ARP was not really updating well I don't know why...
>> > >

I resolved ARP problem only specify in every ipaddr2 RA instance 
"arp_bg=true".
Also if you compile the last kernel version (2.6.31) with ARP daemon it will 
help.
So for my case gratuitous ARP are updated fine on 4 nodes FEDORA 10 64 bits

Thanks

Franck Chionna


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.





More information about the Pacemaker mailing list