Documentation Projet ASR : 2012-2013 Construction d un système réparti multi-échelle



Documents pareils
TD/TP 1 Introduction au SDK d Android

INSTALLATION ET CONFIGURATION D'UN SERVEUR WEB SUR MAC OS X

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Installation des caméras IP

Vous y trouverez notamment les dernières versions Windows, MAC OS X et Linux de Thunderbird.

Titre: Version: Dernière modification: Auteur: Statut: Licence:

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

Tutoriel Drupal version 7 :

Quick Start Installation de MDweb version 2.3

Projet serveur OwnCloud

Installation 1K-Serveur

GUIDE DE DÉMARRAGE RAPIDE

Symantec Backup Exec Remote Media Agent for Linux Servers

Gestion d'un parc informatique avec OCS INVENTORY et GLPI

Etude de cas : PGE JEE V2

FreeNAS Shere. Par THOREZ Nicolas

Installation et prise en main

Assistance à distance sous Windows

Installation des outils OCS et GLPI

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

Préparer la synchronisation d'annuaires

Installation du client Cisco VPN 5 (Windows)

Procédure d'installation complète de Click&Decide sur un serveur

Panda Managed Office Protection. Guide d'installation pour les clients de WebAdmin

[Serveur de déploiement FOG]

Comment utiliser mon compte alumni?

Guide de déploiement

Installation du client Cisco VPN 5 (Windows)

Les possibilités de paramétrage réseau des logiciels de virtualisation sont les suivantes quant à la connexion réseau :

Installation du client Cisco VPN 5 (Windows)

Tester Windows 8 sans l'installer avec Virtualbox

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

SolidWorks Electrical 2014 Guide d'installation individuelle (1 base de donnée distincte par poste)

Installation d'une galerie photos Piwigo sous Microsoft Windows.

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide

AFTEC SIO 2. Christophe BOUTHIER Page 1

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Guide d installation

Qlik Sense Cloud. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Installer un serveur web de développement avec VirtualBox

TP PLACO. Journées Mathrice d'amiens Mars 2010

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

CONFIGURATION IP. HESTIA FRANCE S.A.S 2, rue du Zécart TEMPLEUVE +33 (0) (0) Site internet:

Installation de TeamLab sur un serveur local Ce guide est destiné aux utilisateurs ayant des connaissances de base en administration Windows

JetClouding Installation

Configuration Wi-Fi pour l'utilisation d'eduroam

ipra*cool v 1.08 guide de l utilisateur ipra*cool v.1-08 Guide de l'utilisateur ipra*cool v

Système Principal (hôte) 2008 Enterprise x64

contact@nqicorp.com - Web :

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

1. Comment accéder à mon panneau de configuration VPS?

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

PPE GESTION PARC INFORMATIQUE

Cloud public d Ikoula Documentation de prise en main 2.0

Exportation d'une VM sur un périphérique de stockage de masse USB

Configurez votre Neufbox Evolution

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

Manuel d utilisateur du site de covoiturage «Etucovoiturage»

contact@nqicorp.com - Web :

(Fig. 1 :assistant connexion Internet)

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Sage CRM. 7.2 Guide de Portail Client

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft

KeePass - Mise en œuvre et utilisation

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

GUIDE DE L UTILISATEUR Recoveo Récupérateur de données

Novell. ifolder. Lisezmoi

À propos du Guide de l'utilisateur final de VMware Workspace Portal

Documentation FOG. 3. Choisir le nom de la machine, le nom d utilisateur et le mot de passe correspondant (par exemple : fog, password)

Serveur d application WebDev

Symantec Backup Exec 12.5 for Windows Servers. Guide d'installation rapide

Un serveur FTP personnel, ça ne vous a jamais dit?

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

M-Budget Mobile Internet. M-Budget Mobile Connection Manager pour Mac OS

Seagate Technology LLC S. De Anza Boulevard Cupertino, CA 95014, États-Unis

Comment configurer X-Lite 4 pour se connecter au serveur Voip de Kavkom?

TD séance n 2c Mise à jour des Systèmes

Table des matières Hakim Benameurlaine 1

Tutoriel compte-rendu Mission 1

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Guide de l'agent de notification

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

NAS 321 Héberger plusieurs sites web avec un hôte virtuel

Dongle WiFi de QUMI Manuel de l utilisateur

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

DOCUMENTATION VISUALISATION UNIT

StreamServe Persuasion SP4

v7.1 SP2 Guide des Nouveautés

Mode d'emploi pour l'installation SQL Server 2012 et Dr. Tax Office Serveur

