107 lines
2.4 KiB
Bash
107 lines
2.4 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Startup script handle the initialisation of LVS
|
|
#
|
|
# chkconfig: 2345 08 92
|
|
#
|
|
# description: Initialise the Linux Virtual Server
|
|
# http://www.linuxvirtualserver.org/
|
|
#
|
|
# Script Author: Horms <horms@vergenet.net>
|
|
#
|
|
# Based on init script for ipchains by Joshua Jensen <joshua@redhat.com>
|
|
#
|
|
# Changes:
|
|
# Wenzhuo Zhang : fixed the typo of failure function
|
|
#
|
|
# 04-28-2004: modified by Silvan Calarco for the QiLinux distrubition
|
|
#
|
|
# config: /etc/sysconfig/ipvsadm
|
|
# config: /etc/ipvsadm.rules
|
|
|
|
|
|
# set the configuration file
|
|
if [ -f "/etc/sysconfig/ipvsadm" ]; then
|
|
IPVSADM_CONFIG="/etc/sysconfig/ipvsadm"
|
|
elif [ -f "/etc/ipvsadm.rules" ]; then
|
|
IPVSADM_CONFIG="/etc/ipvsadm.rules"
|
|
else
|
|
IPVSADM_CONFIG="/etc/sysconfig/ipvsadm"
|
|
fi
|
|
|
|
# Use the funtions provided by Red Hat or use our own
|
|
if [ -f /etc/rc.d/init.d/functions ]
|
|
then
|
|
. /etc/rc.d/init.d/functions
|
|
else
|
|
function action {
|
|
echo "$1"
|
|
shift
|
|
$@
|
|
}
|
|
function success {
|
|
echo -n "Success"
|
|
}
|
|
function failure {
|
|
echo -n "Failed"
|
|
}
|
|
fi
|
|
|
|
# Check for ipvsadm in both /sbin and /usr/sbin
|
|
# The default install puts it in /sbin, as it is analogos to commands such
|
|
# as route and ipchains that live in /sbin. Some vendors, most notibly
|
|
# Red Hat insist on moving it to /usr/sbin
|
|
if [ ! -x /sbin/ipvsadm -a ! -x /usr/sbin/ipvsadm ]; then
|
|
exit 0
|
|
fi
|
|
|
|
case "$1" in
|
|
start)
|
|
# If we don't clear these first, we might be adding to
|
|
# pre-existing rules.
|
|
action "Clearing the current IPVS table:" ipvsadm -C
|
|
echo -n "Applying IPVS configuration: "
|
|
ipvsadm-restore < "$IPVSADM_CONFIG" && \
|
|
success "Applying IPVS configuration" || \
|
|
failure "Applying IPVS configuration"
|
|
echo
|
|
touch /var/lock/subsys/ipvsadm
|
|
;;
|
|
|
|
stop)
|
|
action "Clearing the current IPVS table:" ipvsadm -C
|
|
rm -f /var/lock/subsys/ipvsadm
|
|
;;
|
|
|
|
reload|reload-force|restart)
|
|
#Start should flush everything
|
|
$0 start
|
|
;;
|
|
|
|
panic)
|
|
# I'm not sure what panic does but in the case of IPVS
|
|
# it makes sense just to clear everything
|
|
action "Clearing the current IPVS table:" ipvsadm -C
|
|
;;
|
|
|
|
status)
|
|
ipvsadm -L -n
|
|
;;
|
|
|
|
save)
|
|
echo -n "Saving IPVS table to $IPVSADM_CONFIG: "
|
|
ipvsadm-save -n > $IPVSADM_CONFIG 2>/dev/null && \
|
|
success "Saving IPVS table to $IPVSADM_CONFIG" || \
|
|
failure "Saving IPVS table to $IPVSADM_CONFIG"
|
|
echo
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: ipvsadm
|
|
{start|stop|restart|status|panic|save|reload|reload-force}"
|
|
exit 1
|
|
esac
|
|
|
|
exit 0
|
|
|