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'
НТН,