Situation professionnelle n X

MEGA Web Front-End Installation Guide MEGA HOPEX V1R1 FR. Révisé le : 5 novembre 2013 Créé le : 31 octobre Auteur : Noé LAVALLEE

Installation et Réinstallation de Windows XP

Edutab. gestion centralisée de tablettes Android

Dispositions relatives à l'installation :

BTS SIO Dossier BTS. PURCHLA Romain

Installer VMware vsphere

Storebox User Guide. Swisscom (Suisse) SA

Transcription:

Documentation Projet ASR : 2012-2013 Construction d un système réparti multi-échelle Réalisé par : Ji LIU Eric GUILLAUME Mohamed RIAHI Encadrants: Sébastien LERICHE Sam ROTTENBERG

Contenu Déployer des applications Java Web Dynamiques sur Cloud Foundry... 0 Présentation de la documentation... 0 1) Présentation de Cloud Foundry... 1 1.1) Cloud Foundry est un cloud Platform as a Service (PaaS)... 1 1.2) Description de la plateforme fournie par Cloud Foundry... 2 1.3) Les limitations de Cloud Foundry... 2 1.4) L'infrastructure de Cloud Foundry... 2 2) Créer une application déployable sur Cloud Foundry... 4 2.1) Plusieurs types d'applications au choix... 4 2.2) Créer un projet Web Java... 4 2.3) Exporter le projet sous forme d'un fichier.war... 6 3) Quelles techniques pour utiliser Cloud Foundry?... 7 4) Installation de VMC... 8 4.1) Installation de Ruby et RubyGems... 8 4.1.1) Installation sous Ubuntu... 8 4.1.2) Installation sous Mac OS X... 8 4.1.3) Installation sous Windows... 9 4.2) Installation de VMC... 10 4.2.1) Installation sous Ubuntu... 10 4.2.2) Installation sous MacOSX... 10 4.2.3) Installation sous Windows... 10 5) Utilisation de VMC... 12 5.1) Connexion à Cloud Foundry... 12 5.2) Principales commandes de VMC... 13 6) Déploiement d'une application Java avec VMC... 14 6.1) Création des services associés... 14 6.2) Le déploiement de l'application... 14 6.3) Gérer le cycle de vie d'une application... 16 7) Utilisation du plugin Eclipse... 17 7.1) Installation du plugin Eclipse... 17 7.2) Utilisation du plugin Eclipse... 18 8) Communiquer depuis l'extérieur vers un service RabbitMQ du cloud... 23 8.1) Première étape... 23 1

8.2) Installation du tunnel Caldecott... 23 8.2.1) Installation de Caldecott sous Windows... 23 8.2.2) Installation de Caldecott sous Ubuntu... 23 8.2.3) Installation de Caldecott sous Mac OS X... 24 8.3) Création du tunnel vers un service... 24 9) Nos premières applications utilisant les communications du RabbitMQ du cloud... 25 9.1) Présentation des applications... 25 9.2) Déploiement du projet sur le cloud... 27 9.3) Paramétrage du code source... 28 9.3.1) Paramétrage sous Windows... 28 9.3.2) Paramétrage sous un Unix... 28 9.4) Déploiement du projet en local... 29 9.5) Etape finale... 29 Références :... 31 2

Déployer des applications Java Web Dynamiques sur Cloud Foundry Présentation de la documentation Dans cette documentation nous avons utilisé la notation suivante pour les commandes Shells: $ commande indique une commande dans le Shell natif de l OS $ruby commande indique une commande dans un Shell supportant Ruby Ces Shells ne sont pas les mêmes suivant l'os, nous donnerons toutes les précisions dans la partie installation de VMC.

