From: Martin Schwenke Date: Wed, 6 Apr 2016 20:11:49 +0000 (+1000) Subject: ctdb-scripts: LVS eventscript cleanups X-Git-Tag: talloc-2.1.7~252 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7d522794ef9a70e43d6ac85decb619c90e115144;p=thirdparty%2Fsamba.git ctdb-scripts: LVS eventscript cleanups Stylistic changes and cleaner code. No functional changes. Signed-off-by: Martin Schwenke Reviewed-by: Amitay Isaacs --- diff --git a/ctdb/config/events.d/91.lvs b/ctdb/config/events.d/91.lvs index b42d62cc825..c6ef024a088 100755 --- a/ctdb/config/events.d/91.lvs +++ b/ctdb/config/events.d/91.lvs @@ -16,12 +16,12 @@ if ! type ipvsadm >/dev/null 2>&1 ; then exit 0 fi -case "$1" in - startup) - ipvsadm -D -t $CTDB_LVS_PUBLIC_IP:0 >/dev/null 2>&1 - ipvsadm -D -u $CTDB_LVS_PUBLIC_IP:0 >/dev/null 2>&1 +case "$1" in +startup) + ipvsadm -D -t "$CTDB_LVS_PUBLIC_IP" >/dev/null 2>&1 + ipvsadm -D -u "$CTDB_LVS_PUBLIC_IP" >/dev/null 2>&1 - ip addr add $CTDB_LVS_PUBLIC_IP/32 dev lo scope host + ip addr add "${CTDB_LVS_PUBLIC_IP}/32" dev lo scope host # do not respond to ARPs that are for ip addresses with scope 'host' set_proc_maybe sys/net/ipv4/conf/all/arp_ignore 3 @@ -29,59 +29,55 @@ case "$1" in set_proc_maybe sys/net/ipv4/conf/all/arp_announce 2 ;; - shutdown) - ipvsadm -D -t $CTDB_LVS_PUBLIC_IP:0 - ipvsadm -D -u $CTDB_LVS_PUBLIC_IP:0 +shutdown) + ipvsadm -D -t "$CTDB_LVS_PUBLIC_IP" + ipvsadm -D -u "$CTDB_LVS_PUBLIC_IP" - # remove the ip - ip addr del $CTDB_LVS_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null + ip addr del "${CTDB_LVS_PUBLIC_IP}/32" dev lo >/dev/null 2>&1 flush_route_cache ;; - ipreallocated) - # kill off any tcp connections - ipvsadm -D -t $CTDB_LVS_PUBLIC_IP:0 >/dev/null 2>&1 - ipvsadm -D -u $CTDB_LVS_PUBLIC_IP:0 >/dev/null 2>&1 +ipreallocated) + # Kill connections + ipvsadm -D -t "$CTDB_LVS_PUBLIC_IP" >/dev/null 2>&1 + ipvsadm -D -u "$CTDB_LVS_PUBLIC_IP" >/dev/null 2>&1 kill_tcp_connections_local_only \ "$CTDB_PUBLIC_INTERFACE" "$CTDB_LVS_PUBLIC_IP" ctdb_get_pnn - LVSMASTER=`ctdb lvsmaster | sed -e "s/.*Node //" -e "s/ .*//"` - - [ "$pnn" != "$LVSMASTER" ] && { - # we are not the lvs master so we have to - # change the ip address to have scope host so we wont respond - # to arps - ip addr del $CTDB_LVS_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null - ip addr add $CTDB_LVS_PUBLIC_IP/32 dev lo scope host >/dev/null 2>/dev/null + lvsmaster=$(ctdb lvsmaster | sed -n -e 's/Node \([0-9]*\) is LVS master/\1/p') + if [ "$pnn" != "$lvsmaster" ] ; then + # This node is not the LVS master so change the IP address + # to have scope "host" so this node won't respond to ARPs + ip addr del "${CTDB_LVS_PUBLIC_IP}/32" dev lo >/dev/null 2>&1 + ip addr add "${CTDB_LVS_PUBLIC_IP}/32" dev lo scope host exit 0 - } + fi - # change the scope so we start responding to arps - ip addr del $CTDB_LVS_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null - ip addr add $CTDB_LVS_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null + # Change the scope so this node starts responding to ARPs + ip addr del "${CTDB_LVS_PUBLIC_IP}/32" dev lo >/dev/null 2>&1 + ip addr add "${CTDB_LVS_PUBLIC_IP}/32" dev lo >/dev/null 2>&1 - ipvsadm -A -t $CTDB_LVS_PUBLIC_IP:0 -p 1999999 -s lc - ipvsadm -A -u $CTDB_LVS_PUBLIC_IP:0 -p 1999999 -s lc + ipvsadm -A -t "$CTDB_LVS_PUBLIC_IP" -p 1999999 -s lc + ipvsadm -A -u "$CTDB_LVS_PUBLIC_IP" -p 1999999 -s lc - # add all nodes (except ourselves) to the lvs config - ctdb lvs | egrep -v "^${pnn}:" | sed -e "s/.*://" | while read IP; do - ipvsadm -a -t $CTDB_LVS_PUBLIC_IP:0 -r $IP -g - ipvsadm -a -u $CTDB_LVS_PUBLIC_IP:0 -r $IP -g + # Add all nodes (except this node) as LVS servers + ctdb lvs | + awk -F: -v pnn="$pnn" '$1 != pnn { print $2 }' | + while read ip ; do + ipvsadm -a -t "$CTDB_LVS_PUBLIC_IP" -r $ip -g + ipvsadm -a -u "$CTDB_LVS_PUBLIC_IP" -r $ip -g done - # and add the localhost too - ipvsadm -a -t $CTDB_LVS_PUBLIC_IP:0 -r 127.0.0.1 - ipvsadm -a -u $CTDB_LVS_PUBLIC_IP:0 -r 127.0.0.1 - # send out a gratious arp so our peers will update their arp tables - ctdb gratiousarp $CTDB_LVS_PUBLIC_IP $CTDB_PUBLIC_INTERFACE >/dev/null 2>/dev/null + # Add localhost too... + ipvsadm -a -t "$CTDB_LVS_PUBLIC_IP" -r 127.0.0.1 + ipvsadm -a -u "$CTDB_LVS_PUBLIC_IP" -r 127.0.0.1 - flush_route_cache - ;; + ctdb gratiousarp \ + "$CTDB_LVS_PUBLIC_IP" "$CTDB_PUBLIC_INTERFACE" >/dev/null 2>&1 - *) - ctdb_standard_event_handler "$@" + flush_route_cache ;; esac