1 votes

Solaris SMF pour le tunnel ssh

Je fais un tunnel entre notre serveur web et notre serveur MySQL, tous deux sur des machines Solaris. J'ai créé un manifeste SMF pour le tunnel ssh afin de me reconnecter lorsque le serveur web redémarre. Cela fonctionne très bien.

Le problème est que je ne suis pas sûr de ce qu'il faut faire lorsque la boîte MySQL redémarre. Cette fermeture externe du tunnel est transmise à SMF, qui essaie de redémarrer le tunnel en succession rapide 3 fois avant de mettre le service en mode maintenance. Existe-t-il un moyen de spécifier un "retry-every" ou quelque chose de similaire ? Y a-t-il une autre façon d'aborder le problème ?

Voici le SMF que j'utilise.

<?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>

0voto

Keith Kemp Points 11

Vous pouvez spécifier le temps d'attente entre les exécutions de la fonction exec dans les sections "exec_method" de la section timeout_seconds variable. Si vous la fixez à 60, elle essaiera immédiatement, attendra 1 minute, essaiera à nouveau, puis attendra et essaiera à nouveau. La valeur que vous définissez dépend de la durée de démarrage de la boîte MySQL.

Une autre façon de procéder consiste à spécifier un sleep dans le cadre de la commande exec Par exemple, attendre 1 minute avant d'exécuter la commande ssh :

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

hth,

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X