diff options
Diffstat (limited to 'ctdb/config/events.d/91.lvs')
-rwxr-xr-x | ctdb/config/events.d/91.lvs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/ctdb/config/events.d/91.lvs b/ctdb/config/events.d/91.lvs index 678215b4a3b..4860030aeab 100755 --- a/ctdb/config/events.d/91.lvs +++ b/ctdb/config/events.d/91.lvs @@ -54,8 +54,11 @@ case $cmd in ipvsadm -D -u $CTDB_LVS_PUBLIC_IP:0 kill_tcp_connections $CTDB_LVS_PUBLIC_IP - # are we the recmaster ? - ctdb isnotrecmaster >/dev/null 2>/dev/null || { + PNN=`ctdb pnn | sed -e "s/.*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 @@ -70,10 +73,12 @@ case $cmd in ipvsadm -A -t $CTDB_LVS_PUBLIC_IP:0 -p 9999 -s lc ipvsadm -A -u $CTDB_LVS_PUBLIC_IP:0 -p 9999 -s lc - ctdb status 2>/dev/null | egrep "^pnn:" | grep -v DISCONNECTED | grep -v "(THIS NODE)" | sed -e "s/^pnn:[0-9]* //" -e "s/[ ].*//" | while read IP; do + # 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 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 |