[Samba] CTDB: Failed to connect client socket to daemon.

steve steve at steve-ss.com
Mon Aug 18 06:38:58 MDT 2014


On Mon, 2014-08-18 at 12:32 +0200, Achim Gottinger wrote:
> Am 18.08.2014 12:09, schrieb steve:
> > On Mon, 2014-08-18 at 11:31 +0200, Achim Gottinger wrote:
> >> Change service_name back to samba it
> >> Is Usedom by ctdb
> > OK. Thanks again. Getting closer. Changed smbd to samba:
> > sudo ctdb eventscript 50.samba startup
> > 2014/08/18 11:57:16.958275 [ 9029]: Invalid arguments
> First sorry for the typos, iphone autocorrection got me.
No problem. Thanks for your time and trouble.
> 
> I assue you want to give ctdbd control over samba. 
> https://ctdb/samba.org/samba.html
Yes.
ATM, we have both nodes live. But evidently that's very bad. We must
have only one node up at a time it seems.

> 
> Do you have CTDB_MANAGES_SAMBA="yes" in /etc/default/ctdb?
Yes:
 /etc/default/ctdb

CTDB_NODES=/etc/ctdb/nodes
CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
CTDB_MANAGES_SAMBA=yes
CTDB_SYSLOG=yes
CTDB_DEBUGLEVEL=3
CTDB_SERVICE_SMB=smbd

> 
> If so ctdb calls /etc/ctdb/event.d/50.samba. Are you sure you do not 
> have exit 1 iin the service_start function any longer?
> 
> Seen you enabled the script with
> 
> ctdb enablescript samba
It was:
sudo ctdb enablescript 50.samba

> 
> I guess you can trigger an start with:
> 
> ctdb -n 0 disable
> ctdb -n 0 enable
done.
> 
> And
> 
> ctdb scriptstatus
gives us:
sudo ctdb scriptstatus
monitor cycle never run
> 
> should show if samba is up and running under ctdb control.
but:
 sudo ctdb eventscript 50.samba startup
2014/08/18 14:33:41.263631 [12631]: Invalid arguments

here is /etc/ctdb/events.d/50.samba
#!/bin/sh
# ctdb event script for Samba

[ -n "$CTDB_BASE" ] || \
    export CTDB_BASE=$(cd -P $(dirname "$0") ; dirname "$PWD")

. $CTDB_BASE/functions

detect_init_style

case $CTDB_INIT_STYLE in
	suse)
		CTDB_SERVICE_SMB=${CTDB_SERVICE_SMB:-smb}
		CTDB_SERVICE_NMB=${CTDB_SERVICE_NMB:-nmb}
		;;
	debian)
		CTDB_SERVICE_SMB=${CTDB_SERVICE_SMB:-smbd}
		CTDB_SERVICE_NMB=${CTDB_SERVICE_NMB:-""}
		;;
	*)
		# Use redhat style as default:
		CTDB_SERVICE_SMB=${CTDB_SERVICE_SMB:-smb}
		CTDB_SERVICE_NMB=${CTDB_SERVICE_NMB:-""}
		;;
esac

service_name="samba"

loadconfig

ctdb_setup_service_state_dir

service_start ()
{
    # make sure samba is not already started
    service "$CTDB_SERVICE_SMB" stop > /dev/null 2>&1
    if [ -n "$CTDB_SERVICE_NMB" ] ; then
	service "$CTDB_SERVICE_NMB" stop > /dev/null 2>&1
    fi
    killall -0 -q smbd && {
	sleep 1
	# make absolutely sure samba is dead
	killall -q -9 smbd
    }
    killall -0 -q nmbd && {
	sleep 1
	# make absolutely sure samba is dead
	killall -q -9 nmbd
    }

    # start Samba service. Start it reniced, as under very heavy load
    # the number of smbd processes will mean that it leaves few cycles
    # for anything else
    net serverid wipe

    if [ -n "$CTDB_SERVICE_NMB" ] ; then
	nice_service "$CTDB_SERVICE_NMB" start || die "Failed to start nmbd"
    fi

    nice_service "$CTDB_SERVICE_SMB" start || die "Failed to start
samba"
}

service_stop ()
{
    service "$CTDB_SERVICE_SMB" stop
    if [ -n "$CTDB_SERVICE_NMB" ] ; then
	service "$CTDB_SERVICE_NMB" stop
    fi
}

######################################################################
# Show the testparm output using a cached smb.conf to avoid delays due
# to registry access.

smbconf_cache="$service_state_dir/smb.conf.cache"

testparm_foreground_update ()
{
    _timeout="$1"

    if ! _out=$(timeout $_timeout testparm -v -s 2>/dev/null) ; then
	if [ -f "$smbconf_cache" ] ; then
	    echo "WARNING: smb.conf cache update failed - using old cache file"
	    return 1
	else
	    die "ERROR: smb.conf cache create failed"
	fi
    fi

    _tmpfile="${smbconf_cache}.$$"
    # Patterns to exclude...
    pat='^[[:space:]]+(registry[[:space:]]+shares|include|copy|
winbind[[:space:]]+separator)[[:space:]]+='    
    echo "$_out" | grep -Ev "$pat" >"$_tmpfile"
    mv "$_tmpfile" "$smbconf_cache" # atomic

    return 0
}

testparm_background_update ()
{
    _timeout="$1"

    testparm_foreground_update $_timeout >/dev/null 2>&1 </dev/null &
}

testparm_cat ()
{
    testparm -s "$smbconf_cache" "$@" 2>/dev/null
}

list_samba_shares ()
{
    testparm_cat |
    sed -n -e 's@^[[:space:]]*path[[:space:]]*=[[:space:]]@@p' |
    sed -e 's/"//g'
}

list_samba_ports ()
{
    testparm_cat --parameter-name="smb ports" |
    sed -e 's@,@ @g'
}

###########################

ctdb_start_stop_service

is_ctdb_managed_service || exit 0

###########################

case "$1" in
     startup)
	ctdb_service_start
	;;

     shutdown)
	ctdb_service_stop
	;;

     monitor)
	testparm_foreground_update 10
	ret=$?

	smb_ports="$CTDB_SAMBA_CHECK_PORTS"
	if [ -z "$smb_ports" ] ; then
	    smb_ports=$(list_samba_ports)
	    [ -n "$smb_ports" ] || die "Failed to set smb ports"
	fi
	ctdb_check_tcp_ports $smb_ports || exit $?

	if [ "$CTDB_SAMBA_SKIP_SHARE_CHECK" != "yes" ] ; then
	    list_samba_shares | ctdb_check_directories || exit $?
	fi

	if [ $ret -ne 0 ] ; then
	    testparm_background_update 10
	fi
	;;

    *)
	ctdb_standard_event_handler "$@"
	;;
esac
exit 0

>  You should start smbd/nmbd/winbindd instead for domain member and
> > standalone file server tasks
> >
> This is differnet because you call smbd and sometimes samba. :-)
> 
Yes. Sorry. Stupid of us!




More information about the samba mailing list