Sous-sections

Tutorial

Configuration

Vous devez choisir (via pwgen par exemple) un password de connexion au sched_master. Celui ci n'est pas utilisé par un humain. Il peut donc faire 50 caractères de long.

La configuration suivante est un exemple qui utilise un seul noeud. Les job seront identifiés sur la machine plume. Le module slave sera identifié sous le nom de plume2.

Base de donnée

La base de donnée sched doit être accessible. La structure doit être remplie et vous devez connaître la chaîne de connexion (dsn). (Cf 2.5)

Apache

Les cgi sched_view doivent être accessibles via votre navigateur. (Cf 2.6.2).

Répertoires

Le sched_job et le sched_slave utilisent un espace de travail (work_dir) pour stocker les fichiers de traces. Ce répertoire doit être accessible à vos utilisateurs sched (lançant les job et le slave).

Pour gérer les déconnexions, les composants sched utilisent un espace de stockage interne (db_dir). Il en faut un par composant. Seul le composant a donc besoin d'y écrire des données.

mkdir -p /tmp/sched/wd
mkdir -p /tmp/sched/master/db
mkdir -p /tmp/sched/slave/db
mkdir -p /tmp/sched/job/db

Configuration sched_master

localhost:~/ cat /etc/sched/master.cfg

[main]
logfile=/tmp/master.log
debug=5

[master]
job_dir=/tmp/sched/job
db_dir=/tmp/sched/master/db
dsn=dbname=sched;user=sched;password=xxx
group=sched
user=nobody

master_port=5544

view_passwd=motdepass
view_ip=127.0.0.1

Configuration sched_view

localhost:~/ cat /etc/sched/cgi.cfg

[main]
logfile=/tmp/cgi.log
debug=0

[cgi]
master_ip=localhost
master_port=5544
master_passwd=motdepass
master_retry=10

dsn=dbname=sched;user=sched;password=xxx
xfer_port=8081

Configuration sched_slave et du sched_xfer

localhost:~/ cat /etc/sched/slave.cfg
[main]
logfile=/tmp/slave.log
debug=5

[xfer]
xfer_inet = 0.0.0.0
xfer_port = 8081
xfer_user = nobody
xfer_group = nogroup

[slave]
master_ip=localhost
master_port=5544
master_passwd=mdpplume2
master_retry=10
work_dir=/tmp/sched/wd
db_dir=/tmp/sched/slave/db
hostname=plume2

Configuration sched_job

localhost:~/ cat /etc/sched/job.cfg
[main]
logfile=/tmp/job.log
debug=5

[job]
work_dir=/tmp/sched/wd
job_dir=/tmp/sched/job
master_ip=localhost
master_port=5544
master_passwd=mdpplume
master_ping=30
db_dir=/tmp/sched/job/db
hostname=plume

Démarrer tous les composants

Création des machines

Le cgi http://localhost/cgi-bin/sched/sched_list_host.cgi permet d'ajouter les deux machines du tutorial.

Créer un job

L'utilisation de sched_builder permet de construire un job graphiquement. (voir la démo http://localhost/sched/doc/tutorial1.swf)

Vérifier un job

En ligne de commande, l'utilitaire sched_job_validate permet de valider un job.

localhost:~# sched_job_validate -j jobname.xml 
[24/10/2004 15:15:49] <5> Sched::init: I : Demarrage
I : verification ok

Enregistrer le job dans la base

Via sched_view

Aller sur http://localhost/cgi-bin/sched/sched_commit_job.cgi et uploader le fichier job.

Via le shell

En ligne de commande, l'utilitaire sched_job_commit permet de valider un job et de le mettre en production.

localhost:~# sched_job_commit -j jobname.xml \
        -r 'version 1 - test avant mise en prod'

[24/10/2004 15:15:49] <5> Sched::init: I : Demarrage
I : verification ok
I : OK 19 is registred

Si le job n'est pas syntaxiquement correcte, il ne sera pas inscrit dans la base sched.

Déployer le job

Une fois le job enregistré dans la base, il peut être utilisé en mode réseau. Le mode réseau permet d'avoir un historique centralisé de l'exécution des job et de pouvoir exécuter des taches sur différentes machines. Dans cette version, le déploiement d'un job est manuel, il faut copier le fichier job (au bit près) sur le serveur cible dans le répertoire job_dir. Le serveur cible doit être autorisé à exécuter le job (champ host dans le descriptif du job).

Tester le job

Une fois le job en place sur le serveur cible, l'option -dry-run de sched_job permet de faire une simulation du job. Toutes les commandes seront remplacées au dernier moment juste avant l'éxécution par un sleep 1.

Cela permet de valider les machines utilisées, les chemins des fichiers entrée/sortie, des utilisateurs utilisés etc..

localhost:~# sched_job -j job.xml --dry-run

Exécution du job

Le programme sched_job permet d'exécuter un job. Le job se connecte sur le sched_master et exécute toutes les tâches enregistrées.

Le compte utilisateur qui execute le job doit pouvoir lire le fichier de configuration job.cfg (cf 3.4).

En mode interactif

localhost:~# sched_job -j job.xml

Via un planificateur

Sur un système unix via cron

 0 5 * *       sched_job -j job.xml > /dev/null 2>&1

Via sched_view

L'interface d'administration sched_view permet de lancer des job sur les machines connectées. (cf fig 10 et 11)

Figure 10: Selection du job à exécuter
Figure 11: Exécution d'un job
\includegraphics[width=13cm]{inc/sched_view_run.eps}


\includegraphics{inc/sched_view_run5.eps}

Modification après mise en production

La version d'un job est obtenu en fonction de son checksum md5. Il est donc pas possible de modifier un job une fois mis en production.

Eric 2005-12-17