用于 ssh 隧道的 Solaris SMF

用于 ssh 隧道的 Solaris SMF

我正在从我们的 Web 服务器到我们的 MySQL 服务器建立隧道,两者都在 Solaris 机器上。我为 ssh 隧道创建了一个 SMF 清单,以便在 Web 服务器机器重新启动时重新连接。这很有效。

问题是我不确定 MySQL 重启后该做什么。隧道的外部关闭被传递给 SMF,SMF 会尝试快速连续重启隧道 3 次,然后才将服务置于维护模式。有没有办法指定“重试次数”或类似的东西?还有其他方法可以解决这个问题吗?

这是我正在使用的 SMF。

<?xml version="1.0"?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">

<service_bundle type='manifest' name='ssh-tunnel'>

<service
    name="network/ssh-tunnel"
    type="service"
    version="1">

    <create_default_instance enabled="false"/>

    <single_instance />

    <dependency
       name='nameservice'
       type='service'
       grouping='require_all'
       restart_on='none'>
         <service_fmri value='svc:/milestone/name-services' />
    </dependency>

    <exec_method
          type='method'
          name='start'
          exec='/usr/bin/ssh -fNx -L 3307:127.0.0.1:3306 mysql1'
          timeout_seconds='0'>
    </exec_method>

    <exec_method
           type='method'
           name='stop'
           exec=':kill'
           timeout_seconds='0'>
    </exec_method>
</service>
</service_bundle>

答案1

exec您可以在变量的“exec_method”部分中指定两次命令执行之间等待的时间timeout_seconds。如果您将其设置为 60,它将立即尝试等待 1 分钟,然后重试并等待并尝试。您设置的值取决于 MySQL 框的启动时间。

另一种方法是指定一个sleep命令作为的一部分exec,例如在运行 ssh 之前等待 1 分钟:

exec='sleep 60 && /usr/bin/ssh -fNx -L 3307:127.0.0.1:3306 mysql1'

嗯,

相关内容