1) Présentation de Cloud Foundry 1.1) Cloud Foundry est un cloud Platform as a Service (PaaS) Cloud Foundry est un cloud de type PaaS, c'est à dire qu'il fournit lui-même l'infrastructure matérielle et la plateforme de programmation c'est à dire: les frameworks et les serveurs d'applications. Le développeur n interagit pas avec ces derniers qui sont fonctionnels et à jour. Il n'a pas non plus à ce soucier de l'infrastructure sous-jacente qui est scalable et gère les défaillances. Il doit uniquement se concentrer sur ses codes et sur ses librairies additionnelles. Le schéma ci-dessous décrit le partage des tâches entre l utilisateur et le Cloud. Figure 1 - Pile des fonctionnalités du cloud - Image réalisée par nous-même avec des logos libres Dans notre cas, nous allons déployer des applications Java qui utilisent le serveur Apache Tomcat et le service de communication qu'est le broker de message RabbitMQ. Nous serons obligés de développer des applications Web, c'est à dire des applications lancées dans une servlet. Dans Cloud Foundry nous pouvons réaliser soit des applications Java Web classique, soit des applications Java Web avec le framework Spring, nous utiliserons les premières. Cloud Foundry est édité par VMWare dont il utilise toutes les technologies de virtualisation et de datacenter. C'est une vitrine du groupe qui semble s'amener vers un modèle commercial de type freemium. Sa structure est réputé très innovante et en fait un des PaaS les plus en vue. De plus il est OpenSource et reçoit le soutien d'une forte communauté. Cependant, le nombre de frameworks et de services reste encore assez limité et la documentation ne présente pas toutes les possibilités du cloud. Toutefois, de nombreux blogs et forums permettent d'obtenir les réponses souhaitées. 1

1.2) Description de la plateforme fournie par Cloud Foundry On peut déployer sur Cloud Foundry jusqu'à 20 applications qui possèdent toute un nom unique et qui sont accessibles à l'url suivante: http://nomdelapplication.cloudfoundry.com. Ces applications ne sont pas des programmes en état de fonctionnement mais des codes Web qui se lanceront lorsqu une requête HTTP sur leur URL sera reçue par le serveur Tomcat. Chaque application peut être déployée sous plusieurs instances virtuelles toutes prêtes à répondre à toute requête HTTP et qui se situeront sur différentes machines. La scalabilité c'est à dire la répartition des tâches à effectuer entre ces instances est réalisée automatiquement par le Cloud. Ces instances sont au nombre maximum de 16. Il faut également noter que Cloud Foundry ne fournit que 2 Runtime java, java 6 et java 7. 1.3) Les limitations de Cloud Foundry Pour éviter une trop forte utilisation de son service gratuit Cloud Foundry à mis en place des limitations supplémentaires. Nous avons déjà vu que nous étions limités à 20 applications et 16 instances. Il y a également des limitations de mémoire vive à 2Go pour toutes les instances lancées. Il faut de plus affecter une limitation mémoire pour chaque application, souvent de 512Mo. On ne peut créer plus de 256 fichiers. On dispose de 2Go de mémoire physique pour ces derniers. En ce qui concerne les services tel RabbitMQ et MySQL ils ont tout deux une limitation de 128Mo. En revanche vous n'avez vraiment aucune limitation sur l'utilisation des 4 cœurs CPU fournit ni sur l'utilisation du réseau et de son débit de 100Mo/s. En ce qui concerne le développement d applications, vous avez de nombreuses limitations concernant les entrées/sorties. Il n est en effet impossible d'avoir accès à aucun port directement grâce à un binding sur un port TCP ou à un WebService. En effet ces ports étant partagés entre plusieurs instances de plusieurs utilisateurs, ils sont bloqués. On peut seulement recevoir des requêtes HTTP sur le port 80 qui sont transmises aux servlets via le serveur Tomcat. De plus, tous nos programmes sont des programmes Web, ils ne peuvent être lancés, ils sont lancés par le serveur Tomcat automatiquement à chaque fois qu'une requête HTTP sur leur URL est reçue. Toutefois, il est tout de même possible d'y insérer des threads parallèles qui réalisent des calculs gourmands en ressources pendant plusieurs journées sans interruption. 1.4) L'infrastructure de Cloud Foundry App Exec Engine est le nom donné au système qui gère l'exécution de vos application sur une machine généralement avec un CPU quadricore de type Intel Xeon. Les Cloud Controller gèrent l'authentification, les droits d'accès pour l'accès à son compte, le déploiement d'une application, et l'accès aux services fournis tels RabbitMQ. Les Request Router gèrent le DNS du cloud, ils réalisent en temps réel la correspondance entre l'url de l'application web déployée et les App Exec Engine des différentes instances qui peuvent être lancées pour répondre à la requête. 2

Le Health Manager vérifie régulièrement si les applications et leurs instances sont dans un bon état de fonctionnement. Enfin, Cloud Foundry offre de nombreux services tels MySQL et RabbitMQ dont les instances et les données sont sur des machines à part. L'image suivante décrit l'infrastructure de Cloud Foundry avec le vocabulaire officiel. Figure 2 - Infrastructure de Cloud Foundry - Image issue de la documentation de cloudfoundry.org 3

