Лучшие практики для того, чтобы автоматически перезапустить привели фоновые процессы к сбою?

У меня есть некоторое программное обеспечение (консул), который работает как агент в фоновом режиме, и я хочу удостовериться его выполнение в любом случае. Это - команда, которую я использую для запуска агента:

nohup consul agent -server -bootstrap-expect 1 \
-data-dir /tmp/consul \
-bind=$(hostname -i) \
-client=0.0.0.0 \
-node=$(hostname) \
-config-dir /etc/consul.d \
-ui-dir /opt/consul/ &

Прямо сейчас у меня есть проверка, которая работает в /etc/rc.local:

#!/bin/sh -e
while true; do
    if [ -z "$(ps aux | grep "consul agent" | grep -v grep)" ]; then 
        sh /etc/rc.local2; 
    fi;
    sleep 3;
done
exit 0

Если агент консула когда-либо останавливается затем /etc/rc.local2 запускается что выполнения:

#!/bin/sh -e
nohup consul agent -server -bootstrap-expect 1 \
-data-dir /tmp/consul \
-bind=$(hostname -i) \
-client=0.0.0.0 \
-node=$(hostname) \
-config-dir /etc/consul.d \
-ui-dir /opt/consul/ &

exit 0

Эта система работает, проблема - то, что она требует серверов, которые я настраиваю (все выполнение различные другие формы серверов консула и клиентов), чтобы быть перезапущенным, прежде чем она действительно вступит в силу. Даже если я работаю sudo nohup /etc/rc.local & консул все еще иногда перестанет работать.

Это было просто решением, которое я создал, но я определенно знаю не лучшее решение, которое я мог использовать. Что лучший способ состоит в том, чтобы проверить и обеспечить, чтобы этот процесс всегда работал?

1
задан 9 August 2016 в 17:31

0 ответов

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

Похожие вопросы: