2
# script to manage the ip multiplexer for a single public address cluster
7
[ -z "$CTDB_SINGLE_PUBLIC_IP" ] && exit 0
8
[ -z "$CTDB_PUBLIC_INTERFACE" ] && exit 0
13
PATH=/usr/bin:/bin:/usr/sbin:/sbin:$PATH
18
ip addr add $CTDB_SINGLE_PUBLIC_IP/32 dev lo scope host >/dev/null 2>/dev/null
20
# do not respond to ARPs that are for ip addresses with scope 'host'
21
echo 3 > /proc/sys/net/ipv4/conf/all/arp_ignore
26
ip addr del $CTDB_SINGLE_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null
28
# remove any iptables rules
29
iptables -D INPUT -i $CTDB_PUBLIC_INTERFACE -d $CTDB_SINGLE_PUBLIC_IP -j DROP 2> /dev/null
31
# kill off any ipmux processes
32
killall -9 ctdb_ipmux >/dev/null 2>/dev/null
34
# flush our route cache
35
echo 1 > /proc/sys/net/ipv4/route/flush
45
# remove any previous rule for queueing
46
iptables -D INPUT -d $CTDB_SINGLE_PUBLIC_IP -i $CTDB_PUBLIC_INTERFACE -j QUEUE >/dev/null 2>/dev/null
48
# kill off any ipmux processes
49
killall -9 ctdb_ipmux >/dev/null 2>/dev/null
51
# kill off any tcp connections
52
iptables -D INPUT -i $CTDB_PUBLIC_INTERFACE -d $CTDB_SINGLE_PUBLIC_IP -j DROP 2> /dev/null
53
iptables -I INPUT -i $CTDB_PUBLIC_INTERFACE -d $CTDB_SINGLE_PUBLIC_IP -j DROP
54
kill_tcp_connections $CTDB_SINGLE_PUBLIC_IP
55
iptables -D INPUT -i $CTDB_PUBLIC_INTERFACE -d $CTDB_SINGLE_PUBLIC_IP -j DROP 2> /dev/null
57
# are we the recmaster ?
58
ctdb isnotrecmaster >/dev/null 2>/dev/null || {
59
# change the ip address to have scope host so we wont respond
61
ip addr del $CTDB_SINGLE_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null
62
ip addr add $CTDB_SINGLE_PUBLIC_IP/32 dev lo scope host >/dev/null 2>/dev/null
66
# change the scope so we start responding to arps
67
ip addr del $CTDB_SINGLE_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null
68
ip addr add $CTDB_SINGLE_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null
70
# send out a gratious arp so our peers will update their arp tables
71
ctdb gratiousarp $CTDB_SINGLE_PUBLIC_IP $CTDB_PUBLIC_INTERFACE >/dev/null 2>/dev/null
73
# mark all these for queueing
74
iptables -I INPUT 1 -d $CTDB_SINGLE_PUBLIC_IP -i $CTDB_PUBLIC_INTERFACE -j QUEUE >/dev/null 2>/dev/null
78
# flush our route cache
79
echo 1 > /proc/sys/net/ipv4/route/flush