Как настроить мои сценарии Upstart для учета зависимостей?

Я установил PostgreSQL, Atlassian JIRA, Stash, Confluence и Crowd на одном сервере Ubuntu 12.04. Они интегрированы и работают в соответствии с документацией Atlassian.

Одна вещь, которую я заметил, это то, что набор продуктов не терпит зависания зависимых компонентов. Например, если Crowd остановлен, пользователи больше не смогут войти в систему. Если PostgreSQL остановлен по причинам обслуживания, зависимые приложения могут никогда не восстановиться.

Каждую ночь система проходит через окно обслуживания, в течение которого операционная система и программное обеспечение могут быть исправлены. Внешний DNS настроен на корректное отображение страницы обслуживания в случае ошибки в приложениях.

Время от времени PostgreSQL может быть остановлен, исправлен и затем запущен. Как мне настроить мои сценарии Upstart для учета зависимостей? Я настроил «Пуск вкл», но это не имеет никакого эффекта.

Мне удобно писать службы Windows и настраивать их зависимости во время установки (например, установщик Windows или PowerShell).

Тестовые случаи:

  • Я остановил все службы. Затем я запустил Confluence, ожидая, что он либо потерпит неудачу (поскольку PostgreSQL и Crowd остановлены), либо автоматически попытается запустить PostgreSQL и Crowd. Ни того, ни другого не произошло.

  • Я запустил все службы. Затем я остановил Crowd, ожидая, что Confluence, JIRA и Stash будут остановлены. Это только остановило Crowd, а все остальные службы продолжали работать, но не работали правильно.

Зависимости:

  • Толпа : PostgreSQL, Сеть
  • Слияние : PostgreSQL, Сеть, Толпа
  • JIRA : PostgreSQL, Networking, Crowd
  • Stash : PostgreSQL, Networking, Crowd

Confluence ]

# confluence

description "Atlassian Confluence"

start on (net-device-up and local-filesystems and postgresql and runlevel [2345] and crowd)
stop on runlevel [!2345]

respawn

kill timeout 30

env RUN_AS_USER=confluence
env BASEDIR=/usr/local/bin/confluence

script
    LOGFILE=/var/log/confluence/confluence.`date +%Y-%m-%d`.log
    exec su - $RUN_AS_USER -c "$BASEDIR/bin/catalina.sh run" >> $LOGFILE 2>&1
end script

JIRA

description "Atlassian JIRA"

start on (net-device-up and local-filesystems and postgresql and runlevel [2345] and crowd)
stop on runlevel [!2345]

respawn

kill timeout 30

env RUN_AS_USER=jira
env BASEDIR=/usr/local/bin/jira

script
    LOGFILE=/var/log/jira/jira.`date +%Y-%m-%d`.log
    exec su - $RUN_AS_USER -c "$BASEDIR/bin/catalina.sh run" >> $LOGFILE 2>&1
end script

Тайник

description "Atlassian Stash"

start on (net-device-up and local-filesystems and postgresql and runlevel [2345] and crowd)
stop on runlevel [!2345]

respawn

kill timeout 30

env RUN_AS_USER=stash
env BASEDIR=/usr/local/bin/stash
env STASH_HOME="/var/local/lib/stash"

script
    LOGFILE=/var/log/stash/stash.`date +%Y-%m-%d`.log
    exec su - $RUN_AS_USER -c "$BASEDIR/bin/start-stash.sh -fg" >> $LOGFILE 2>&1
end script

Толпа

# crowd

description "Atlassian Crowd - Single Sign-On (SSO) and Identity Management"

start on (net-device-up and local-filesystems and postgresql and runlevel [2345])
stop on runlevel [!2345]

respawn

kill timeout 30

env RUN_AS_USER=crowd
env BASEDIR=/usr/local/bin/crowd/apache-tomcat

script
    LOGFILE=/var/log/crowd/crowd.`date +%Y-%m-%d`.log
    exec su - $RUN_AS_USER -c "$BASEDIR/bin/catalina.sh run" >> $LOGFILE 2>&1
end script

PostgreSQL был установлен через APT и запускается автоматически при запуске.

7
задан 13 April 2014 в 00:17

2 ответа

Попытка:

  • Толпа

    start on (net-device-up and started postgresql)
    stop on stopping postgresql
    
  • Слияние

    start on started crowd
    stop on stopping crowd
    
  • Притон

    start on started crowd
    stop on stopping crowd
    
  • Ссылка JIRA

    start on started crowd
    stop on stopping crowd
    

: http://upstart.ubuntu.com/cookbook/

  • 6.32.2 Запускается, зависит от другого сервиса
  • , 6.33.2 Остановки прежде зависели - от сервиса
0
ответ дан 13 April 2014 в 00:17

Это будет немногим трудно, потому что postgresql не является собственным новомодным заданием. Необходимо сделать следующее:

  1. Добавляют, что строка initctl emit -n started JOB=postgresql в конце части запуска/etc/init.d/postgresql
  2. Добавляет строку initctl emit stopping JOB=postgresql к НАЧАЛУ части остановки толпы Изменения/etc/init.d/postgresql
  3. к:

    start on started postgresql
    stop on stopping postgresql
    

, Который должен быть им. Если Вы нуждаетесь в помощи для шагов 1 и 2, просто спрашиваете.

0
ответ дан 13 April 2014 в 00:17

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

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