Problem with Send_arp and Gratuitous ARP

Latest response

Hello,

I have a problem with send_arp, when i switch to an other node, I explain :

My setup :

OS : Redhat 7.4

Applications :
Pacemaker 1.1.16
resource-agents 3.9.5
corosync 2.4.0

I have a cluster with some VIP, at each switch the script /usr/lib/ocf/resource.d/heartbeat/IPaddr have to send Gratuitous ARP based on /usr/libexec/heartbeat/send_arp to announce to the switch the change of MAC address related to the VIP.

But when i switch i can see in /var/log/message :

Feb  9 10:50:19 [localhost] IPaddr2-centreon(vip_centreon)[692]: INFO: /usr/libexec/heartbeat/send_arp -i 200 -r 5 -p /var/run/resource-agents/send_arp-10.10.20.10 eth0 10.10.20.10 auto not_used not_used
(10.10.20.10 étant l'adresse de ma VIP)

When i execute this command manually i've an error :

[root@machine_backup run]# /usr/libexec/heartbeat/send_arp -i 200 -r 5 -p /var/run/resource-agents/send_arp-10.10.20.10 eth0 10.10.20.10 auto not_used not_used
/usr/libexec/heartbeat/send_arp: invalid option -- 'r'
Usage: send_arp [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination
  -f : quit on first reply (not available in libnet version)
  -q : be quiet (not available in libnet version)
  -b : keep broadcasting, don't go unicast (not available in libnet version)
  -i : repeat interval in milliseconds (ignored)
  -p : pid file (ignored)
  -D : duplicate address detection mode (not available in libnet version)
  -U : Unsolicited ARP mode, update your neighbours (not available in libnet version)
  -A : ARP answer mode, update your neighbours (not available in libnet version)
  -V : print version and exit (not available in libnet version)
  -c count : how many packets to send
  -w timeout : how long to wait for a reply (not available in libnet version)
  -I device : which ethernet device to use (eth0)
  -s source : source ip address (not available in libnet version)
  -m mac : source MAC address (ignored).
  destination : ask for what ip address

The argument is not correct but with an other version of RedHat i haven't this problem

OS : Redhat 6.9

Applications :
Pacemaker 1.1.12
resource-agents 3.9.5
corosync 1.4.7

[root@autre_cluster]# /usr/libexec/heartbeat/send_arp -i 200 -r 5 -p /var/run/resource-agents/send_arp-10.10.20.11 eth3 10.10.20.11 auto not_used not_used
ARPING 10.10.20.11 from 10.10.20.11 eth3
Sent 5 probes (5 broadcast(s))
Received 0 response(s)

I don't know why this difference exist betweek Redhat 6.9 and Redhat 7.4.

Thank you,

John

Responses

Bonjour John

Regarding my configuration below :

RedHat 7.5
corosync 2.4.3-2.el7
pacemaker 1.1.18-11.el7
resource-agents 3.9.5-124.el7

the correct syntaxe should be :

/usr/libexec/heartbeat/send_arp -i 200 -c 5 -p /var/run/resource-agents/send_arp-10.10.20.10 -I eth0 -m auto 10.10.20.10

I got it from /var/log/messages and tested it with success without the cluster activated : I manually move floating IP from node to node. Without the Gratuitous ARP, I can see that a client box takes a long time to update its arp cache. If I issue a send_arp after activating the floating IP, clients' arp cache are updated almost immediatly.

Note that arping is supposed to do the same than send_arp ... but I can't have it working properly ... :-(

Hope this help

Eric