2) Créer une application déployable sur Cloud Foundry 2.1) Plusieurs types d'applications au choix Il existe deux types d'applications Java déployables: les applications Web Java et les applications Web Java avec le framework Spring. Spring a une connexion à RabbitMQ et aux autres services plus intuitive et automatique mais il nécessite d'englober toutes nos classes dans son framework et avec ses propres fonctions d utilisation des services. Ainsi un code classique utilisant RabbitMQ n est pas portable sur le cloud en utilisant Spring : il faut réécrire tout le code utilisant RabbitMQ. Nous recommandons donc l'utilisation d'applications Java Web simple que nous allons expliciter dans la partie suivante. 2.2) Créer un projet Web Java Attention: Nous conseillons vivement d'utiliser Eclipse Enterprise Edition qui possède des outils pour exporter automatiquement et de façon fiable des projets web. Pour créer un tel projet, allez dans le menu Eclipse File -> New -> Other. Une fenêtre s'ouvre, ouvrez le dossier Web et choisissez Dynamic Web Project comme sur l'image ci-dessous. Cliquez sur Next, rentrez le nom de votre application et enfin sélectionnez Dynamic web module version 2.5 comme sur l image ci-dessous. 4

Votre premier projet a été créé! Vous pouvez maintenant ajouter des servlets et des classes java de manière classique. Si vous désirez utiliser des librairies jar, il faut les mettre dans le dossier WebContent/WEF-INF/lib/ afin qu'elles soient exportées dans le fichier.war que vous déploierez sur Cloud Foundry ; elles seront également immédiatement ajoutées au ClassPath de votre projet. 5

2.3) Exporter le projet sous forme d'un fichier.war Afin de pouvoir déployer votre application, il va falloir l'exporter dans un fichier.war, pour cela allez dans Eclipse dans le menu File -> Export, le menu suivant s'ouvre alors: Cliquez alors sur le dossier Web puis sur WAR File et renseignez le nom et la location de l'archive désirée. Nous allons maintenant voir quelles sont les techniques qui permettent de déployer et d'administrer vos applications sur le Cloud. 6

3) Quelles techniques pour utiliser Cloud Foundry? Pour utiliser ce Cloud, il faut d'abord vous inscrire avec votre adresse email pour recevoir un mot de passe associé. Vous pouvez réaliser cette étape à la page suivante: https://my.cloud Foundry.com/signup. Il existe ensuite deux méthodes pour déployer des applications sur Cloud Foundry. La première est l'utilisation de VMC qui est un système en ligne de commande très puissant mais qui nécessite un peu d'apprentissage et l'installation de nombreux logiciels. La deuxième est l'utilisation du plugin Eclipse STS qui est très ergonomique. Attention : si vous désirez réaliser des programmes communiquant de manière automatique avec le RabbitMQ de Cloud Foundry il vous faudra très vraisemblablement avoir installé et utilisé les deux outils cités ci-dessus. Nous allons expliquer ces deux méthodes en commençant par l'installation de VMC. 7

4) Installation de VMC Afin d'installer le plugin VMC, il faut tout d'abord installer les environnements Ruby et RubyGems. Ci-dessous nous avons expliqué comment installer ces derniers sous Ubuntu, Max OS X et Windows. D'autres OS sont disponibles, au début de chacune des sous-parties décrivant l'installation de VMC ci-dessous, nous avons joint un lien ou est décrit l'installation sous de nombreux OS. 4.1) Installation de Ruby et RubyGems Sous Mac OS X, Ubuntu, tous les Linux et tous les Unix, Ruby s'installe au sein du Shell natif, ainsi lorsque nous vous demanderons d'utiliser une commande $ruby commande vous devez alors la taper dans votre Shell natif, ce n'est cependant pas le cas sous Windows, plus d'explication sont données dans la partie 3.1.3) Installation sous Windows. Beaucoup d'autres OS disposent de ces technologies, pour comprendre comment les installer allez sur http://docs.cloud Foundry.com/frameworks/ruby/installing-ruby.html. 4.1.1) Installation sous Ubuntu Installez RubyGems ainsi: $ sudo apt-get install ruby-full rubygems Mettez ensuite les variables d'environnements de votre Shell à jour en ajoutant à votre.bashrc ceci: export PATH=$PATH:/var/lib/gems/1.8/bin Relancez votre terminal et testez ensuite si RubyGems est dans le path avec la commande : $ which gem Il est conseillé pour Ubuntu 10.04 ou supérieur de mettre à jour RubyGems grâce aux commandes suivantes : $ sudo gem install rubygems-update $ sudo /var/lib/gems/1.8/bin/update_rubygems 4.1.2) Installation sous Mac OS X Si vous disposez de Mac OS X avec une version supérieur à la 10.5, Ruby et RubyGems sont déjà installés et paramétrés, il n'y a rien à faire. 8

