Backport the init script from RHEL6 (#593276).
This commit is contained in:
parent
506db94ef8
commit
0742eb65a7
23
ipvsadm-config
Normal file
23
ipvsadm-config
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Unload modules on restart and stop
|
||||||
|
# Value: yes|no, default: yes
|
||||||
|
# This option has to be 'yes' to get to a sane state for a ipvs
|
||||||
|
# restart or stop. Only set to 'no' if there are problems unloading ipvs
|
||||||
|
# modules.
|
||||||
|
IPVS_MODULES_UNLOAD="yes"
|
||||||
|
|
||||||
|
# Save current ipvs rules on stop.
|
||||||
|
# Value: yes|no, default: no
|
||||||
|
# Saves all ipvs rules to /etc/sysconfig/ipvsadm if ipvsadm gets stopped
|
||||||
|
# (e.g. on system shutdown).
|
||||||
|
IPVS_SAVE_ON_STOP="no"
|
||||||
|
|
||||||
|
# Save current ipvs rules on restart.
|
||||||
|
# Value: yes|no, default: no
|
||||||
|
# Saves all ipvs rules to /etc/sysconfig/ipvsadm if ipvsadm gets
|
||||||
|
# restarted.
|
||||||
|
IPVS_SAVE_ON_RESTART="no"
|
||||||
|
|
||||||
|
# Numeric status output
|
||||||
|
# Value: yes|no, default: yes
|
||||||
|
# Print IP addresses and port numbers in numeric format in the status output.
|
||||||
|
IPVS_STATUS_NUMERIC="yes"
|
169
ipvsadm.init
169
ipvsadm.init
@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
# Startup script handle the initialisation of LVS
|
# Startup script handle the initialisation of LVS
|
||||||
# chkconfig: - 08 92
|
# chkconfig: - 28 72
|
||||||
# description: Initialise the Linux Virtual Server
|
# description: Initialise the Linux Virtual Server
|
||||||
# config: /etc/sysconfig/ipvsadm
|
# config: /etc/sysconfig/ipvsadm
|
||||||
#
|
#
|
||||||
@ -15,60 +15,175 @@
|
|||||||
# balancer running on Linux.
|
# balancer running on Linux.
|
||||||
### END INIT INFO
|
### END INIT INFO
|
||||||
|
|
||||||
# set the configuration file
|
|
||||||
IPVSADM_CONFIG="/etc/sysconfig/ipvsadm"
|
|
||||||
|
|
||||||
# Source function library
|
# Source function library
|
||||||
. /etc/rc.d/init.d/functions
|
. /etc/rc.d/init.d/functions
|
||||||
|
|
||||||
|
IPVSADM=ipvsadm
|
||||||
|
IPVSADMRESTORE=${IPVSADM}-restore
|
||||||
|
IPVSADMSAVE=${IPVSADM}-save
|
||||||
|
# Saved IPVS data
|
||||||
|
IPVSADM_DATA=/etc/sysconfig/$IPVSADM
|
||||||
|
# Configuration
|
||||||
|
IPVSADM_CONFIG=/etc/sysconfig/${IPVSADM}-config
|
||||||
|
IPVS=ip_vs
|
||||||
|
PROC_IPVS=/proc/net/$IPVS
|
||||||
|
VAR_SUBSYS_IPVSADM=/var/lock/subsys/$IPVSADM
|
||||||
|
|
||||||
|
if [ ! -x /sbin/$IPVSADM ]; then
|
||||||
|
echo -n $"${IPVSADM}: /sbin/$IPVSADM does not exist."; warning; echo
|
||||||
|
exit 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Old or new modutils
|
||||||
|
/sbin/modprobe --version 2>&1 | grep -q module-init-tools \
|
||||||
|
&& NEW_MODUTILS=1 \
|
||||||
|
|| NEW_MODUTILS=0
|
||||||
|
|
||||||
|
# Default IPVSADM configuration:
|
||||||
|
IPVS_MODULES_UNLOAD="yes"
|
||||||
|
IPVS_SAVE_ON_STOP="no"
|
||||||
|
IPVS_SAVE_ON_RESTART="no"
|
||||||
|
IPVS_STATUS_NUMERIC="yes"
|
||||||
|
|
||||||
|
# Load IPVSADM configuration.
|
||||||
|
[ -f "$IPVSADM_CONFIG" ] && . "$IPVSADM_CONFIG"
|
||||||
|
|
||||||
|
rmmod_r() {
|
||||||
|
# Unload module with all referring modules.
|
||||||
|
# At first all referring modules will be unloaded, then the module itself.
|
||||||
|
local mod=$1
|
||||||
|
local ret=0
|
||||||
|
local ref=
|
||||||
|
|
||||||
|
# Get referring modules.
|
||||||
|
# New modutils have another output format.
|
||||||
|
[ $NEW_MODUTILS = 1 ] \
|
||||||
|
&& ref=$(lsmod | awk "/^${mod}[[:space:]]/ { print \$4; }" | tr ',' ' ') \
|
||||||
|
|| ref=$(lsmod | grep ^${mod} | cut -d "[" -s -f 2 | cut -d "]" -s -f 1)
|
||||||
|
|
||||||
|
# recursive call for all referring modules
|
||||||
|
for i in $ref; do
|
||||||
|
rmmod_r $i
|
||||||
|
let ret+=$?;
|
||||||
|
done
|
||||||
|
|
||||||
|
# Unload module.
|
||||||
|
# The extra test is for 2.6: The module might have autocleaned,
|
||||||
|
# after all referring modules are unloaded.
|
||||||
|
if grep -q "^${mod}" /proc/modules ; then
|
||||||
|
modprobe -r $mod > /dev/null 2>&1
|
||||||
|
res=$?
|
||||||
|
[ $res -eq 0 ] || echo -n " $mod"
|
||||||
|
let ret+=$res;
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
|
# Do not start if there is no config file.
|
||||||
|
[ ! -f "$IPVSADM_DATA" ] && return 6
|
||||||
|
|
||||||
# If we don't clear these first, we might be adding to pre-existing rules.
|
# If we don't clear these first, we might be adding to pre-existing rules.
|
||||||
action "Clearing the current IPVS table:" ipvsadm -C
|
action $"${IPVSADM}: Clearing the current IPVS table:" $IPVSADM -C
|
||||||
echo -n "Applying IPVS configuration: "
|
|
||||||
ipvsadm-restore < ${IPVSADM_CONFIG} && \
|
echo -n $"${IPVSADM}: Applying IPVS configuration: "
|
||||||
success "Applying IPVS configuration" || \
|
$IPVSADMRESTORE < ${IPVSADM_DATA}
|
||||||
failure "Applying IPVS configuration"
|
if [ $? -eq 0 ];then success; echo; else failure; echo; return 1;fi
|
||||||
echo
|
|
||||||
touch /var/lock/subsys/ipvsadm
|
touch $VAR_SUBSYS_IPVSADM
|
||||||
}
|
}
|
||||||
|
|
||||||
stop() {
|
stop() {
|
||||||
action "Clearing the current IPVS table:" ipvsadm -C
|
# Do not stop if ipvs module is not loaded.
|
||||||
rm -f /var/lock/subsys/ipvsadm
|
[ ! -e "$PROC_IPVS" ] && return 0
|
||||||
|
|
||||||
|
action $"${IPVSADM}: Clearing the current IPVS table:" $IPVSADM -C
|
||||||
|
|
||||||
|
ret=0
|
||||||
|
|
||||||
|
if [ "x$IPVS_MODULES_UNLOAD" = "xyes" ]; then
|
||||||
|
action $"${IPVSADM}: Unloading modules:" rmmod_r $IPVS
|
||||||
|
[ $? -ne 0 ] && ret=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f $VAR_SUBSYS_IPVSADM
|
||||||
|
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
|
||||||
|
status() {
|
||||||
|
# Do not print status if lockfile is missing and ipvs modules are not
|
||||||
|
# loaded.
|
||||||
|
if [ ! -f "$VAR_SUBSYS_IPVSADM" -a ! -e "$PROC_IPVS" ]; then
|
||||||
|
echo $"${IPVSADM}: IPVS is not running."
|
||||||
|
return 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Do show status if ipvs module is not loaded.
|
||||||
|
if [ ! -e "$PROC_IPVS" ];then
|
||||||
|
echo $"${IPVSADM}: IPVS module is not loaded."
|
||||||
|
return 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
NUM=""
|
||||||
|
[ "x$IPVS_STATUS_NUMERIC" = "xyes" ] && NUM="-n"
|
||||||
|
|
||||||
|
$IPVSADM -L $NUM && echo
|
||||||
}
|
}
|
||||||
|
|
||||||
save() {
|
save() {
|
||||||
echo -n "Saving IPVS table to ${IPVSADM_CONFIG}: "
|
# Check if module is loaded
|
||||||
ipvsadm-save -n > ${IPVSADM_CONFIG} 2>/dev/null && \
|
[ ! -e "$PROC_IPVS" ] && return 0
|
||||||
success "Saving IPVS table to ${IPVSADM_CONFIG}" || \
|
|
||||||
failure "Saving IPVS table to ${IPVSADM_CONFIG}"
|
echo -n $"${IPVSADM}: Saving IPVS table to ${IPVSADM_DATA}: "
|
||||||
echo
|
$IPVSADMSAVE -n > ${IPVSADM_DATA} 2>/dev/null
|
||||||
|
if [ $? -eq 0 ];then success; echo; else failure; echo; return 1;fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
restart() {
|
||||||
|
[ "x$IPVS_SAVE_ON_RESTART" = "xyes" ] && save
|
||||||
|
stop
|
||||||
|
start
|
||||||
}
|
}
|
||||||
|
|
||||||
# See how we were called.
|
# See how we were called.
|
||||||
case "$1" in
|
case "$1" in
|
||||||
start)
|
start)
|
||||||
|
[ -f "$VAR_SUBSYS_IPVSADM" ] && exit 0
|
||||||
|
|
||||||
# If we have no configuration, save the current one
|
# If we have no configuration, save the current one
|
||||||
[ -f ${IPVSADM_CONFIG} ] || save
|
[ -f ${IPVSADM_DATA} ] || save
|
||||||
start
|
start
|
||||||
|
RETVAL=$?
|
||||||
;;
|
;;
|
||||||
stop)
|
stop)
|
||||||
|
[ "x$IPVS_SAVE_ON_STOP" = "xyes" ] && save
|
||||||
stop
|
stop
|
||||||
|
RETVAL=$?
|
||||||
;;
|
;;
|
||||||
reload|force-reload|restart)
|
restart|force-reload)
|
||||||
# Start will flush everything, so it counts as a restart
|
restart
|
||||||
|
RETVAL=$?
|
||||||
|
;;
|
||||||
|
reload)
|
||||||
|
# Start will flush everything, so it counts as a reload
|
||||||
start
|
start
|
||||||
|
RETVAL=$?
|
||||||
;;
|
;;
|
||||||
status)
|
status)
|
||||||
ipvsadm -L -n
|
status
|
||||||
|
RETVAL=$?
|
||||||
;;
|
;;
|
||||||
save)
|
save)
|
||||||
save
|
save
|
||||||
|
RETVAL=$?
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Usage: $0 {start|stop|restart|force-reload|status|save}"
|
echo "Usage: $0 {start|stop|restart|force-reload|reload|status|save}"
|
||||||
exit 3
|
RETVAL=2
|
||||||
esac
|
esac
|
||||||
|
|
||||||
exit 0
|
exit $RETVAL
|
||||||
|
|
||||||
|
12
ipvsadm.spec
12
ipvsadm.spec
@ -1,12 +1,13 @@
|
|||||||
Summary: Utility to administer the Linux Virtual Server
|
Summary: Utility to administer the Linux Virtual Server
|
||||||
Name: ipvsadm
|
Name: ipvsadm
|
||||||
Version: 1.26
|
Version: 1.26
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Group: Applications/System
|
Group: Applications/System
|
||||||
URL: http://www.linuxvirtualserver.org/software/ipvs.html
|
URL: http://www.linuxvirtualserver.org/software/ipvs.html
|
||||||
Source0: http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-%{version}.tar.gz
|
Source0: http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-%{version}.tar.gz
|
||||||
Source1: ipvsadm.init
|
Source1: ipvsadm.init
|
||||||
|
Source2: ipvsadm-config
|
||||||
Patch0: ipvsadm-1.26-popt.patch
|
Patch0: ipvsadm-1.26-popt.patch
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||||
Buildrequires: libnl-devel
|
Buildrequires: libnl-devel
|
||||||
@ -33,8 +34,10 @@ CFLAGS="%{optflags}" make
|
|||||||
rm -rf %{buildroot}
|
rm -rf %{buildroot}
|
||||||
mkdir -p %{buildroot}/etc/rc.d/init.d
|
mkdir -p %{buildroot}/etc/rc.d/init.d
|
||||||
make install BUILD_ROOT=%{buildroot} MANDIR=%{_mandir}
|
make install BUILD_ROOT=%{buildroot} MANDIR=%{_mandir}
|
||||||
# Overwrite the provided init script with our own (mostly) LSB compliant one
|
# Overwrite the provided init script with our flexible and LSB compliant one
|
||||||
install -p -m 0755 %{SOURCE1} %{buildroot}/etc/rc.d/init.d/ipvsadm
|
install -p -m 0755 %{SOURCE1} %{buildroot}/etc/rc.d/init.d/ipvsadm
|
||||||
|
# Install config file which controls the service behavior
|
||||||
|
install -D -p -m 0600 %{SOURCE2} %{buildroot}/etc/sysconfig/ipvsadm-config
|
||||||
|
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
@ -54,6 +57,7 @@ fi
|
|||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%doc README
|
%doc README
|
||||||
/etc/rc.d/init.d/ipvsadm
|
/etc/rc.d/init.d/ipvsadm
|
||||||
|
%config(noreplace) /etc/sysconfig/ipvsadm-config
|
||||||
/sbin/ipvsadm
|
/sbin/ipvsadm
|
||||||
/sbin/ipvsadm-restore
|
/sbin/ipvsadm-restore
|
||||||
/sbin/ipvsadm-save
|
/sbin/ipvsadm-save
|
||||||
@ -63,6 +67,10 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jul 11 2011 Matthias Saou <http://freshrpms.net/> 1.26-2
|
||||||
|
- Backport the init script from RHEL6, which contains lots of changes to make
|
||||||
|
it behave simlarly to the iptables init script (#593276).
|
||||||
|
|
||||||
* Sat Jul 9 2011 Matthias Saou <http://freshrpms.net/> 1.26-1
|
* Sat Jul 9 2011 Matthias Saou <http://freshrpms.net/> 1.26-1
|
||||||
- Update to 1.26 (#676167).
|
- Update to 1.26 (#676167).
|
||||||
- Remove upstreamed Makefile and activeconns patchs, rebase popt patch.
|
- Remove upstreamed Makefile and activeconns patchs, rebase popt patch.
|
||||||
|
Loading…
Reference in New Issue
Block a user