1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-26 21:57:41 +03:00

ctdb-scripts: New eventscript 10.external

This is an alternative to 10.interface and is installed as disabled by
default.  It should only be used with DisableIPFailover=yes and when
IP failover is being handled externally.  In this mode CTDB can be
informed of public IP address movements using "ctdb moveip".

During the "startup" event, this eventscript currently finds any
public IP addresses configured in $CTDB_PUBLIC_ADDRESSES and tells
CTDB which node they are on using "ctdb moveip".  This allows CTDB to
send ARPs and tickle-ACKs.

Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
This commit is contained in:
Martin Schwenke 2015-05-11 15:29:34 +10:00 committed by Amitay Isaacs
parent a1d6b3fb4b
commit 3b25face87
2 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,49 @@
#!/bin/sh
# Eventscript for CTDB to cope with externally managed public IP addresses
# If DisableIPFailover is set:
#
# * 10.interface must be disabled.
# * For connection tracking/killing to work this script must be enabled.
[ -n "$CTDB_BASE" ] || \
export CTDB_BASE=$(cd -P $(dirname "$0") ; dirname "$PWD")
. $CTDB_BASE/functions
loadconfig
if [ -z "$CTDB_PUBLIC_ADDRESSES" ] ; then
exit 0
fi
if [ ! -f "$CTDB_PUBLIC_ADDRESSES" ] ; then
if [ "$1" = "init" ]; then
echo "No public addresses file found. Nothing to do for 10.interfaces.external"
fi
exit 0
fi
takeover_assigned_ips ()
{
ctdb_get_pnn
ctdb -X ip |
awk -F'|' '{print $2}' |
while read ip ; do
if [ -n "$(ip_maskbits_iface $ip)" ] ; then
echo "Assigning $ip to this node ($pnn)"
ctdb moveip "$ip" "$pnn"
fi
done
}
ctdb_check_args "$@"
case "$1" in
startup)
takeover_assigned_ips
;;
esac
exit 0

View File

@ -166,6 +166,7 @@ rm -rf $RPM_BUILD_ROOT
%{_sysconfdir}/ctdb/events.d/00.ctdb %{_sysconfdir}/ctdb/events.d/00.ctdb
%{_sysconfdir}/ctdb/events.d/01.reclock %{_sysconfdir}/ctdb/events.d/01.reclock
%{_sysconfdir}/ctdb/events.d/10.interface %{_sysconfdir}/ctdb/events.d/10.interface
%{_sysconfdir}/ctdb/events.d/10.external
%{_sysconfdir}/ctdb/events.d/13.per_ip_routing %{_sysconfdir}/ctdb/events.d/13.per_ip_routing
%{_sysconfdir}/ctdb/events.d/11.natgw %{_sysconfdir}/ctdb/events.d/11.natgw
%{_sysconfdir}/ctdb/events.d/11.routing %{_sysconfdir}/ctdb/events.d/11.routing