4.1.3) Installation sous Windows Commencez par télécharger et installer Ruby Installer for Windows qui contient RubyGems sur http://www.rubyinstaller.org/ Installez le package en lançant le fichier téléchargé, acceptez la licence puis cochez uniquement l'option d'ajout de Ruby à votre path comme sur l image ci-dessous: Sous Windows, le Shell disposant de Ruby ne sera pas votre Shell classique, mais celui que vous pouvez ouvrir en faisant: Windows -> Ruby-<<numéro de version>> -> Start Command Prompt with Ruby comme sur l'image suivante : 9

Attention : A chaque fois que nous écrirons une commande ainsi: $ruby <commande> dans ce tutoriel, souvenez bien que sous Windows ce n'est pas dans le Shell natif que vous devez la lancer. Mettez ensuite à jour Ruby et RubyGems ainsi: $ruby gem update --system 4.2) Installation de VMC L'installation de VMC est très simple et rapide une fois Ruby et RubyGems installés. Si vous désirez l'installer sur d'autres OS qu'ubuntu, Windows et Mac OS X, rendez vous ici : http://docs.cloud Foundry.com/tools/vmc/installing-vmc.html#installing-vmc-procedure. 4.2.1) Installation sous Ubuntu Tapez simplement dans votre Shell la commande suivante: $ sudo gem install vmc 4.2.2) Installation sous MacOSX Tapez simplement dans votre Shell la commande suivante: $ sudo gem install vmc 4.2.3) Installation sous Windows Tapez simplement dans votre Shell Ruby la commande suivante: Attention : A chaque fois que nous écrirons une commande ainsi: $ruby <commande> dans ce tutoriel, souvenez bien que sous Windows ce n'est pas dans le Shell natif que vous devez la lancer. $ruby gem install vmc L'installation peut prendre quelque temps avant d'afficher le résultat suivant : 10

11

5) Utilisation de VMC 5.1) Connexion à Cloud Foundry Attention : Vous devrez réaliser ces opérations à chaque ouverture de Shell afin d'utiliser le cloud. Vous devez d'abord vous connecter au serveur de Cloud Foundry ainsi: $ruby vmc target https://api.cloud Foundry.com Authentifiez vous avec : $ruby vmc login puis entrez l email et votre mot de passe de votre compte Cloud Foundry comme expliqué au début de la partie 3) Quelles techniques pour utiliser Cloud Foundry? Vérifiez ensuite que vous êtes bien authentifié avec la commande $ruby vmc info qui vous renverra des informations liées au cloud comme sur l'image ci-dessous: 12

5.2) Principales commandes de VMC Cette liste contient les principales commandes de VMC, la liste complète est disponible sur : http://docs.cloud Foundry.com/tools/vmc/vmc-quick-ref.html $ruby vmc passwd $ruby vmc help $ruby vmc apps $ruby vmc create-service $ruby vmc services $ruby vmc logs appname $ruby vmc stats appname permet de modifier votre mot de passe permet d'afficher l'aide affiche la liste des applications déployées avec leurs informations permet de créer un nouveau service affiche la liste des services crées permet de voir les logs de votre application permet de voir des informations précises sur une seule application 13

6) Déploiement d'une application Java avec VMC Pour déployer une application, nous devons dans l'ordre: créer l'application, créer les services que nous voulons utiliser tel RabbitMQ s ils ne l ont pas déjà été, et enfin déployer l'application en la liant aux dits-services. 6.1) Création des services associés On crée un service en sa laissant guider par la commande suivante: $ruby vmc create-service il faut bien évidemment associer au service un nom unique et noter de côté ce nom. $ruby vmc services permet de lister les services afin de vérifier si la création a bien été effectuée. Le dessin ci-dessous montre le cas de création du service servicetest. 6.2) Le déploiement de l'application Pour déployer l'application, commencez par l'exporter dans un format.war comme décrit dans la partie 2.3) Exporter le projet sous forme d'un fichier.war. Le fichier doit avoir le nom de votre application qui sera également son futur URL, par exemple: nomdelapplication.war. Pour plus d'informations sur comment générer une application Java Web compatible avec Cloud Foundry, allez à la partie 2) Créer une application déployable sur Cloud Foundry. 14

