我从我们的networking服务器隧道到我们的MySQL服务器,都在Solaris机箱上。 我为ssh隧道创build了一个SMF清单,以便在Web服务器重新启动时重新连接。 这很好。
问题是我不知道当MySQL框重新启动时该怎么做。 这个隧道的外部closures被传递给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>
您可以指定在timeout_secondsvariables的“exec_method”部分中执行exec命令之间等待的时间。 如果将其设置为60,则会立即尝试等待1分钟,然后重试并等待并尝试。 你设置的值取决于MySQL盒子如何启动。
另一种方法是将sleep命令指定为exec一部分,例如在运行ssh之前等待1分钟。
exec='sleep 60 && /usr/bin/ssh -fNx -L 3307:127.0.0.1:3306 mysql1'
心连心,