FR 2961649 A1 20111223 FR 1054840 A 20100618 Procédé et système de communication basés sur WS-Discovery La présente invention se rapporte à un procédé et un système de communication entre un premier serveur et un deuxième serveur, ledit procédé et ledit système étant basés sur l'emploi de la spécification Web Services Dynamic Discovery (WS-Discovery). Web Services Dynamic Discovery (WS-Discovery) correspond à une spécification technique qui définit un protocole de découverte multicast permettant de localiser des services sur un réseau local IP. Ce type de protocole peut être employé 1 o par un poste client pour rechercher un ou plusieurs services sur le réseau local. Il est courant qu'un premier serveur, désigné comme actif pour communiquer avec un ou plusieurs postes clients à travers un réseau, devienne inactif pour différentes raisons. Dans cette situation, il est nécessaire de prévoir un deuxième serveur, dit serveur de secours, capable de devenir le serveur actif lorsque le premier 15 serveur est inactif. Vu d'un poste client, le passage du premier serveur au deuxième serveur doit cependant être transparent. Le but de l'invention est de proposer un procédé et un système de communication entre un premier serveur dit actif et un deuxième serveur dit de secours permettant de basculer, de manière transparente pour le poste client, du 20 premier serveur au deuxième serveur lorsque le premier serveur devient inactif. Ce but est atteint par un procédé de communication entre un premier serveur et un deuxième serveur, le premier serveur étant désigné comme serveur actif afin de communiquer avec un ou plusieurs postes clients à travers un réseau, ledit procédé étant basé sur l'emploi de messages conformes à la spécification Web Services 25 Dynamic Discovery (WS-Discovery) et caractérisé en ce que les messages sont dotés d'un attribut supplémentaire de redondance qui permet d'élire le deuxième serveur comme serveur actif lorsque le premier serveur n'est plus serveur actif. Selon une particularité, le procédé comporte une étape de : émission périodique par le premier serveur vers le deuxième serveur d'un 30 message dont l'attribut supplémentaire de redondance comporte un champ signalant que le premier serveur est le serveur actif, et en ce que lorsque le premier serveur n'émet plus le message pendant un intervalle de temps déterminé, le procédé comporte une étape de : émission par le deuxième serveur d'un message dont l'attribut supplémentaire de redondance comporte un champ permettant d'élire un nouveau serveur actif. Selon une autre particularité, l'étape d'émission est mise en oeuvre par le deuxième serveur à destination d'autres serveurs connectés au réseau. Selon une autre particularité, le serveur actif comporte une adresse IP connue des postes clients et lorsque le deuxième serveur est élu comme serveur actif, le procédé comporte une étape d'affectation de ladite adresse IP au deuxième serveur. Selon une autre particularité, le procédé comporte une étape de 1 o rétablissement du premier serveur comme serveur actif lorsque celui-ci se reconnecte sur le réseau. Selon une autre particularité, lorsque le premier serveur devient inactif, le procédé comporte une étape d'émission par le premier serveur d'un message conforme à la spécification Web Services Dynamic Discovery (WS-Discovery) et 15 comportant un attribut supplémentaire avertissant le deuxième serveur qu'il devient inactif. L'invention concerne également un système de communication destiné à la mise en oeuvre du procédé défini ci-dessus, ledit système comportant un premier serveur et un deuxième serveur, le premier serveur étant désigné comme serveur actif 20 afin de communiquer avec un ou plusieurs postes clients à travers un réseau, le premier serveur et le deuxième serveur communiquant à l'aide de messages conformes à la spécification Web Services Dynamic Discovery (WS-Discovery), caractérisé en ce que les messages sont dotés d'un attribut supplémentaire de redondance qui permet d'élire le deuxième serveur comme serveur actif lorsque le 25 premier serveur n'est plus serveur actif. Selon une particularité, l'attribut supplémentaire de redondance comporte un champ définissant l'objet du message. Selon une autre particularité, l'attribut supplémentaire de redondance comporte un champ comportant l'identifiant du serveur qui envoie le message. 30 Selon une autre particularité, le serveur actif comporte une adresse IP connue des postes clients et, lorsque le deuxième serveur est élu comme serveur actif, ladite adresse IP est affectée au deuxième serveur. 35 D'autres caractéristiques et avantages vont apparaître dans la description détaillée qui suit en se référant à un mode de réalisation donné à titre d'exemple et représenté par les dessins annexés sur lesquels : la figure 1 représente le système de communication de l'invention à l'état initial, la figure 2 représente le système de communication de l'invention dans un état où le serveur actif devient inactif, la figure 3 représente le système de communication de l'invention dans lequel un nouveau serveur est élu serveur actif, la figure 4 représente l'architecture d'un message conforme à la spécification WS-Discovery, ledit message étant employé dans le procédé et le système de communication de l'invention. L'invention repose sur l'emploi de la spécification Web Services Dynamic Discovery, habituellement désignée WS-Discovery. Cette spécification est notamment lisible aux adresses suivantes : http://docs.oass-open.orW/ifs-dd/discovery/1.1 /cs-01 / fsdd-discovery-1.1-20 spec-cs-01.pdf http://specs.xmisoap.orc ws/2005/O4%discovery/ws-discovery.pdf Cette spécification définit un protocole de découverte multicast permettant de localiser des services sur un réseau local IP. Ce type de protocole peut être employé 25 par un poste client pour rechercher sur le réseau local un ou plusieurs services. L'invention vise à utiliser ce protocole pour mettre en place un service de redondance entre un serveur actif connecté à un ou plusieurs postes clients et un ou plusieurs serveurs de secours. Selon l'invention, si le serveur actif est défaillant, un serveur de secours est 30 alors automatiquement élu et devient le serveur actif. Le basculement est automatique15 et totalement transparent pour les postes clients. Aucune intervention manuelle ou automatique n'est nécessaire sur les postes clients pour effectuer le basculement. Ainsi, la figure 1 montre un système de communication qui comporte un premier serveur S1 désigné comme serveur actif afin de pouvoir communiquer avec un ou plusieurs postes clients C1, C2, C3 (trois postes clients sur la figure 1) et un ou plusieurs autres serveurs S2, S3, désignés comme serveurs de secours. Dans la suite de la description, on considère le système qui comporte trois serveurs, dans lesquels le premier serveur S1 est désigné comme actif et le deuxième serveur S2 et le troisième serveur S3 sont désignés comme serveurs de secours du premier serveur S1. Ces trois serveurs S1, S2, S3 forment un ensemble de serveurs redondants. Au sein de cet ensemble, le premier serveur S1, le deuxième serveur S2 et le troisième serveur S3 communiquent entre eux en employant un protocole basé sur la spécification WS-Discovery. Pour cela, une adresse IP (IP S1, IP S2, IP S3) fixe distincte et inconnue des postes clients Cl, C2, C3 est affectée à chacun des serveurs. Le premier serveur S1 qui est le serveur actif comporte également une adresse IP dite flottante IP_F qui lui est affectée pour communiquer avec les postes clients C1, C2, C3. Le deuxième serveur S2 et le troisième serveur S3 ne comportent pas ce type d'adresse et ne sont donc pas susceptibles de communiquer avec les postes clients C1, C2, C3 tant qu'ils ne sont pas considérés comme serveur actif. Le procédé de communication employé au sein de l'ensemble de serveurs redondants utilise le protocole conforme à WS-Discovery. Plus précisément, le procédé utilise l'architecture du message désigné "Hello" de la spécification WS- Discovery. Ce message "Hello" est habituellement envoyé par un serveur aux autres serveurs d'un réseau lorsque que le serveur se connecte sur ce réseau. Grâce à ce message, il informe les autres serveurs qu'il vient de se connecter. En référence à la figure 4, l'architecture du message "Hello" comporte les attributs "anyAttribute" et "an y" permettant de lui rajouter des attributs supplémentaires permettant de l'employer pour d'autres applications. Ainsi l'invention consiste notamment à ajouter au message "Hello" classique un attribut supplémentaire permettant d'effectuer la redondance entre les serveurs de l'ensemble redondant de manière à créer un message "Hello+" (M1, figure 4). Des messages de type "Hello+" seront ainsi échangés entre les serveurs S1, S2, S3 de l'ensemble redondant pour 10 15 20 25 30 gérer la redondance et conserver en permanence un serveur actif vu des postes clients Cl, C2, C3. Cet ajout d'attribut permet de ne pas perturber les communications basées sur WS-Discovery classique. L'attribut supplémentaire est désigné "Redundancy" et permet donc d'utiliser le message "He//o+" doté de cet attribut pour effectuer la redondance entre les serveurs. Cet attribut "Redundancy" comporte les champs suivants : "UniquelD" : Ce champ permet au serveur de s'identifier sur le réseau lors de l'envoi du message "He//o+". Ce champ est rempli par l'identifiant unique du serveur émetteur lors de l'envoi d'un message "He//o+". L"'UniquelD" est généré une seule fois lors du démarrage du serveur. Cet "UniquelD" peut être par exemple un UUID tel que défini dans la norme ISO/IEC 9834-8:2008. "TypeMessage" : Lors de l'envoi d'un message "He//o+", ce champ correspond à l'objet du message envoyé. Il peut prendre trois valeurs distinctes qui sont : "JOINING", envoyé par un serveur lorsqu'il se connecte sur le réseau, "ADVERTISEMENT" envoyé périodiquement par le serveur actif aux serveurs de secours pour informer les serveurs de secours qu'il est actif, "ELECTION" envoyé par un ou plusieurs autres serveurs de secours aux autres serveurs connectés afin de lancer une élection d'un nouveau serveur actif. "Priority" : Lors de l'envoi d'un message "He//o+", ce champ permet de forcer un serveur de secours à être élu. "AdvertisementTimeout" : Période d'émission des messages "He//o+" par le serveur actif et qui lorsqu'elle est dépassée permet de détecter la disparition du serveur actif. "FloatinglPaddress" : Ce champ correspond à l'adresse IP flottante IP_F affectée au serveur actif. Lors de l'envoi d'un message "Hello+" par l'un des serveurs de l'ensemble redondant, ce message doit comporter au moins les champs "UniquelD" permettant d'identifier le serveur qui a envoyé le message et le champ "TypeMessage" indiquant 5 l'objet du message qui peut correspondre à "JOINING", "ADVERTISEMENT" ou "ELECTION". Les autres champs, c'est-à-dire "Priority", "AdvertisementTimeout", "FloatinglPaddress" sont optionnels lors de l'envoi d'un message "Hello+". En effet la durée prévue par "AdvertisementTimeout" peut être prédéfinie ou enregistrée après 10 avoir été reçue par message et l'adresse IP flottante peut être préenregistrée dans les serveurs ou enregistrée après avoir été reçue par message. Chaque serveur possède le même algorithme de fonctionnement qui comporte les instructions définies ci-dessous. Pour un serveur i désigné S_i, 15 l'algorithme est ainsi le suivant : 1) Par défaut, aucun serveur n'est "Serveur Actif", passage en phase 2). 2) Lors du démarrage du serveur, le serveur S_i génère son "UniquelD=Idi", passage en phase 3). 3) Un serveur S_i qui n'est pas serveur actif émet un message "Hello+ - 20 Type JOINING - UniquelD=1di" s'il se connecte pour la première fois sur le réseau, passage en phase 4). 4) Si le serveur S_i reçoit un message "Hello+ - Type=ADVERTISEMENT - UniquelD=IDj", le travail du serveur S_i est terminé, il sauvegarde la valeur du champ "UniquelD" reçue. Tant qu'il reçoit ce type de message dans l'intervalle de temps défini par le champ "AdvertisementTimeout", le serveur S_i reste en attente et en phase 4). Sinon il va en phase 5). 5) S'il ne reçoit plus le message "Hello+ - Type=ADVERTISEMENT - UniquelD=IDj" dans l'intervalle de temps défini par le champ "AdvertisementTimeout", il envoie un message "Hello+ - Type=ELECTION - UniquelD=Idi". S'il reçoit un message "Hello+ - Type=ELECTION" avec un "UniquelD" dont la valeur est supérieure à la valeur de son "UniquelD", passage en phase 3. Sinon passage en phase 6) après avoir attendu que tous les autres serveurs aient eu la possibilité 25 30 10 15 20 25 30 d'envoyer un message "He//o+ - Type=ELECTION" avec leur "UniquelD". La durée de l'attente peut-être fixée au préalable, programmée ou reçue par message. 6) Le serveur S_i présente un "Unique ID" dont la valeur est la plus élevée par rapport à celle de tous les autres serveurs de l'ensemble redondant. Le serveur S_i devient donc serveur actif. Passage en phase 7). 7) Affectation de l'adresse IP flottante et émission d'une requête dénommée "ARP Gratuitous" permettant de diffuser la correspondance entre son adresse MAC et l'adresse IP flottante aux autres serveurs connectés. En application de l'algorithme détaillé ci-dessus et en référence aux figures 1 à 3, l'invention fonctionne donc de la manière suivante : Le premier serveur S1 est serveur actif et est le seul à pouvoir communiquer avec les postes clients Cl, C2, C3 (figure 1). Il est localisé sur le réseau par l'adresse IP flottante IP F connue des postes clients Cl, C2, C3. En compagnie du premier serveur S1, le deuxième serveur S2 et le troisième serveur S3 font partie de l'ensemble redondant. Pour cela, lorsqu'ils se sont connectés au réseau, ils ont envoyé un message "He//o+ - Type=JOINING" indiquant qu'ils souhaitaient faire partie de l'ensemble redondant. Le premier serveur S1 qui est serveur actif émet périodiquement un message "He//o+ - Type=ADVERTISEMENT" à destination du deuxième serveur S2 et du troisième serveur S3 afin de les informer qu'il est toujours actif. Le premier serveur S1 présente un dysfonctionnement qui le rend inactif. Le deuxième serveur S2 et/ou le troisième serveur S3 ne reçoivent donc plus le message "He//o+ - Type=ADVERTISEMENT" (figure 2). Si la durée spécifiée dans le champ "AdvertisementTimeout" est par exemple dépassée pour le deuxième serveur S2, celui-ci envoie au troisième serveur S3 un message "He//o+ Type=ELECTION" avec la valeur de son "UniquelD". Le troisième serveur S3 envoie également au deuxième serveur S2 un message "He//o+ - Type=ELECTION" avec la valeur de son "UniquelD". La valeur de I"'UniquelD" du deuxième serveur S2 est plus élevée que la valeur de I"'UniquelD" du troisième serveur S3. Le deuxième serveur S2 est donc élu serveur actif. Le deuxième serveur S2 s'affecte l'adresse IP flottante de manière à pouvoir communiquer avec les postes clients Cl, C2, C3 (figure 3). Il envoie également une requête "ARP Gratuitous" à destination du troisième serveur S3 afin de lui donner la correspondance entre son adresse IP flottante et l'adresse MAC. Il émet ensuite périodiquement à destination du troisième serveur S3 un message "He/Io+ Type=ADVERTISEMENT" afin de l'informer qu'il est serveur actif. Selon l'invention, une variante de réalisation peut consister à rétablir le premier serveur S1 automatiquement comme serveur actif lorsque celui-ci n'est plus 15 défaillant et revient sur le réseau. Une autre variante de réalisation peut consister en l'envoi d'un message par le serveur actif aux autres serveurs lorsque le serveur actif devient inactif et quitte le réseau. Il est par exemple possible d'employer le message "Bye" conforme à la spécification WS-Discovery et à le faire évoluer pour remplir cette fonctionnalité. La 20 mise en place de l'élection du nouveau serveur actif sera donc plus rapide entre les serveurs de secours. Il est bien entendu que l'on peut, sans sortir du cadre de l'invention, imaginer d'autres variantes et perfectionnements de détail et de même envisager l'emploi de 25 moyens équivalents. 10 REVENDICATIONS1. Procédé de communication entre un premier serveur (Si) et un deuxième serveur (S2), le premier serveur (Si) étant désigné comme serveur actif afin de communiquer avec un ou plusieurs postes clients (Cl, C2, C3) à travers un réseau, ledit procédé étant basé sur l'emploi de messages conformes à la spécification Web Services Dynamic Discovery (WS-Discovery) et caractérisé en ce que les messages sont dotés d'un attribut supplémentaire de redondance qui permet d'élire le deuxième serveur (S2) comme serveur actif lorsque le premier serveur (Si) n'est plus serveur actif. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comporte une étape de : émission périodique par le premier serveur (Si) vers le deuxième serveur (S2) d'un message dont l'attribut supplémentaire de redondance comporte un champ signalant que le premier serveur (Si) est le serveur actif, et en ce que lorsque le premier serveur (Si) n'émet plus le message pendant un intervalle de temps déterminé, le procédé comporte une étape de : émission par le deuxième serveur (S2) d'un message dont l'attribut supplémentaire de redondance comporte un champ permettant d'élire un nouveau serveur actif. 3. Procédé selon la revendication 2, caractérisé en ce que l'étape d'émission est mise en oeuvre par le deuxième serveur (S2) à destination d'autres serveurs connectés au réseau. 4. Procédé selon l'une des revendications 1 à 3, caractérisé en ce que le serveur actif comporte une adresse IP connue des postes clients (Cl, C2, C3) et en ce que lorsque le deuxième serveur (S2) est élu comme serveur actif, le procédé comporte une étape d'affectation de ladite adresse IP au deuxième serveur (S2). 5. Procédé selon l'une des revendications 1 à 4, caractérisé en ce qu'il comporte une étape de rétablissement du premier serveur (Si) comme serveur actif lorsque celui-ci se reconnecte sur le réseau. 6. Procédé selon l'une des revendications 1 à 5, caractérisé en ce que lorsque le premier serveur devient inactif, le procédé comporte une étape d'émission par le premier serveur d'un message conforme à la spécification Web Services Dynamic Discovery (WS-Discovery) et comportant un attribut supplémentaire avertissant le deuxième serveur qu'il devient inactif. 7. Système de communication destiné à la mise en oeuvre du procédé défini dans l'une des revendications 1 à 6 et comportant un premier serveur (S1) et un deuxième serveur (S2), le premier serveur (S1) étant désigné comme serveur actif afin de communiquer avec un ou plusieurs postes clients (Cl, C2, C3) à travers un réseau, le premier serveur et le deuxième serveur communiquant à l'aide de messages conformes à la spécification Web Services Dynamic Discovery (WSDiscovery), caractérisé en ce que les messages sont dotés d'un attribut 1 o supplémentaire de redondance qui permet d'élire le deuxième serveur (S2) comme serveur actif lorsque le premier serveur (S1) n'est plus serveur actif. 8. Système selon la revendication 7, caractérisé en ce que l'attribut supplémentaire de redondance comporte un champ définissant l'objet du message. 15 9. Système selon la revendication 7 ou 8, caractérisé en ce que l'attribut supplémentaire de redondance comporte un champ comportant l'identifiant du serveur qui envoie le message. 10. Système selon l'une des revendications 7 à 9, caractérisé en ce que le serveur actif comporte une adresse IP connue des postes clients (Cl, C2, C3) et 20 en ce que lorsque le deuxième serveur (S2) est élu comme serveur actif, ladite adresse IP est affectée au deuxième serveur (S2).