Ouvrez ensuite votre Shell et placez vous dans le dossier du.war, tapez : $ruby vmc push applicationname Répondez aux questions demandées, [Yn] indique que yes est la réponse par défaut si vous tapez entrée. Renseignez le type d'application que vous utilisez: ici java web avec le Runtime java 7. Mettez au moins 256Mo pour la limite de mémoire vive. Vous pourrez également au cours de cette étape construire différentes instances de services tel un broker de message RabbitMQ puis lier ces dernières à votre application. Attention : Il est obligatoire de lier l application aux pour qu elle puisse les utiliser. La sauvegarde de la configuration créera un fichier manifest.yml dans le dossier de votre.war, ce fichier contiendra les paramètres de votre déploiement pour automatiser cette étape ultérieurement. Si vous désirez lier une application à un service, utilisez : $ruby vmc bind-service nomservice nomapplication Testez ensuite avec $ruby vmc apps le déploiement de votre application. Félicitation!, elle est maintenant disponible sur applicationname.cloud Foundry.co, la capture d'écran suivante présente toute cette étape de déploiement. 15

6.3) Gérer le cycle de vie d'une application $ruby vmc push appname permet de mettre à jour l'application avec un nouveau.war $ruby vmc delete appname permet de supprimer l'application 16

7) Utilisation du plugin Eclipse 7.1) Installation du plugin Eclipse Premièrement, il vous faut naturellement Eclipse. Attention : je vous conseille vivement Eclipse Entreprise Edition, il exporte naturellement des librairies jar au sein d'un war correctement ce qui est bien compliqué avec la version standard d'eclipse. Ouvrez Eclipse, allez dans Help -> Eclipse market place. Puis tapez dans Find Cloud Foundry et cliquez sur Install une fois que vous avez trouvez le plugin, comme dans l'image ci-dessous. Laissez-vous guider, et une fois l'installation terminée redémarrez Eclipse. 17

Il faut ensuite créer le serveur Cloud Foundry dans Eclipse. Ouvrez la vue Serveur si elle ne l'est pas déjà en faisant: Windows -> Show View -> Other -> Server Puis faites New -> Server et renseignez les champs comme ci-dessous. Cliquez Next, spécifiez l'email et le mot de passe de votre compte sur Cloud Foundry et terminez. 7.2) Utilisation du plugin Eclipse Dans la vue Serveur, double cliquez sur le serveur Cloud Foundry, vérifiez que votre email et mot de passe sont bien insérez puis cliquez sur Connect comme ci-dessous, cela vous permettra de rentrez en connexion avec le service de Cloud Foundry. 18

Cliquez ensuite sur l'onglet Applications, l'écran suivant s'affiche alors (vous n'aurez probablement pas encore d'applications): 19

Cette fenêtre permet de gérer les services et les applications présentes dans votre Workspace. Il permet également de lier ces applications avec vos services su le Cloud. Vous pouvez également créez des services tel un système de messagerie RabbitMQ en appuyant sur le bouton entouré en rouge. Nous vous conseillons de les créer tout de suite si vous souhaitez les utiliser ultérieurement. Un peu en bas à droite en cliquant sur le lien Remote Systems View vous pouvez voir l'arborescence des applications que vous avez déployées sur Cloud Foundry comme ci-dessous. 20

Pour déployez une application Java sur CloudFoundry, il suffit de faire glisser l'icône du projet sur le serveur Cloud Foundry comme suit. Une fenêtre s'ouvre comme ci-dessous et nous demande de valider le nom de l'application et la mémoire que nous désirons réserver, nous conseillons ne pas prendre en dessous de 256M. 21

Cliquez sur le bouton Next et indiquez les services auxquels vous désirez lier votre application puis le type de votre application (ici "java web") et la version du Runtime java désiré (Cloud Foundry supporte java 6 et 7). En revenant sur l'onglet Applications de la fenêtre du serveur Cloud Foundry, vous pouvez voir en haut à droite sur le schéma suivant les boutons start, restart et update and restart qui vous permettent de gérer le cycle de vie de votre application et de la mettre à jour. 22

