CVE-2016-0771: tests/dns: Remove dependencies on env variables
[Samba.git] / ctdb / config / events.d / 91.lvs
blob47adf33c6d0c34288dd29283c0562b301a8151d8
1 #!/bin/sh
2 # script to manage the lvs ip multiplexer for a single public address cluster
4 [ -n "$CTDB_BASE" ] || \
5 export CTDB_BASE=$(cd -P $(dirname "$0") ; dirname "$PWD")
7 . $CTDB_BASE/functions
9 loadconfig ctdb
11 [ -z "$CTDB_LVS_PUBLIC_IP" ] && exit 0
12 [ -z "$CTDB_PUBLIC_INTERFACE" ] && exit 0
14 [ -x /sbin/ipvsadm ] || {
15 echo "LVS configured but /sbin/ipvsadm is not installed."
16 exit 0
19 case "$1" in
20 startup)
21 ipvsadm -D -t $CTDB_LVS_PUBLIC_IP:0
22 ipvsadm -D -u $CTDB_LVS_PUBLIC_IP:0
24 ip addr add $CTDB_LVS_PUBLIC_IP/32 dev lo scope host >/dev/null 2>/dev/null
26 # do not respond to ARPs that are for ip addresses with scope 'host'
27 echo 3 > /proc/sys/net/ipv4/conf/all/arp_ignore
28 # do not send out arp requests from loopback addresses
29 echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
32 shutdown)
33 ipvsadm -D -t $CTDB_LVS_PUBLIC_IP:0
34 ipvsadm -D -u $CTDB_LVS_PUBLIC_IP:0
36 # remove the ip
37 ip addr del $CTDB_LVS_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null
39 # flush our route cache
40 echo 1 > /proc/sys/net/ipv4/route/flush
43 recovered|ipreallocated)
44 # kill off any tcp connections
45 ipvsadm -D -t $CTDB_LVS_PUBLIC_IP:0
46 ipvsadm -D -u $CTDB_LVS_PUBLIC_IP:0
47 kill_tcp_connections_local_only $CTDB_LVS_PUBLIC_IP
49 ctdb_get_pnn
50 LVSMASTER=`ctdb lvsmaster | sed -e "s/.*Node //" -e "s/ .*//"`
52 [ "$pnn" != "$LVSMASTER" ] && {
53 # we are not the lvs master so we have to
54 # change the ip address to have scope host so we wont respond
55 # to arps
56 ip addr del $CTDB_LVS_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null
57 ip addr add $CTDB_LVS_PUBLIC_IP/32 dev lo scope host >/dev/null 2>/dev/null
58 exit 0
61 # change the scope so we start responding to arps
62 ip addr del $CTDB_LVS_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null
63 ip addr add $CTDB_LVS_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null
65 ipvsadm -A -t $CTDB_LVS_PUBLIC_IP:0 -p 1999999 -s lc
66 ipvsadm -A -u $CTDB_LVS_PUBLIC_IP:0 -p 1999999 -s lc
68 # add all nodes (except ourselves) to the lvs config
69 ctdb lvs | egrep -v "^${pnn}:" | sed -e "s/.*://" | while read IP; do
70 ipvsadm -a -t $CTDB_LVS_PUBLIC_IP:0 -r $IP -g
71 ipvsadm -a -u $CTDB_LVS_PUBLIC_IP:0 -r $IP -g
72 done
73 # and add the localhost too
74 ipvsadm -a -t $CTDB_LVS_PUBLIC_IP:0 -r 127.0.0.1
75 ipvsadm -a -u $CTDB_LVS_PUBLIC_IP:0 -r 127.0.0.1
77 # send out a gratious arp so our peers will update their arp tables
78 ctdb gratiousarp $CTDB_LVS_PUBLIC_IP $CTDB_PUBLIC_INTERFACE >/dev/null 2>/dev/null
80 # flush our route cache
81 echo 1 > /proc/sys/net/ipv4/route/flush
85 ctdb_standard_event_handler "$@"
87 esac
89 exit 0