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

steve steve at steve-ss.com
Mon Aug 18 07:19:55 MDT 2014


On Mon, 2014-08-18 at 14:38 +0200, steve wrote:
> 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!
> 
> 
##############################################
OK, we simplified the start and stop part of 50.samba to:
service_start ()
{
service smbd start
}
service_stop ()
{
sudo service smbd stop
}

And the log changes to:
Aug 18 15:09:06 uc1 ctdbd: 50.samba: ERROR: samba tcp port 445 is not
responding
Aug 18 15:09:06 uc1 ctdbd: server/eventscript.c:496 Eventscript monitor
finished with state 1

netstat shows nothing on 445 nor 139

We can however start samba manually, whereupon the 445 error disappears.
Presumably because then it _is_ responding?

Still, if smbd is not up at the beginning, ctdb will not start it.
Are we any closer?





More information about the samba mailing list