8) Communiquer depuis l'extérieur vers un service RabbitMQ du cloud 8.1) Première étape Afin de réaliser cette communication, il faut d'abord créer avec Eclipse un service RabbitMQ comme expliqué à la partie 7) Utilisation du plugin Eclipse. Il faut ensuite sélectionner les informations de connexion au service que sont son nom, son mot de passe et le nom du virtualhost qui sont statiques. 8.2) Installation du tunnel Caldecott Afin de communiquer depuis un ordinateur distant vers le cloud, Cloud Foundry utilise le système de tunnel Caldecott qu'il vous faut installer puis lancer afin d'utiliser à distances les services du PaaS. Nous allons expliquer comment installer ce tunnel sur Windows, Ubuntu et Mac OS X. Pour les autres distributions de Linux l installation est similaire à celle sous Ubuntu. 8.2.1) Installation de Caldecott sous Windows Premièrement, allez sur rubyinstaller.org/downloads téléchargez le development kit. Double cliquez ensuite sur le fichier téléchargez et extrayez le dans le dossier C:\DevKit. Ouvrez un terminal Windows et mettez vous dans ce dossier. Suivez ensuite les instructions de la page https://github.com/oneclick/rubyinstaller/wiki/development-kit Ouvrez ensuite le Shell Ruby et exécutez la commande: $ruby gem install caldecott --no-rdoc --no-ri 8.2.2) Installation de Caldecott sous Ubuntu Exécutez les commandes suivantes dans l'ordre: $ sudo apt-get install g++ libssl-dev $ruby sudo gem install caldecott --no-rdoc --no-ri $ sudo gem install tunnel-vmc-plugin Notez que la première commande varie peu sous d'autres distributions Linux et que la deuxième et la troisième restent identiques et que toutes trois elles permettent une installation sous toute distribution. 23

8.2.3) Installation de Caldecott sous Mac OS X Il faut d'abord avoir Xcode installé sur son Mac. Tapez ensuite: $ruby sudo gem install caldecott --no-rdoc --no-ri 8.3) Création du tunnel vers un service Créer un tunnel vers par exemple le service de nom rabbitmq-123 se réaliser simplement ainsi: $ruby vmc tunnel rabbitmq-123 A la suite de cette commande de nombreuses données sont affichées dont ces dernières: Ne lancez aucun clients en répondant 1 comme montré dans l'encadré rouge sur l'image ci-dessus. Toutes les informations de connexions dont vous avez besoin pour notamment RabbitMQ sont présentes. L'image suivante montre un exemple d'utilisation de ces paramètres. Il y a une autre manière de réaliser ce paramétrage. Vous pouvez également utiliser le nom de service, le mot de passe le virtualhost et le port 10000 que vous a fourni Eclipse (bien qu ils soient différents) avec comme Host toujours l adresses IP locale 127.0.0.1. Attention: Le tunnel étant construit localement, il faut toujours donner à l'hôte l'adresse IP locale 127.0.0.1 24

9) Nos premières applications utilisant les communications du RabbitMQ du cloud 9.1) Présentation des applications Nous avons réalisé un ensemble de 3 projets qui vont nous servir lors de la démonstration pendant la soutenance. Ces projets se trouvent sur le SVN dans le dossier src/code_final. Le premier de ces projets se nomme application_locale, il permet de lancer deux applications différentes qui envoient et reçoivent des messages à des destinataires à travers une interface en ligne de commande. Ce projet a été empaqueté dans le fichier application_locale.jar. Il communique de façon automatique en générant le tunnel Caldecott de façon automatique. Le deuxième projet se nomme application_parametres et est contenu dans le fichier application_parametres.war il doit être déployé sur Cloud Foundry et permet de récupérer les paramètres de connexion de façon dynamique pour des applications extérieures à Cloud Foundry. Le troisième projet se nomme application_cloud, il est exporté dans le fichier application_cloud.war. Il est accessible par URL et présente une interface graphique ergonomique comme suit : Les applications permettent de communiquer soit depuis le Cloud, soit depuis un ordinateur personnel. Il faut d abord renseigner le nom que l on veut utiliser dans le champ «Nom de cette application» puis cliquer sur commencer et ensuite rentrer le nom du destinataire et le message à publier et cliquer sur Publish. Il est également possible de recevoir un message en cliquant sur le bouton Get one. 25

Le schéma ci-dessous décrit les étapes permettant les communications entre ces différents projets. Figure 3 - Représentation des communications de nos applications - Image réalisée par nous même On s aperçoit dans un premier temps que les paramètres de communication statiques sont demandés à l application application_parametres sur le cloud. L application locale crée alors s il ne l a pas déjà été un Proxy du tunnel chargé de créer le tunnel Caldecott vers le RabbitMQ sur le cloud. C est ensuite à travers ce tunnel que passerons toutes les instructions d utilisation de RabbitMQ tel la déclaration d une queue, son écoute, où encore l envoi d un message. De son côté l application sur le cloud communiquera via le framework Spring et ses méthodes avec le RabbitMQ du cloud. On peut également lancer plusieurs instances de l application sur le Cloud, à partir de plusieurs onglets de navigateur et lancer plusieurs instances de cette application sur une machine locale. Il est ainsi possible d effectuer toute sorte de communication entre des applications externes et internes à Cloud Foundry. Le schéma suivant présente toutes ces possibilités. 26

