~ubuntu-branches/ubuntu/vivid/ctdb/vivid-proposed

« back to all changes in this revision

Viewing changes to config/events.d/90.ipmux

  • Committer: Bazaar Package Importer
  • Author(s): Mathieu Parent
  • Date: 2008-04-26 15:21:27 UTC
  • Revision ID: james.westby@ubuntu.com-20080426152127-58mv5ojv5q362ise
Tags: upstream-1.0.34+git200804242206
ImportĀ upstreamĀ versionĀ 1.0.34+git200804242206

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
# script to manage the ip multiplexer for a single public address cluster
 
3
 
 
4
. $CTDB_BASE/functions
 
5
loadconfig ctdb
 
6
 
 
7
[ -z "$CTDB_SINGLE_PUBLIC_IP" ] && exit 0
 
8
[ -z "$CTDB_PUBLIC_INTERFACE" ] && exit 0
 
9
 
 
10
cmd="$1"
 
11
shift
 
12
 
 
13
PATH=/usr/bin:/bin:/usr/sbin:/sbin:$PATH
 
14
 
 
15
case $cmd in 
 
16
     startup)
 
17
        modprobe ip_queue
 
18
        ip addr add $CTDB_SINGLE_PUBLIC_IP/32 dev lo scope host >/dev/null 2>/dev/null
 
19
 
 
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
 
22
        ;;
 
23
 
 
24
     shutdown)
 
25
        # remove the ip
 
26
        ip addr del $CTDB_SINGLE_PUBLIC_IP/32 dev lo >/dev/null 2>/dev/null
 
27
 
 
28
        # remove any iptables rules
 
29
        iptables -D INPUT -i $CTDB_PUBLIC_INTERFACE -d $CTDB_SINGLE_PUBLIC_IP -j DROP 2> /dev/null
 
30
 
 
31
        # kill off any ipmux processes
 
32
        killall -9 ctdb_ipmux >/dev/null 2>/dev/null
 
33
 
 
34
        # flush our route cache
 
35
        echo 1 > /proc/sys/net/ipv4/route/flush
 
36
        ;;
 
37
 
 
38
     takeip)
 
39
        ;;
 
40
 
 
41
     releaseip)
 
42
        ;;
 
43
 
 
44
     recovered)
 
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
 
47
 
 
48
        # kill off any ipmux processes
 
49
        killall -9 ctdb_ipmux >/dev/null 2>/dev/null
 
50
 
 
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
 
56
 
 
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
 
60
            # to arps
 
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
 
63
            exit 0
 
64
        }
 
65
 
 
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
 
69
 
 
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
 
72
 
 
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
 
75
 
 
76
        ctdb_ipmux &
 
77
 
 
78
        # flush our route cache
 
79
        echo 1 > /proc/sys/net/ipv4/route/flush
 
80
        ;;
 
81
 
 
82
      monitor)
 
83
        ;;
 
84
 
 
85
esac
 
86
 
 
87
exit 0