延迟 init 启动服务一段时间?

延迟 init 启动服务一段时间?

我正在尝试启动并运行一个基本的 NFS 服务器。目前,由于供应商不支持直接连接集群存储,因此服务器配置为 NFS 服务器,我们正在尝试让他们解决此问题。供应商软件是 Splunk。我们使用的 splunk 功能要求文件位于共享存储上(对我们来说,共享存储是 /mnt/nfs,直到它们支持真正的集群文件系统)。

目前,服务器在启动时安装了 GFS2 文件系统(它是唯一主动安装文件系统的服务器,因此锁定应该没有问题)。我们使用的是 GFS2,因此如果供应商开始支持它,切换到集群文件系统就很容易了。NFS 配置为将该文件系统安装在 /mnt/nfs 上,splunk 安装会看到它。

Splunk 配置为在 /mnt/nfs 中查找其配置文件。但是,我遇到了一个问题,即 splunk 守护程序在 nfs 完成加载之前启动,并且由于它在 /mnt/nfs 上看不到任何内容,因此它开始在那里创建文件,然后当文件消失(nfs 完成安装共享)时,splunk 崩溃了。

Splunk 设置为在运行级别 3、S90 下运行。NFS 设置为在运行级别 2-5、S60 下运行。有没有办法进一步延迟 splunk 进程的启动?

答案1

head /etc/init.d/nfs

#!/bin/sh
#
# nfs           This shell script takes care of starting and stopping
#               the NFS services.
#
# chkconfig: - 60 20
# description: NFS is a popular protocol for file sharing across TCP/IP \
#              networks. This service provides NFS server functionality, \
#              which is configured via the /etc/exports file.
# probe: true

head /etc/init.d/splunk

#!/bin/sh
#
# /etc/init.d/splunk
# init script for Splunk.
# generated by 'splunk enable boot-start'.
#
# chkconfig: 2345 90 60
# description: Splunk indexer service
#
RETVAL=0

确保 Splunk 的启动优先级 (90) 大于 NFS 的启动优先级 (60)。

我遇到了一个问题,即 splunk 守护进程在 nfs 完成加载之前启动,

如果由于某些原因,NFS 无法成功启动,我会使用一个技巧来实现:

  1. 关闭 splunk:

    chkconfig splunk off
    
  2. 编辑start()NFS 启动脚本中的函数,以便在 NFS 成功启动后启动 Splunk,如下所示:

    前:

    echo -n $"Starting NFS daemon: "
    daemon rpc.nfsd $RPCNFSDARGS $RPCNFSDCOUNT
    RETVAL=$?
    echo
    [ $RETVAL -ne 0 ] && exit $RETVAL
    

    后:

    echo -n $"Starting NFS daemon: "
    daemon rpc.nfsd $RPCNFSDARGS $RPCNFSDCOUNT
    RETVAL=$?
    echo
    [ $RETVAL -ne 0 ] && exit $RETVAL || /etc/init.d/splunk start
    

试一试。

相关内容