Solaris SMF для туннеля ssh

Я туннелирую с нашего веб-сервера на наш сервер MySQL, оба на блоках Solaris. Я создал манифест SMF для туннеля ssh, чтобы восстановить соединение при перезагрузке веб-сервера. Это прекрасно работает.

Проблема в том, что я не уверен, что делать при перезагрузке MySQL. Это внешнее закрытие туннеля передается 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например, подождать 1 минуту, прежде чем запускать ssh:

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

НТН,

Другие вопросы по тегам