Figure 4 - Représentation des communications de nos applications - Image réalisée par nous même 9.2) Déploiement du projet sur le cloud Vous devez disposer d un compte sur Cloud Foundry et avoir crée un service RabbitMQ dont vous devrez vous souvenir du nom. Dans un premier temps il faut déployer sur Cloud Foundry l application application_parametres.war. Si l url http://application_parametres.cloudfoundry.com est déjà utilisée il faudra modifier le nom de l application et du.war. Il faut ensuite noter de coté cet URL. Il faut ensuite déployer l application application_cloud sur le cloud en la liant à votre service RabbitMQ. Rendez vous ensuite à l URL obtenue, vous obtiendrez la petite interface graphique cidessus. 27

9.3) Paramétrage du code source Prenez le projet présent sur le SVN dans le dossier src/code et appelé application_locale et copiez-le sur votre machine puis importez le dans Eclipse. Il faut ensuite le paramétrer pour qu il puisse lancer automatiquement un programme et accéder à RabbitMQ. Ce paramétrage dépend de l OS sur lequel vous vous trouvez. 9.3.1) Paramétrage sous Windows Il faut modifier le fichier application_locale/cmd1.bat aux lignes 16 et 17 en mettant votre email et votre mot de passe de compte Cloud Foundry à la place de lucliuji@gmail.com et de tspprojet. A la ligne 17 remplacez rabbitmq-7705d par le nom du service rabbitmq que vous avez créé. Copier ensuite les fichiers application_locale/cmd1.bat et application_locale/cmd2.bat dans $(ruby_home)/bin/ avec $(ruby_home) le dossier où vous avez installé Ruby. Puis modifier le fichier application_locale/src/connecteur/tunnel.java. A ligne 98 remplacez D:\\Ruby193\\bin\\cmd1.bat par $(ruby_home)\\bin\\cmd1.bat. A ligne 99 remplacez D:\\Ruby193\\bin\\cmd2.bat par $(ruby_home)\\bin\\cmd2.bat avec $(ruby_home) le chemin vers le dossier où a été installé Ruby. Il faut ensuite réexporter avec Eclipse le projet dans un fichier application_locale.jar comme suit : Après l'installation on peut le lancer par taper la commande: $ java -jar application_locale.jar. 9.3.2) Paramétrage sous un Unix Créez d'abord un tunnel avec vmc. Dans le fichier /src/connecteur/him.java,à ligne 16 supprimer Tunnel.etablir(); à la ligne 21 remplacez Tunnel.get_username(),Tunnel.get_password(),Tunnel.get_virtuelhost() par les strings correspondant à votre email, votre mot de passe et le virtualhost de votre RabbitMQ sur Cloud Foundry. Faites exactement les mêmes remplacements à la ligne 26. Attention : La partie automatisant l établissement automatique du Tunnel sous un Unix ne fonctionne pas encore correctement. 28

9.4) Déploiement du projet en local Attention : L application locale ne fonctionne que sous Windows. Nous n avons pas réussi à automatiser la génération automatique du tunnel Caldecott sous Windows. Vous devez d'abord disposer d un ordinateur avec Ruby et RubyGems installé, pour cela reportez vous à la partie 4.1) Installation de Ruby et RubyGems. Votre ordinateur doit également avoir VMC installé, pour cela reportez vous à la partie 4) Installation de VMC. Il faut ensuite copier les fichiers cmd1.bat et cmd2.bat dans le dossier $(ruby_home)/bin avec $(ruby_home) le chemin vers le dossier où a été installé Ruby. 9.5) Etape finale Premièrement, exportez le projet dans une archive jar exécutable, en allant dans le menu Eclipse File -> export. La fenêtre ci-dessus s ouvre alors, ouvrez le dossier Java et sélectionnez Runnable JAR file. L utilitaire ci-dessous s ouvre alors, sélectionnez dans Launch configuration la classe Him de ce projet. 29

Il ne vous reste plus qu à lancer le programme dans un Shell avec la commande: $ java -jar application_locale.jar. 30

Références : http://www.cloudfoundry.com/ http://www.cloudfoundry.org/ http://www.rabbitmq.com/ https://github.com/cloudfoundry/vcap-java-client.git/ http://www.ruby-lang.org/fr/ http://rubygems.org/ 31