Con questa mini guida cerco di dare le basi per la corretta configurazione dei daemontools a tutti coloro che fossero interessati ad utilizzare un sistema differente per la gestione dei servizi sulla propria macchina UNIX.
Livello:
Medio, Facile
Per chi:
Principiante
Scenario:
Gestire, monitorare, avviare e riavviare uno o piu’ servizi
Premessa:
I daemontools sono una serie di tool che permettono di gestire i servizi su macchine unix in modo alternativo, infatti il sistema presenta una serie di directory che non sono standard all’ambiente unix.
Questi tools vengono contraddistinti da una semplicita’ e velocita’ di setup non indifferenti oltre ad essere estremaente portabili su qualunque macchina unix/bsd.
Il processo di installazione e’ decisamente semplice, una volta scaricato il tar.gz dal sito e seguite le istruzioni(poche righe) di installazione troveremo il demone gia’ pronto e configurato per partire ad ogni avvio, infatti guardando il file /etc/inittab si potra’ notare l’aggiunta di una riga come questa:
#– daemontools-run begin
SV:123456:respawn:/command/svscanboot
#– daemontools-run end
Nella directory /command creata durante il processo di installazione sono presenti tutti i binari necessari al corretto funzionamento di questo sistema.
Creare un servizio da mettere sotto supervise
L’unica cosa veramente necessaria per mettere un servizio sotto monitor e’ quella di creare una directory in /service con un nome rappresentativo del servizio che vogliamo mettere sotto monitor(che chiamero’ “servizio_A”) e un eseguibile con nome ./run, che solitamente e’ uno script shell, da mettere nella directory appena creata.
Quindi avro’ il file ./run posizionato in questo modo:
/service/servizio_A/run
il quale, ad esempio, puo’ contenere un comando simile a questo:
#!/bin/sh exec /usr/lib/jdk1.6.0/bin/java mio.package.Servizio 2>&1
In questo momento il servizio si trova gia’ sotto supervise e puo’ essere avviato a mano(vedremo in seguito come) o avviato al prossimo reboot.
Registrare i log di un servizio
Per ogni servizio messo sotto monitor e’ possibile registare un log, anche questa e’ una operazione decisamente semplice, infatti basta creare una directory log all’interno di quella del servizio con al suo interno un file esguibile ./run
/service/servizio_A/log/run
il file contiene uno script sh simile a questo:
#!/bin/sh exec multilog s10000000 n10 /dir/log/servizio_A.log 2>&1
per maggiori dettagli sulle opzioni di multilog fare riferimento alla documentazione sul sito ufficiale, in questo esempio comunque il parametro s indica la dimensione massima di ogni file di log mentre n indica il numero massimo di file da tenere(chiamiamolo storico)
Gestione dei servizi
Con il comando svc e’ possibile gestire i vari servizi creati, i principali comandi sono:
uccide il processo senza farlo ripartire
# svc -d servizio_A
riavvia il processo
# svc -t servizio_A
lancia il processo e se si ferma lo riavvia
# svc -u servizio_A
lancia il processo una sola volta e non lo riavvia se si ferma
# svc -o servizio_A
Tramite il comando svstat e’ possibile verificare lo stato dei servizi
In questo modo otterremo lo stato di tutti i servizi presenti
# svstat /var/service/* /var/service/servizio_A: up (pid 13333) 2 seconds /var/service/servizio_B: up (pid 13320) 9 seconds
dove ci viene indicato l’id del processo che e’ stato assegnato al servizio e il tempo “vita” del servizio, e’ anche possibile richiedere lo stato di uno specifico servizio
# svstat /var/service/servizio_A /var/service/servizio_A: up (pid 13333) 2 seconds
Rimozione dei servizi
Un buon sistema per avere maggior controllo sui servizi e’ quello di creare le directory in un altro punto del filesystem, ad esempio:
/ext/service/servizio_A mentre in /service si andra’ a creare il link, quindi
# cd /service # ln -s /ext/service/servizio_A servizio_A # ls -l servizio_A lrwx------ 1 xxx xxx 26 yyyy-mm-dd HH:MM /service/servizio_A-manager -> /dir/service/nome_servizio_A
cosi nel caso in cui dovessi temporaneamente rimuovere il servizio anche all’avvio, bastera’ fermare il servizio e rimuovere il link cosi non avremo nemmeno il pensiero di eseguire un backup della directory.
Anche questa volta spero che il mio post possa aiutare qualcuno.
Ciao,
Cristian.
RSS feed for comments on this post · TrackBack URI
Leave a reply
You must be logged in to post a comment.