O cenário é que eu tenho um sistema CentOS v7.0 que pode ter até quatro instâncias do JIRA em execução, as instâncias são Production, Staging, Development e BETA.
Quando eu inicio o sistema, eu quero que todas as quatro instâncias de serviço sejam iniciadas de maneira escalonada, com 100 segundos de intervalo (cada instância do JIRA leva cerca de 80 segundos para começar). Consegui resolver o início escalonado usando temporizadores systemd (que são certamente muito mais elegantes do que o código shell que eu estava usando no SysV). Cada serviço é executado em sua própria fatia e possui um nível adequado de QOS configurado por meio dos controles de fatia. Tudo corre muito bem.
O problema que estou tendo é que quando eu emito um shutdown / shutdown / reboot apenas as instâncias do jira _ *. timer estão sendo chamadas pelo script systemd shutdown e as instâncias do JIRA não estão sendo desligadas corretamente.
Como posso fazer com que a ação ExecStop nas unidades de serviço jira _ *. seja disparada durante um desligamento / reinicialização?
PRD = 5sec delay
STG = 100sec delay
DEV = 200sec delay
EAP = 300sec delay
/usr/lib/systemd/system/jira_stg.service
[Unit]
Description=Atlassian JIRA Staging instance
Documentation=https://confluence.atlassian.com/display/JIRA/JIRA+Documentation
After=mysql.service nginx.service
Requires=mysql.service nginx.service
Before=shutdown.target reboot.target halt.target
[Service]
Type=forking
ExecStart=/jira/stg/catalina.home/bin/startup.sh
ExecStop=/jira/stg/catalina.home/bin/shutdown.sh 60
TimeoutSec=300
User=ujirastg
Group=gjirastg
Slice=jira_stg.slice
CPUAccounting=true
CPUShares=600
MemoryAccounting=true
MemoryLimit=1200M
BlockIOAccounting=true
BlockIOWeight=200
[Install]
WantedBy=multi-user.target
/usr/lib/systemd/system/jira_stg.timer
[Unit]
Description=Atlassian JIRA Staging instance service startup after delay
[Timer]
# Time to wait after systemd starts before we start the service
OnStartupSec=100s
AccuracySec=5s
Unit=jira_stg.service
[Install]
WantedBy=multi-user.target
Estou habilitando apenas as unidades jira_ * .timer, pois descobri que, se eu ativasse as unidades jira_ * .service, os timers eram ignorados e tudo tentava iniciar de uma vez.
systemctl enable jira_eap.timer
systemctl enable jira_dev.timer
systemctl enable jira_stg.timer
systemctl enable jira_prd.timer
Do journalctl, mostrando os timers sendo acionados durante uma reinicialização.
jira systemd[1]: Stopping Flexible branding.
jira systemd[1]: Stopped Flexible branding.
jira systemd[1]: Stopping Timers.
jira systemd[1]: Stopped target Timers.
jira systemd[1]: Stopping Atlassian JIRA Early Access Program instance service startup after delay.
jira systemd[1]: Stopped Atlassian JIRA Early Access Program instance service startup after delay.
jira systemd[1]: Stopping Atlassian JIRA Development instance service startup after delay.
jira systemd[1]: Stopped Atlassian JIRA Development instance service startup after delay.
jira systemd[1]: Stopping Atlassian JIRA Staging instance service startup after delay.
jira systemd[1]: Stopped Atlassian JIRA Staging instance service startup after delay.
jira systemd[1]: Stopping Daily Cleanup of Temporary Directories.
jira systemd[1]: Stopped Daily Cleanup of Temporary Directories.
jira systemd[1]: Stopping Atlassian JIRA Production instance service startup after delay.
jira systemd[1]: Stopped Atlassian JIRA Production instance service startup after delay.
jira systemd[1]: Stopping Sockets.
jira systemd[1]: Stopped target Sockets.