1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
#!/bin/sh
IPVSADM="/sbin/ipvsadm"
IPVSADM_RULES="/etc/ipvsadm.rules"
IPVSADM_CONFIG="/etc/default/ipvsadm"
AUTO="false"
DAEMON="none" # none|master|backup
IFACE="eth0"
start () {
case $DAEMON in
master|backup)
echo -n "Starting IPVS Connection Synchronization Daemon ($DAEMON): "
$IPVSADM --start-daemon $DAEMON --mcast-interface $IFACE
echo "Done."
;;
esac
}
stop () {
case $DAEMON in
master|backup)
echo -n "Stopping IPVS Connection Synchronization Daemon ($DAEMON): "
$IPVSADM --stop-daemon
echo "Done."
;;
esac
}
flush () {
echo -n "Clearing the current IPVS table: "
ipvsadm -C
echo "Done."
}
load () {
echo -n "Loading IPVS configuration: "
grep -v "^#" $IPVSADM_RULES | $IPVSADM -R
echo "Done."
}
save () {
echo -n "Saving IPVS configuration: "
echo "# ipvsadm.rules" > $IPVSADM_RULES
$IPVSADM -S -n >> $IPVSADM_RULES
echo "Done."
}
if [ -f $IPVSADM_CONFIG ]; then
. $IPVSADM_CONFIG
fi
if [ ! -x $IPVSADM ]; then
exit 0
fi
if [ ! -f "/proc/net/ip_vs_conn" ]; then
echo "Kernel does not support IPVS!"
exit 0
fi
if [ ! -f $IPVSADM_RULES ]; then
echo "# ipvsadm.rules" > $IPVSADM_RULES
fi
case "$1" in
start)
if [ "$AUTO" = "true" ]; then
flush
load
fi
start
;;
stop)
stop
if [ "$AUTO" = "true" ]; then
save
flush
fi
;;
restart)
stop
if [ "$AUTO" = "true" ]; then
flush
load
fi
start
;;
reload|force-reload)
if [ "$AUTO" = "true" ]; then
flush
load
fi
;;
status)
ipvsadm -L -n
;;
rate)
ipvsadm -L --rate -n
;;
load)
flush
load
;;
save)
save
;;
*)
echo "Usage: $0
{start|stop|restart|status|rate|load|save|reload|force-reload}"
exit 1
;;
esac
exit 0
|