Lancement de la simulation SIMBA
Sommaire
Nature du document ... 1
Présentation de l’architecture réseau ... 1
Configuration poste élève ... 3
Configuration confXML ... 3
Installation du service SimulationSIMBA ... 3
Configuration poste maître ... 4
Partage des Configurations IGC ... 4
Configurations des aménagements pour le Monitor ... 5
Vérification du contenu de IPServeur.xml... 6
Exécution des Services ... 7
Poste maître ... 7
Poste élève ... 7
Modification Simulation, LibClient, Monitor et Monitor View ... 7
Simulation & LibClient ... 7
Monitor... 8
MonitorView... 8
Nature du document
Ce document présente les solutions pratiques et techniques pour lancer les services d’une simulation SIMBA en mode enchaîné, depuis le poste maître. Il s’agit ainsi d’une étude technique du lanceur principal de Simba, qui aidera à l’implémentation de celui-ci.
Présentation de l’architecture réseau
Une simulation en mode enchaîné se répartie sur plusieurs ordinateurs : des postes élèves qui exécutent le service « IGC_SIMU_SIMBA », et un poste maître qui « contrôle » la simulation, et exécute tous les autres services IGC.
Le lanceur de la simulation enchaînée sera présent sur le poste maître. Il aura comme tâche de lancer les services IGCs sur le poste local, puis de lancer les différents services « IGC_SIMU_SIMBA » des postes élèves.
Pour demander le lancement des services « IGC_SIMU_SIMBA » distants, le poste maître utilisera l’application « Monitor » qui devra être installé sur tous les postes élèves et qui propose une interface Web Service (donc contactable à distance) pour exécuter les services de l’ordinateur hôte.
Les services « IGC_SIMU_SIMBA » ont besoin pour fonctionner d’une configuration présente dans les aménagements (et simulations) en cours d’exécution (il s’agit du fichier « conf/Simulation_00.xml »).
Pour cette raison, les configurations IGC (aménagements et simulations) seront mises à disposition depuis un dossier partagé sur le poste maître pour tout le monde. Elles sont ainsi uniques et au même endroit.
Poste maître
IGC Serveur IGC Serveur Donnees
IGC Serveur Log
Poste élève 1
Monitor
Web Service
IGC_SIMU_SIMBA
Lanceur SIMBA
Poste élève 2
Monitor
Web Service
IGC_SIMU_SIMBA
IGC_SUPERVISION_SIMBA Dossier Partagé
Confs IGC
Configuration poste élève
Les postes élèves ont comme seule application Simba le service Windows « SimulationSIMBA.dll ».
Configuration confXML
Chaque poste élève contient une variable d’environnement « DISTRIBUTION » pointant vers les applications IGC de l’ordinateur hôte (« C:\Program Files\IGC\Bin » la plupart du temps).
Pour que le service « IGC_SIMU_SIMBA » (Nom du service une fois la dll « SimulkationSIMBA.dll » installée comme un service Windows) puisse aller chercher correctement la configuration de l’aménagement et de la simulation en cours d’exécution, il doit connaître l’adresse UNC du répertoire des aménagements partagés sur le poste maître.
Pour ce faire, il faut modifier la valeur de la clé « ConfigurationExecution » dans le fichier
« confXML » pour y indiquer l’adresse du répertoire partagé.
Le « Monitor » (présent sur chaque poste élève) qui sera le lanceur du service doit également pouvoir être accessible à distance. En effet, c’est le lanceur principal du poste maître qui va se connecter à chaque « Monitor » des différents postes élèves pour lancer les services
« IGC_SIMU_SIMBA ». Par défaut, le « Monitor » n’est pas accessible à distance. Pour changer cela, il faut ajouter une branche « Monitor » toujours dans le fichier « confXML.xml » de chaque poste élève.
Voici une illustration des modifications à effectuer sur le fichier « confXML.xml » de chaque poste élève :
...
<!--Repertoire d'execution des configurations-->
<Clef Nom="ConfigurationExecution"
Valeur="\\10.33.162.83\Simulations"/>
...
<Branche Nom="Monitor">
<Clef Nom="Port" Valeur="2569"/>
<Clef Nom="Adresse" Valeur=""/>
</Branche>
</ConfXML>
Installation du service SimulationSIMBA
L’installation du service avec l’utilitaire « ServiceEI.exe » l’enregistre par défaut pour un démarrage en compte « Système Local ». Cela pose un problème dans le cas du service « SimulationSIMBA » des postes élèves, car il ne sera pas capable d’accéder au dossier partagé sur le réseau.
La solution proposée est d’installer le service, puis de modifier manuellement dans le gestionnaire de service de Windows sa session de démarrage pour le compte de l’utilisateur Windows loggué.
Configuration poste maître Partage des Configurations IGC
Le poste Simba maître doit partager le dossier contenant les aménagements et les simulations pour l’ensemble des postes Simba.
Pour ce faire sous Windows XP il suffit d’afficher les propriétés du dossier à partager (click droit sur le dossier à partager, puis click gauche sur « Propriétés »), puis d’activer son partage dans l’onglet
« Partage », et de renseigner une autorisation pour le groupe « Tout le monde » (click sur le bouton
« Autorisations »).
Configurations des aménagements pour le Monitor
Le module « Monitor » sera utilisé comme lanceur sur tous les postes élèves. Pour qu’il sache comment démarrer le service « IGC_SIMU_SIMBA », on doit lui expliciter comment s’y prendre.
Pour ce faire, dans le dossier de chaque aménagement on doit ajouter un dossier « Supervision », contenant un dossier « IGC_SIMU_SIMBA » (le nom du service à lancer) qui contient enfin un fichier nommé « module.xml ».
Le fichier « module.xml » doit expliciter de la manière suivante la manière de lancer le service :
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<!-- Comment l'OS gère le process -->
<Systeme nomFichier="SimulationSIMBA">
<Windows extension=".dll" service="oui" lanceur="ServiceEI.exe"
/>
<Arguments>
<!-- <Argument>AmApotreCrb</Argument> Argument vide (nom simul) -->
<Argument>-machine</Argument>
<Argument>10.33.162.83</Argument>
<Argument>-configuration</Argument>
<Argument>conf/Simulation_00.xml</Argument>
</Arguments>
</Systeme>
<Client bu="oui" libclientigc="non" nom="SimulationSIMBA"/>
<!-- Mode de démarrage -->
<Lancement manuel="oui" obligatoire="non" />
</Module>
Pour de plus amples informations sur ses configurations concernant le Monitor, référez vous à l’adresse suivante : http://wiki.igcbox.fr/index.php?title=Configuration_du_Monitor
Vérification du contenu de IPServeur.xml
Le service « IGC_SIMU_SIMBA » de chaque poste élève se connectera au démarrage au serveur IGC du poste maître. Pour ce faire, il doit en avoir l’autorisation. Vérifiez ainsi que le fichier IPServeur.xml
compris dans chaque aménagement (« CnfSitricIn » et « CnfSitricOut ») autorise des connexions clientes distantes :
<?xml version="1.0" encoding="iso-8859-1" ?>
<Document Nom="Serveur" Date="31/07/2009" Version="1">
<IPServeur>
<!-- Liste des IP Refusées -->
<!--IPRefusees IP="10.27.137.201"/ -->
<!-- Liste des IP Acceptées -->
<IPAcceptees IP= "*.*.*.*" />
</IPServeur>
</Document>
Exécution des Services
Lors du lancement d’une simulation, quelques services prennent quelques paramètres.
Poste maître
Sur le poste maître, le serveur IGC prends en paramètre l’aménagement à exécuter, suivi de la simulation.
Le service « IGC_SUPERVISION_SIMBA » prends quant à lui sa configuration xml, en chemin relatif par rapport au répertoire racine de la simulation en cours.
Poste élève
Le service « IGC_SIMU_SIMBA » prends en paramètre son fichier de configuration xml, en chemin relatif par rapport au répertoire racine de la simulation en cours, et l’adresse IP de la machine exécutant le serveur IGC principal.
Modification Simulation, LibClient, Monitor et Monitor View
Pour arriver à tester toute la chaîne, il m’a fallu modifier les outils utilisés. A titre informatif, voici un bilan des modifications effectuées.
Simulation & LibClient
Le service « IGC_SIMU_SIMBA » une fois installé sur les postes élèves avaient des dépendances avec d’autres services installés en local. Cela étant, lorsque l’on démarrait le service il essayait de démarrer le service IGC local, même en lui passant en paramètre la machine distante sur laquelle le noyau IGC s’exécutait.
Pour remédier à cela, nous avons ajouté avec Patrick dans la LibClient une constante CLIENT_DISTANT qui permet à un client d’IGC de choisir s’il sera installé avec des dépendances ou sans dépendance.
De ce fait, dans le client IGC « Simulation », j’ai ajouté une définition de cette nouvelle constante CLIENT_DISTANT.
Monitor
Dans l’application « Monitor » rien n’était prévu jusqu’alors pour sélectionner un aménagement et une simulation.
Pour arranger cela, j’ai ajouté à la méthode « SelectAmenagement » de l’interface Web Service du Monitor un paramètre optionnel pour sélectionner en plus de l’aménagement une simulation.
<element name="SelectAmenagement" ><complexType>
<attribute name="amenagement" type="xs:string" use="required" />
<attribute name="simulation" type="xs:string" default="" use="optional"
/>
</complexType></element>
Par défaut ce paramètre est égal à une chaine de caractère vide.
MonitorView
Le « MonitorView », qui est une IHM en QT pour manipuler un « Monitor », m’a servi pour tester la chaîne de lancement. Mais dans son état d’origine, elle ne permettait pas de sélectionner autre chose qu’un aménagement (pas de simulation).
J’ai donc modifié le MonitorView pour lui ajouter un champ de sélection pour la simulation, et j’ai mis cette version particulière à Simba du MonitorView dans la branche
« svn://10.33.162.5/edf/SIMBA/branches/2.1.0/MonitorView ».