Centralisation des cron Unix et des AT Windows

Exécution sur une machine distante

Cet article explique comment mettre en place un agent distant sur lequel on pourra soumettre des traitements. Dans ce type de configuration, l’ordonnanceur reçoit la commande, l’exécute et renvoie le statut.

On part du principe que vous avez déjà installé 2 job schedulers, sur 2 machines ou sur la même machine, dans ce deuxième cas il peut s’agir d’un job scheduler qui tourne avec un compte de soumission particulier ou qui est délégué à un groupe de personnes.

Le serveur et l’agent peuvent être sur n’importe quel type d’OS, vous pouvez donc décider de dédier une machine Windows pour faire tourner vos traitements Unix (si votre administrateur Unix vous laisse faire) ou, plus généralement, l’inverse.

Sur l’agent distant

Pour qu’un job scheduler puisse se servir d’un autre job scheduler comme agent, il est nécessaire que ce dernier lui accorde la permission de se connecter. Pour cela, on va vérifier la configuration avec le Job Object Editor, plus affectueusement appelé JOE par les amis.

On exécute le jobeditor.cmd si vous êtes sur Windows ou le jobeditor.sh sur Unix, cet exécutable est dans le répertoire bin.

PNG

On charge le fichier scheduler.xml qui est dans le répertoire config et on clique sur Security dans la liste arborescente.

On va ensuite indiquer le serveur (New Host), lui donner tous les droits d’accès et l’ajouter dans les liste des adresses IP autorisées (Apply Host).

Un arrêt/relance de l’agent permet de prendre en compte les nouveaux paramètres de sécurité.

Le job scheduler distant est maintenant prêt à recevoir le traitement.

Sur le serveur

Pour soumettre le traitement à distance, on va déclarer un "process class" qui permettra de définir la manière de contacter la machine distante (nom et port) et éventuellement le nombre de traitements concurrents sur la machine.

PNG

Grâce au JOE du serveur, on va pouvoir définir cette nouvelle machine par le menu File/New/HotFolderObject/ProcessClass.

On indique le nom du Process Class, c’est à dire le nom qu’on va donner à cet agent distant, on peut indiquer le nom de la machine mais il est préférable de fournir un alias. l’avantage de l’alias est que les traitements n’utiliseront que le nom logique et qu’en cas de changement de machine physique, le changement se limitera à indique la nouvelle adresse IP sur le process class.

On indique ensuite le nombre de traitements concurrents ce qui permettra de limiter la consommation des ressources sur la machine distante.

A noter, vous pouvez tout à fait créer plusieurs Process Classes pour une même machine, par exemple pour utiliser un alias par application, cela permettra de répartir les applications sur différentes machines, mutualisées ou non, pour faciliter votre gestion de capacité.

On va ensuite indiquer le nom ou l’adresse IP de la machine distante ainsi que son port (par défaut 4444 mais dans notre exemple il s’agit d’un port différents).

On sauve ensuite la définition dans le répertoire Live.

PNG

L’onglet "Process Classes" de l’interface d’exploitation permet de voir l’ensemble des machines définies ainsi que les traitements en cours sur chacune des machines.

Un clic sur le lien de la machine permet d’accéder à l’interface d’exploitation de la machine distante (dans la mesure où votre adresse IP est autorisée, dans le cas contraire il faudra ajouter votre IP comme vous l’avez fait avec le serveur dans la première partie).

De plus, l’onglet job permet de filtrer les traitements par machines, ce qui permet de lister l’état des traitements pour une machine donnée.

Nouveau traitement

PNG

On va créer un traitement qui va nous donner l’environnement de la machine (commande set pour windows et env pour Unix).

Toujours avec JOE, on va créer un nouveau traitement File/New/HotFolderObject/Job

On indique le process class qu’on vient de créer : mon_agent
et la commande env (car mon exemple est sur Linux).

Il ne reste plus qu’à aller dans JOB et à lancer le traitement.

20 mai 2012