• Présentation d’Azure Machine Learning

    .
    Depuis le 15 Juillet, nous avons annoncé la mise à disposition, en version d’évaluation, de notre solution de Machine Learning. Pour l’utiliser au sein de votre portail Azure, vous pouvez en faire la demande depuis ce lien :
    http://azure.microsoft.com/en-us/trial/get-started-machine-learning/.
    Pour plus d’information sur le Machine Learning et le Big Data, vous pouvez consulter ce blog : http://blogs.msdn.com/b/big_data_france/
    Cet article est découpé de la manière suivante :
    • Création de l’espace Machine Learning via le portail Azure. 1
    • Utilisation de ML Studio. 1
    • Exploitation du model1
     
    Je vais illustrer l’utilisation d’Azure ML via « ML studio ». Le scénario utilisé est des plus simples. Nous allons créer un modèle afin de prédire l’achat éventuel d’un vélo en fonction des caractéristiques socio-professionnelles de l’acheteur potentiel (âge, salaire, situation familiale, nombre d’enfant,….).

    Création de l’espace Machine Learning via le portail Azure

    Depuis le portail Azure, en bas de la page cliquez sur le bouton « + Nouveau ».
    image
    Dans le menu, choisissez « Services de données », « Machine Learning », « Quick Create ».
    Renseignez les informations de création de votre environnement de Machine Learning.
    Cliquez sur « Create an ML Workspace ».
    image
    Après une quinzaine de minutes, votre environnement est prêt. Cliquez sur le menu « Dashboard » et cliquez sur « Sign-in to ML Studio ».

    Utilisation de ML Studio

    Maintenant que notre environnement est créé, nous allons l’exploiter avec ML Studio.

    Création d’un dataset

    Via ML studio, il est possible d’importer votre propre jeu de données pour en faire des datasets
    En bas de la page, cliquez sur « + NEW ».
    image
    Dans le menu qui apparaît, cliquez sur « Dataset », puis sur « From Local File ».
    Dans la fenêtre « Upload a new dataset », sélectionnez le fichier de données que vous voulez définir comme dataset.
    Une fois toutes les informations renseignées, cliquez sur la coche en bas à droite.

    Création d’un espace d’expérimentation

    Maintenant que nous avons importez nos propres données, nous allons créer une expérimentation sur celles-ci.
    Cliquez sur le bouton « + New » en bas de la page.
    Dans le menu, cliquez sur « Experiment ».
    La fenêtre d’expérimentation s’ouvre. Sur la partie gauche, vous aurez accès à la boîte d’outils qui comporte de nombreuses sections.
    La barre de recherche va s’avérer très pratique pour trouver les modules que l’on souhaite intégrer à notre expérimentation.
     
    image

    Utilisation du dataset

    Nous allons maintenant utiliser notre dataset.
    Dans la rubrique « Saved Datasets », sélectionnez le dataset que vous avez téléchargé précédemment.
    Dans notre exemple, le dataset se nomme « Franmer_Client.csv ».
     
    Sélectionnez le dataset et faîtes le glisser sur la partie centrale de la fenêtre. Le dataset apparaît dans l’espace de création. Si vous cliquez sur le point se trouvant en bas de la forme du dataset 2 options apparaissent : « Download » et « Visualize ».
    image
    Par exemple, si vous cliquez sur « Visualize », vous obtiendrez des informations sur votre jeu de données.
    Cet espace de visualisation permet de créé un premier jeu d’analyses de votre jeu de données en créant des graphiques de comparaison.
    Il sera aussi possible de créer un graphique de comparaison entre des informations provenant de 2 colonnes.

    Création d’un model

    Maintenant que nous avons placé notre dataset, nous allons créer un modèle d’expérimentation. L’idée est de créer un modèle afin de prédire l’achat éventuel d’un vélo par rapport aux différentes caractéristiques du potentiel acheteur.
    Dans un premier temps, nous allons « entrainer » notre modèle à partir de notre dataset qui contient les caractéristiques des clients et surtout, une colonne qui indique si oui ou non un vélo a été acheté.
    Nous allons donc extraire une partie des données de note dataset afin de réaliser cet « entrainement ».
    Sur la partie gauche, dans le champ de recherche, commencez à entrer le mot « Split ». Faîtes glisser le module « Split » dans l’espace de création.
     
    Une fois le module « Split » dans l’espace de création, reliez-le avec le data set (la flèche part du dataset vers le module « Split »). Vous devez obtenir quelque chose de similaire à la copie d’écran ci-dessous : 
    Cliquez sur le module « Split ». Dans la partie droite de la fenêtre, apparaît les propriétés du module. Par défaut, la valeur « 0.5 » est défini pour le champ « Fraction of rows in the first output… ».
    Vous pouvez modifier cette valeur si vous souhaitez injecter plus de données dans le module « d’entrainement ». Dans mon exemple je vais définir la valeur à 0.8. Je vais donc injecter 80% des données dans le module « d’entrainement » et les 20% restant seront directement injecté dans le module de scoring. (Le jeu de données utilisé ici fait 100 000 lignes).
    Avant d’aller plus loin dans l’entrainement, il est aussi possible de rajouter d’autres modules en sortie de votre dataset. Par exemple, si dans le moteur de recherche vous entrez « descriptive », le module « Descriptive Statistics » apparaît. Glissez-le sous le dataset puis relier les 2 modules.
     
    En bas de l’écran, cliquez sur le bouton « Run » afin d’exécuter votre premier modèle.
    image
    Une fois le modèle exécuté, une coche verte apparaît pour tous les modules Ok.
    image
     
    Cliquez sur le point en bas de la forme du module « Descriptive Statistics ». Cliquez sur « Visualize ».
    Cette vue vous donne de nombreuses informations statistiques sur votre jeu de données.
    Ci-dessous, un exemple de graphique :
     
    Continuons la création de notre modèle prédictif. A la sortie de notre module de « Split », nous allons collecter les données pour réaliser un « entrainement » du modèle.
    Dans le moteur de recherche, entrez le mot « Train ». Dans les résultats qui s’affiche, sélectionnez et faites glisser sur l’espace de création le module « Train Model ».
    image
     
    Reliez le module « Split » avec le module « Train Model ».
     
     
    Mon jeu de données contient une colonne « Purchased Bike » avec les 2 valeurs « Yes » ou « No ». Comme cette colonne ne comporte finalement qu’un nombre fini de valeur, un module de classification semble être ici approprié à notre modèle de prédiction.
    Toujours dans la partie gauche, dans le moteur de recherche, commencez à écrire « Classification ». Dans le résultat de la recherche, sélectionnez un module de classification et rajoutez le au modèle, au-dessus du module « Train Model ».
     
    image
     
    Pour cet exemple, je choisis le model « Two-Class Averaged Perceptron » (Pourquoi j’ai choisi ce modèle ? En fait je n’en sais rien, peut-être parce que le nom sonnait bienJ. Mais au-delà de la petite plaisanterie, sachez que vous pourrez revenir à n’importe quel moment sur votre modèle, pour changer ou modifier la classification afin d’obtenir un modèle plus fiable).
    Reliez le module de classification au module « Train Model ».  Ci-dessous, une copie d’écran de mon modèle :
    image
     
    Vous remarquez un indicateur rouge dans le module « Train Model ». Cela signifie que ce module n’est pas correctement paramétré. Cliquez sur le module « Train Model ». Dans les propriétés du module, dans la partie droite de la fenêtre, cliquez sur le bouton « Launch column selector ».
    Dans la fenêtre, « Select a single column », sélectionnez la colonne qui servira de référence pour votre prédiction. Dans mon exemple, j’utilise la colonne « Purchased Bike ».
    Cliquez sur la coche en bas à droite de la fenêtre.
    Notez que l’indicateur rouge à maintenant disparu J !
    Nous allons maintenant réaliser une prédiction, basée sur les données d’entrainement, avec des données de test. Ces données de test vont en fait être les données résultant de notre module « Split ».
    Dans le moteur de recherche, entrez le mot « Score ». Dans le résultat de la recherche, sélectionnez « Score Model » et rajoutez le en dessous du module « Train Model ».
     
    Une fois le module « Score Model » rajouté, reliez ses 2 points d’entrées avec les sorties du module « Train Model » et du module « Split ».
    Ci-dessous une copie d’écran de mon modèle.
    Azure ML propose aussi des modules pour évaluer notre modèle. Cela permet de vérifier la pertinence de notre prédiction.
    Dans le moteur de recherche, sur la gauche, entrez le mot « evaluation ». Sélectionnez le module « Evaluate Model » et rajoutez-le à votre Modèle.
    image
     
    Une fois le module « Evaluate Model » rajouté, liez-le au module « Score Model » comme illustré ci-dessous :
    A ce stade-là, il est déjà possible d’exécuter notre modèle afin de vérifier sa pertinence.
    En bas de l’écran, cliquez sur le bouton « Run ».
    Si tout va bien, vous devez avoir des coches vertes dans tous les modules J !!
    Note : Vous remarquerez que les premiers modules n’ont pas été exécutés à nouveau. En effet, Azure ML conserve les résultats des exécutions précédentes à partir du moment où aucun changement n’a été effectué au sein de ces modules.
     
     
    Une fois le modèle exécuté, vous pouvez cliquer sur la sortie du module « Evaluate Model ». Un menu contextuel apparaît.
    Cliquez sur « Visualize ».
     
     
    Le graphique ci-dessous vous représente la pertinence du modèle. Le but est d’avoir une courbe le plus proche possible des axes de gauche et du haut (en rouge)….. Ce qui n’est pas vraiment le cas ici L !
     
    image
    Un peu plus bas dans la fenêtre du graphique (pensez à descendre dans la fenêtre), vous avez des données chiffrées sur la pertinence de votre modèle.
     
    Il est alors possible de changer/modifier les modules de classifications pour essayer d’améliorer le modèle. Fermez la fenêtre d’évaluation du modèle afin de revenir dans l’éditeur.
    Dans le moteur de recherche, sur la gauche, entrez « classification ». Dans cet exemple je supprime le module « Two-Class Averaged Perceptron » et je le remplace par le module « Two-Class Boosted Decision Tree ».
     
    Voici donc mon nouveau model
     
    Cliquez sur le bouton « RUN ».
     
    Après exécution, visualisez le résultat depuis le module « Evaluate Model » en cliquant sur « Visualize » en sortie du module.
    Voici le résultat que j’obtiens.
    Et voici les valeurs du modèle :
     
    Ce qui est beaucoup mieux J!
    Je reviendrais un peu plus loin dans cet article sur la signification des valeurs « True Positive », « False Negative », « False Positive » et « True Negative ».

    Persistance des résultats

    Maintenant que nous avons notre model, ça peut être intéressant de conserver le résultat quelque part. Azure ML permet de sauvegarder le résultat de votre modèle.
    Dans la partie gauche, sous la section « Data Input and Output », sélectionnez le module « Writer » et insérez-le dans votre modèle.
    Ci-dessous une copie d’écran de mon ML Studio :
     
    Cliquez sur le module « Writer ». Dans la partie droite de la fenêtre, vous accédez aux propriétés du module.
    Renseignez les valeurs en fonction de l’endroit où vous souhaitez sauvegarder les données. Dans mon exemple, j’utilise un compte stockage Azure qui comporte le container azure-ml.
    Dans le champ « Path to blob beginning with container », je renseigne le chemin en faisant bien attention de commencer par le nom du container.
    Après exécution du modèle, un fichier csv se trouve dans mon container Azure.
     

    Récupération des données avec Excel Power Query

    Nous allons récupérer les informations du fichier Excel avec l’add-in Power Query.
    A partir d’Excel, dans l’onglet « Power Query », cliquez sur « From Other Sources » puis sur « From Windows Azure Blob Storage ».
    image
    Renseignez les informations concernant votre compte de stockage.
    Puis sélectionnez le conteneur qui contient le fichier csv.
     
    Dans l’éditeur Power Query, cliquez sur « Binary » correspondant au fichier csv.
     
    Les données du fichier apparaissent. Cliquez sur le bouton « Close & Load ».

     

    image

     

    Les données sont injectées dans une feuille Excel. Pour cette démonstration j’ai ensuite filtrée les colonnes comme décrit ci-dessous :

    ·         La colonne « Purchased Bike » filtrée sur « Yes ».

    ·         La colonne « Scored Labels » filtrée sur « No ».

    Le nombre de ligne retournée est de 117.
    image
    Le nombre de ligne retournée par les filtres est de 117. Ce qui correspond au résultat « False Négative » de l’évaluation de notre model. Sur les 20% des données, issue du module de split, seulement 117 retournent la valeur « No » alors qu’elles étaient définies à « Yes » dans le jeu de données « d’entrainement ».

    Exploitation du model

    Maintenant que notre expérimentation nous permet d’avoir un modèle avec un niveau de précision satisfaisant, nous allons l’utiliser pour passer en production.
    Pour ce faire nous allons suivre les étapes suivantes :

    ·         Sauvegarde du module « Train Model » en tant que « Trained Model ».

    ·         Sauvegarde de toute l’expérimentation sous un nom différent (« save as »).

    ·         Définition des points d’entrées et de sorties.

    ·         Publication en tant que service web.

     

    Sauvegarde du module « Train Model » en tant que « Trained Model »

    Cliquez sur le bouton de sortie du module « Train Model ». Dans le menu contextuel, cliquez sur « Save as trained Model » 
     
    Dans la fenêtre qui apparaît, renseignez les informations de votre model. Si vous souhaitez remplacer un model existant, cochez la case « This is the new version of an existing trained model ».

    Sauvegarde de toute l’expérimentation sous un nom différent (« save as »)

    Maintenant, sauvegardez votre expérimentation mais sous un autre nom.
    Sauvegardez votre expérimentation en cliquant sur « Save as ».
     
    Donnez un nom à votre nouveau modèle. Validez l’enregistrement en cliquant sur le bouton en bas à droite de la fenêtre.

    Définition des points d’entrées et de sorties

    Revenez sur votre page d’accueil d’expérimentations et sélectionnez l’expérimentation que vous venez de sauvegarder.
    image
    Cliquez sur votre nouvelle expérimentation. Dans mon cas je sélectionne « Demo – 2 ».
    Vous devez retrouver votre expérimentation.
    Retirez les modules « Two-Class Bossted Decision Tree », « Train Model », « Descriptive Statistics » et « Writer ».Vous devez obtenir la même chose que la copie d’écran ci-dessous :
     
    Dans la partie gauche, déroulez la rubrique « Trained Models ».
     
     
    Sélectionnez le Trained model « Demo », puis glissez-le dans la partie centrale. Reliez le Trained model avec le module « Score Model ».
    Maintenant, nous allons définir les points d’entrées et de sorties de notre modèle.
    Faîtes un clic droit sur le point d’entrée droit du module « Score Model ». Cliquez sur « Set as Publish Input ».
    Cliquez sur le point de sortie du module « Score Model ». Cliquez sur « Set as Publish Output ».
    Votre module « Score Model » doit ressembler à la copie d’écran ci-dessous :
    Cliquez sur le bouton « Run » en bas de la fenêtre.

    Publication en tant que service web

    Maintenant notre expérimentation est prête à être publiée.
    Cliquez sur le bouton « Publish Web Service ».
    Confirmez la publication en cliquant sur « Yes ».
    image
     
    Le dashboard de l’API s’affiche alors à l’écran. Vous y trouverez la clef (« API Key »), les aides sur son utilisation ainsi qu’un lien pour tester l’API.
    image
     
    Cliquez sur le bouton « Test » afin de réaliser un essai. Un formulaire apparaît. Renseignez les champs (il n’est pas nécessaire de tous les remplir). Puis validez.
    A bout de quelques secondes, le résultat est renvoyé en bas de la fenêtre, dans le détail de l’opération.
     
     
    Si vous souhaitez avoir plus de détail sur l’utilisation de l’API, vous pouvez cliquer sur les liens « API Help page ».
     
    Ci-dessous un exemple de la page d’aide.
    Tout en bas de la page se trouve des exemples de code en C#, Python et R. Dans la vidéo illustrant cet article, je montre rapidement comment utiliser le code C# avec Visual Studio.
     

        

     
    Voilà pour une première utilisation d’Azure ML Sourire ! Une vidéo d'illustration est disponible ici.

    Franck Mercier

    Sessions de formation gratuites :

    Pour tester Windows Server 2012, Windows 8, SQL Server 2012 et SQL Server 2014 CTP2, vous pouvez télécharger gratuitement la version d’évaluation disponible sous la forme :

    Windows Server 2012 :

    SQL Server 2012 :

    Evaluation SQL Server 2014 CTP2 :

    Evaluation Power BI :

    Testez Azure gratuitement pendant un mois :

     

     

     

     
     
     
     
     
     
     
     
     
     
     
     
  • Excel BI et Project sur Surface RT, Ipad ou Android via Azure RemoteApp

    Depuis quelques semaines, il est maintenant possible de tester dans Azure la version béta de RemoteApp. Cette solution permet de faire tourner des applications type Office sur n’importe quel appareil comme une Surface RT, un IPad ou autre. Cet article va illustrer la mise en œuvre de RemoteApp. Nous allons utiliser RemoteApp pour exécuter Excel (et ses add-ins BI) ainsi que de Project Professional sur une tablette AndroïdTM.

    Création du RemoteApp

    A partir de votre portail Azure, cliquez sur le bouton « Nouveau ».

    image

    Sélectionnez « Services d’application », « RemoteApp » puis « Quick Create ».

    Renseignez le nom, la région ainsi que le modèle d’image à utiliser. Puis validez.

    image

    Au bout d’une dizaine de minutes, un nouveau service RemoteApp apparaît. Cliquez dessus.

    image

    Cliquez sur le menu « User access » afin de définir les utilisateurs qui pourront utiliser le service RemoteApp.

    image

    Cliquez sur le menu « RemoteApp Programs » afin de voir la liste des applications disponibles. Via le modèle utilisé, nous avons une grande partie de la suite Office.

    image

    Il est possible de rendre certains programmes non disponibles en le sélectionnant et en cliquant sur le bouton « Unpublish ».

    Dans cet exemple, j’ai retiré le programme « OneNote ».

    image

    En cliquant sur le bouton « Publish », vous aurez accès à la liste des programmes qu’il est possible de publier via Azure RemoteApp :

    image

    Ci-dessous, une partie de la liste des programmes disponibles.

    clip_image026

    Une fois les programmes sélectionnés et publiés, ils peuvent être utilisés sur nos appareils clients.

    Utilisation d’Azure RemoteApp

    Installez l’application RemoteApp sur les postes clients (Surface RT, iPad,…) via l’url disponible depuis le « dashboard » : https://www.remoteapp.windowsazure.com/

    image

    Depuis votre poste client (Surface RT, iPad,..) connectez-vous sur la page https://www.remoteapp.windowsazure.com/

    Cliquez sur le bouton, en haut à droite, « Install Client ».

    image

    L’installation du client détecte le type d’appareil que vous utilisez et vous propose la bonne version à installer.

    clip_image033

    ===========================================================================

    Si vous cliquez sur « See all clients », vous aurez accès à tous les clients supportés aujourd’hui :

    clip_image034

    ===========================================================================

    Installez le client depuis la page web de RemoteApp.

    clip_image035

    Une fois le client installé, Exécutez « RemoteApp ». Le client va vous demander de vous connecter. Utilisez un compte qui a été défini lors du paramétrage du service RemoteApp via le portail Azure.

    clip_image036

    Une fois connecté, vous aurez accès à l’ensemble des applications qui ont été publiées. Vous remarquez ici que OneNote n’est pas disponible.

    clip_image038

    Double-cliquez sur le programme que vous souhaitez utiliser.

    clip_image039

    Et hop ! Votre programme est disponible et fonctionnel Sourire !

    Bien entendu, j’ai testé en premier la disponibilité des add-ins BI d’Excel !

    Et après vérification, ils sont bien activables dans les composants COM.

    clip_image040

    Ci-dessous, une copie d’écran après activation des add-ins.

    image

    J’ai réalisé le test chez des amis qui possèdent des tablettes sous AndroidTM (Les traites Sourire).

    Ci-dessous, une photo d’un Excel Power-View tournant sur une tablette AndroidTM :

    image

    Comme on ne se refait pas, j’ai aussi voulu tester Project Sourire :

    image

    En termes d’utilisation de ressources, voici ce que ça donne avec Excel et Project ouverts sur la tablette :

    image

    Côté Portail Azure, il est possible d’avoir un état sur les sessions actives :

    clip_image052

    Voilà donc nos outils de productivité disponibles sur un grand nombre d’appareils mobiles via la solution Azure RemoteApp !

    Franck Mercier

    Pour tester Windows Server 2012, Windows 8, SQL Server 2012 et SQL Server 2014 CTP2, vous pouvez télécharger gratuitement la version d’évaluation disponible sous la forme :

    Windows Server 2012 :

    SQL Server 2012 :

    Evaluation SQL Server 2014 CTP2 :

    Evaluation Power BI :

    Testez Azure gratuitement pendant un mois :

  • SQL Server 2014 : AlwaysON Availability Group dans Azure (Partie 6)

     

    Voici le sixième et dernier article consacré à la mise en place d’une solution SQL Server 2014 AlwayON Availability Group dans Azure. Les articles sont découpés selon le plan suivant :

    Ce billet va traiter de la sixième partie, “Test de la bascule AlwaysON”. Pour rappel, à la fin de cette première série d’articles, nous aurons l’architecture suivante :

    image_thumb111

     

    Test de la bascule AlwaysON

    Maintenant que notre groupe de disponibilité est prêt et configuré avec un listener, nous allons tester la bascule d’un serveur à l’autre.

    Afin de pouvoir faire le test et se connecter au listener, il faut que l’application cliente soit en dehors du service de Cloud qui héberge le listener.

    Connexion depuis un client extérieur au cloud Service

    Pour illustrer le groupe de disponibilité, j’utilise le Management Studio qui est installé sur mon Laptop (un lenovo X1 Carbon).

    Depuis une machine cliente, lancez SQL Server Management Studio.

    La fenêtre « Connect to Server » apparaît.

    Théoriquement, le champ « Server type » est grisé mais doit afficher « Database engine ».

    Dans le champ « Server name », entrez le nom de votre service de cloud et le point de terminaison ouvert dans le portail Azure. Dans mon exemple c’est :

    · Demosqlao.cloudapp.net,55569.

    Comment l’authentification Windows n’est pas possible dans notre cas, il faut utiliser un compte SQL. Pour cette démonstration, j’utilise le compte sa, que j’ai activé au préalable sur mes différents serveurs SQL.

    Cliquez sur « Connect ».

    clip_image001

    Une fois connecté au listener, cliquez sur le bouton « New Query ».

    clip_image002

    Dans la fenêtre de droite, entrez et exécutez la requête suivante :

    Select @@servername.

    Le résultat vous retourne le serveur actif. Dans mon cas c’est le server SQL1 (A-FRANMERSQL1).

    clip_image003

    Bascule manuelle

    Connectez-vous, via le bureau Ă  distance, sur un de vos serveurs SQL.

    Démarrez SQL Server Management Studio et connectez-vous sur votre base de données.

    Une fois connectez, faîtes un clic droit sur le dossier « AlwaysON High Availability ».

    Dans le menu contextuel, cliquez sur « Show Dashboard ».

    clip_image004

    Une fois le tableau de bord affiché, cliquez sur le lien, en haut à droite, « Start Failover Wizard ».

    image

    La fenêtre de l’assistant s’ouvre. Cliquez sur « Next ».

    clip_image007

    Dans la partie « Select New Primary Replica », sélectionnez le serveur qui deviendra le nouveau serveur primaire.

    Cliquez sur « Next ».

    clip_image008

    Dans la fenêtre « Connect to Replica », connectez-vous au serveur précédemment sélectionné en cliquant sur le bouton « Connect ».

    clip_image009

    La fenêtre « Connect to Server » s’ouvre. Entrez les informations de connexion à votre serveur et cliquez sur le bouton « Connect ».

    clip_image010

    Une fois de retour sur la fenêtre « Connect to Replica », cliquez sur « Next ».

    clip_image011

    Dans la partie « Summary », cliquez sur le bouton « Finish ».

    clip_image012

    Une fois la bascule terminée, cliquez sur le bouton « Close ».

    clip_image013

    Vérification de la bascule

    Dans mon exemple, j’ai choisi le serveur SQL2 comme nouveau server primaire. Nous allons vérifier ça depuis notre poste client (qui se trouve en dehors qu service de cloud de notre groupe de disponibilité)

    Sur mon poste de travail, via SSMS, exécutez à nouveau la requête.

    La requĂŞte doit vous retourner le nom du nouveau serveur primaire.

    clip_image014

    Voilà ! Nous avons donc mis en place une solution de groupe de disponibilité avec listener dans Azure. De plus, Avec SQL Server 2014 il possible d’avoir 8 serveurs de réplica dont 2 synchrones. Ces réplicas peuvent être utilisés dans des sites distants pour des solutions de « disaster recovery ». C’est ce que nous allons voir dans la série d’article suivant, où nous allons étendre notre groupe de disponibilité en installant des réplicas asynchrones dans une autre région Azure.

    Franck Mercier

    Pour tester Windows Server 2012 R2, Windows 8, SQL Server 2014 et Power BI, vous pouvez télécharger gratuitement une version d’évaluation :

    Windows Server 2012 R2:

    SQL Server 2014 :

    Power BI :

    Testez Azure gratuitement pendant un mois :

  • SQL Server 2014 : AlwaysON Availability Group dans Azure (Partie 5)

     

    Voici le cinquième article consacré à la mise en place d’une solution SQL Server 2014 AlwayON Availability Group dans Azure. Les articles sont découpés selon le plan suivant :

    Ce billet va traiter de la cinquième partie, “Création du listener”. Pour rappel, à la fin de cette première série d’articles, nous aurons l’architecture suivante :

    image_thumb111

     

     

    Création du listener

    Maintenant que nous avons créé notre groupe de disponibilité, nous allons créer le « listener », afin de permettre une redirection automatique de nos applications vers le serveur primaire.

    Ouverture des points de terminaisons (endpoints)

    Dans un premier temps, il est nécessaire de créer un point de terminaison pour toutes les machines virtuelles contenant un réplica SQL server.

    A partir du portail azure, vérifiez les points de terminaisons déjà présents de vos machines virtuelles.

    image

    Installation du module PowerShell pour Azure

    Si le module PowerShell pour Azure est déjà installé, vous pouvez passer cette étape.

    Sur un poste client, téléchargez et installez Azure PowerShell version de juin 2013 ou ultérieure

    clip_image002

    Exécutez le programme téléchargé. Cliquez sur le bouton « Install ».

    clip_image003

    Cliquez sur le bouton « I Accept ».

    clip_image004

    Cliquez sur « Finish ».

    clip_image005

    Ouverture des points de terminaisons

    Démarrer un éditeur PowerShell. Pour cet exemple, j’ai utilisé PowerShell ISE

    image

    L’éditeur de script intégré se lance. Il faut d’abord récupérer le fichier publishsettings, qui contient les informations de votre compte Azure.

    Copiez et exécutez la commande ci-dessous

    • # récupération du fichier PublishSettings
    • Get-AzurePublishSettingsFile

    clip_image007

    Vous êtes alors redirigé vers le portail Azure. Connectez-vous avec votre compte.

    clip_image008

    Le fichier « publishsettings » est prêt à être téléchargé. Sauvegardez-le sur votre disque dur.

    clip_image009

    Nous allons maintenant importer le fichier « publishsettings ». Copiez et exécutez la commande ci-dessous :

    • # Import du fichier PublishSettings
    • Import-AzurePublishSettingsFile -PublishSettingsFile "C:\Users\franmer\Documents\PowerShell\PublishSettings\Franmer_credentials.publishsettings"

    clip_image010

    Nous allons maintenant créer les points de terminaisons. Copiez, modifiez et exécutez le script PowerShell ci-dessous :

    • # Création des end points
    • $AGNodes = "A-FranmerSQL1","A-FranmerSQL2","A-FranmerSQL3","A-FranmerSQL4" # all availability group nodes should be included, separated by commas
    • $ServiceName = "demosqlao" # the name of the cloud service that contains the availability group nodes
    • $EndpointName = "SQLAOEndpoint" # name of the endpoint
    • $EndpointPort = "55569" # public port to use for the endpoint
    • # Configure a load balanced endpoint for each node in $AGNodes, with direct server return enabled
    • ForEach ($node in $AGNodes)
    • {
    • Get-AzureVM -ServiceName $ServiceName -Name $node | Add-AzureEndpoint -Name $EndpointName -Protocol "TCP" -PublicPort $EndpointPort -LocalPort $EndpointPort -LBSetName "$EndpointName-LB" -ProbePort 59999 -ProbeProtocol "TCP" -DirectServerReturn $true | Update-AzureVM
    • }

    clip_image011

    Après avoir exécuté le script, vous devez voir apparaître le point de terminaison dans votre portail Azure.

    clip_image012

    Dans notre exemple nous avons rajoutez 2 ports : 59999 et 55569.

    Le port 59999 est le port de la sonde du point de terminaison à charge équilibré.

    Le port 55569 est le port du « listener » du groupe de disponibilité.

    Ces 2 ports doivent être ouverts sur toutes les machines du cluster. Soit vous le faîte manuellement sur toutes les machines soit vous créez une règle au niveau de votre domaine contrôleur (chose que l’on a fait dans cet exemple, voir l’article de la partie 2).

    Installation d’un correctif sur les machines en Windows 2008 R2 et 2012 :

    Pour toutes les machines appartenant au cluster, installez le correctif KB2854082 http://support.microsoft.com/kb/2854082 si les systèmes d’exploitation sont Windows 2008 R2 ou Windows 2012.

    Création du « Listener »

    Nous allons maintenant créer le listener afin de permettre une redirection automatique vers le serveur SQL actif.

    Paramétrage du « Failover Cluster »

    Sur une des machines du cluster (par exemple SQL1), à partir du « Server Manager », dans le menu « Tools », cliquez sur « Failover Cluster Manager ».

    clip_image013

    Dans la fenêtre  « Failover Cluster Manager », dans la partie gauche sélectionnez« Roles ».

    Dans la partie centrale, faîtes un clic droit sur votre nom de groupe de disponibilité.

    Dans le menu contextuel, sélectionnez « Add Resource » puis « Client Access Point ».

    image

    Dans la partie « Client Access Point », donnez un nom réseau.

    Cliquez sur « Next ».

    clip_image015

    Dans la partie confirmation, cliquez sur « Next »

    clip_image016

    Dans la partie « Summary », cliquez sur « Finish ».

    clip_image017

    De retour dans la fenêtre « Failover Cluster Manager », vous devez voir apparaître le point d’accès (franmerlistener dans cet exemple) dans la partie centrale de la fenêtre.

    En bas de la fenêtre, cliquez sur l’onglet « Resources ».

    image

    Cliquez sur le « plus » à gauche du nom du point d’accès.

    Faîtes un clic droit sur le nom du réseau qui doit commencer par « IP adress : … ».

    Dans le menu contextuel, cliquez sur « Properties ».

    image

    La fenêtre « IP Adress :…. » s’ouvre.

    Dans le champ « Name », donnez un nom à votre réseau et mémorisez le. Vous allez en avoir besoin dans une des étapes suivantes.

    Cliquez sur « Ok ».

    clip_image020

    Connectez-vous sur votre portail Azure. Sur la partie gauche du portail, cliquez sur « Services de Cloud ».

    Cliquez sur le service de Cloud créé pour notre exemple, puis cliquez sur « Tableau de bord ».

    Depuis le tableau de bord, notez l’adresse IP qui se trouve à droite sous « Adresse IP virtuelle (VIP) publique ».

    image

    Après avoir noté le nom de notre réseau et l’adresse publique de notre service de Cloud, nous allons compléter le script ci-dessous.

    # Define variables

    $ClusterNetworkName = "FranmerCluster" # the cluster network name

    $IPResourceName = "FranmerNetwork" # the IP Address resource name

    $CloudServiceIP = "23.100.52.115" # IP address of your cloud service

    Import-Module FailoverClusters

    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple

    @{"Address"="$CloudServiceIP";"ProbePort"="59999";SubnetMask="255.255.255.255";"Network"="$ClusterNetworkName";"OverrideAddressMatch"=1;"EnableDhcp"=0}

    Une fois le script complété, copiez le (dans ISE par exemple) et exécutez-le.

    clip_image022

    Ce script a pour fonction de modifier la ressource réseau du cluster. Ci-dessous une copie d’écran de ma fenêtre de gestion du cluster. On remarque que la ressource réseau est maintenant liée à notre service de Cloud.

    Faîtes un clic droit sur « IP Adress : … », et sélectionnez « Properties ».

    image

    Dans la fenêtre properties, vous remarquez que le bouton radio « static IP Adress » est sélectionné et que l’adresse indiquée est celle de votre service de Cloud.

    Cliquez sur « Ok ».

    clip_image024

    Faîtes maintenant un clic droit sur le nom de votre listener. Dans le menu contextuel, sélectionnez « Bring Online ».

    image

    Vous devez obtenir quelque chose de similaire à ma copie d’écran ci-dessous :

    clip_image026

    Toujours dans l’onglet « Resources », Cliquez sur le nom de votre groupe de disponibilité est cliquez sur « Properties ».

    image

    Dans la fenêtre « Properties », cliquez sur l’onglet « Dependencies ».

    Dans la liste déroulante, sélectionnez le nom du listener créé précédemment.

    Cliquez sur « Ok ».

    image

    Finalisation de la création du listener avec Management studio

    Nous allons finaliser l’installation du listener avec SQL Server Management Studio.

    Connectez-vous à un de vos serveurs SQL intégré au cluster (Dans mon cas SQL1).

    Sous « AlwaysOn High Availability »/ « Availability Group » / « FranmerAG » (Le nom de votre groupe de disponibilité) / « Availability Group Listener » .

    clip_image029

    Faîtes un clic droit sur votre Listener. Dans le menu contextuel, sélectionnez « Properties ».

    clip_image030

    Dans la fenêtre « Availability Group Listener Properties », dans le champ « Port », renseignez le port que vous avez défini précédemment via le script PowerShell.

    Dans notre exemple c’est le port 55569.

    Cliquez sur « Ok ».

    clip_image031

    Dans le prochain et dernier article de cette série, nous aborderons le test de la bascule AlwaysON.

    Franck Mercier

    Pour tester Windows Server 2012 R2, Windows 8, SQL Server 2014 et Power BI, vous pouvez télécharger gratuitement une version d’évaluation :

    Windows Server 2012 R2:

    SQL Server 2014 :

    Power BI :

    Testez Azure gratuitement pendant un mois :

  • SQL Server 2014 : AlwaysON Availability Group dans Azure (Partie 4)

     

    Voici le quatrième article consacré à la mise en place d’une solution SQL Server 2014 AlwayON Availability Group dans Azure. Les articles sont découpés selon le plan suivant :

    Ce billet va traiter de la quatrième partie, “Configuration SQL ”. Pour rappel, à la fin de cette première série d’articles, nous aurons l’architecture suivante :

    image_thumb111

     

     

    Configuration SQL

    Maintenant que le cluster a été configuré au minima pour fonctionner avec les groupes de disponibilités de SQL AlwaysOn, nous allons configurer nos serveurs SQL.

    Création des comptes SQL

    Modification du compte système

    Connectez-vous en tant qu’administrateur local sur une de vos machines SQL Server. (Dans mon cas la machine SQL1)

    Une fois connecté, allez dans le dossier « Security »,  « Logins ».

    Faîtes un clic droit sur «NT AUTHORITY\SYSTEM ».Dans le menu contextuel, sélectionnez « Properties ».

    clip_image001

    Dans la fenêtre « Login Properties », dans la partie gauche, sélectionnez « Securables ».

    image

    Dans la colonne « Grant » cochez les cases pour :

      • Alter any availability group
      • Connect SQL
      • View server state
    Rajout du compte « Install » dans SQL

    Allez dans le dossier « Security »,  et faîtes un clic droit sur le dossier « Logins ».

    Dans le menu contextuel, sélectionnez « New Login… ».

    clip_image003

    Dans la fenêtre « Login », dans la partie « General », rajoutez le compte franmer\install en tant que sysadmin.

    Pour rechercher le compte, cliquez sur le bouton « Search… »

    image

    La fenêtre « Select User or Group » apparaît. Entrez le nom du compte à rajouter.

    Cliquez sur « OK ».

    clip_image005

    Une fois de retour sur la fenêtre « Login », dans la partie gauche, sélectionnez « Server Roles »

    Dans la partie centrale de la fenêtre, cochez la case « sysadmin »

    image

    Le nouveau compte doit apparaître dans le dossier « Logins ».

    clip_image007

    Vous pouvez rajouter d’autres comptes si vous souhaitez utiliser d’autres comptes pour vos connexions futures à SQL.

    Mise en place du groupe de disponibilité AlwaysON

    Paramétrage du service SQL

    Nous sommes toujours connectés sur la même machine SQL (SQL1 dans mon cas).

    Dans la partie Moder UI de votre serveur SQL, commencer à entrer « SQL configuration… ». Dans le résultat de la recherche, sélectionnez « SQL Server 2014 Configuration Manager »

    clip_image008

    Dans la fenêtre « Sql Server Configuration Manager », dans la partie gauche, cliquez sur « SQL Server Services ».

    Dans la partie centrale, faîtes un clic droit sur le service SQL Server. Dans mon cas « SQL Server (MSSQLSERVER) ».

    Dans le menu contextuel, cliquez sur « Properties ».

    clip_image009

    Dans la fenêtre «SQL Server (MSSQLSERVER) Properties », sélectionnez l’onglet « AlwaysON High Availability ».

    Cochez la case « Enable AlwayON Availability Groupe ». (Cette case n’est disponible que si la machine appartient à un cluster).

    clip_image010

    Un message d’information apparaît vous signalant qu’il sera nécessaire de redémarrer le service SQL.

    Cliquez sur « OK »

    clip_image011

    Cliquez sur l’onglet « Log On ».

    Cochez le bouton radio « This account ».

    Renseignez le compte pour le service SQL. Dans mon cas j’ai pris le compte SQL1 (pour la machine SQL2 je prendrais le compte SQL2, et ainsi de suite….).

    Cliquez sur « Ok ».

    clip_image012

    Redémarrez le service SQL.

    clip_image013

    Répétez l’opération pour les autres serveurs SQL.

    Création du backup des bases de données

    Depuis le serveur SQL 1, nous allons maintenant faire un backup de toutes les bases de données qui vont entrer dans notre groupe de disponibilité.

    Connectez-vous sur le serveur SQL1 avec le compte Install. Sur le disque « C » (ou autre, sauf le lecteur D), créez un répertoire « Backup ».

    Faîtes un clic droit sur le répertoire « Backup » et cliquez sur « Share with », « Specific people… ».

    clip_image014

    La fenêtre « File Sharing » apparaît. Rajoutez les comptes qui devront avoir accès aux backups des bases depuis les différents serveurs SQL.

    Cliquez sur le bouton « Share ».

    clip_image015

    Dans notre exemple, les serveurs SQL ne possèdent pas de bases données utilisateurs. Nous allons donc en créer une et utiliser la base AdventrueWorks.

    Toujours depuis le serveur SQL1, exécutez SQL Server Management Studio (SSMS).

    Faîtes un clic droit sur le dossier « Databases » et cliquez sur « New Database ».

    clip_image016

    Renseignez les informations nécessaires pour la création de votre base de données.

    Cliquez sur Ok.

    clip_image017

    Nous allons maintenant récupérer la base de données AdventureWorks depuis le lien ci-dessous :

    http://msftdbprodsamples.codeplex.com/releases/view/55330

    clip_image018

    Vous allez donc récupérer le fichier « .mdf » qu’il faudra attacher à votre instance SQL Server.

    Faîtes un clic droit sur le dossier « Databases », puis sur « Attach… ».

    clip_image019

    Une fois la base de données « AdventureWorks » attachée, vous devez avoir quelque chose de similaire à la copie d’écran ci-dessous :

    clip_image020

    Pour chacune des bases de données qui vont participer au groupe de disponibilité, nous allons réaliser un « Full Backup » ainsi qu’un « Log Backup »

    Nous allons maintenant sauvegarder les bases de données dans notre dossier partage « Backup ».

    Full Backup

    Faîtes un clic droit sur une des bases de données puis sélectionnez « Tasks »\ « Back Up… »

    clip_image021

    Dans la fenêtre « Back Up Database », Sélectionnez « Full » dans le champ « Backup type ».

    Dans la partie « Destination », sélectionnez « Disk » dans la liste « Back up to ».

    Cliquez sur le bouton « Add » et renseignez le chemin réseau de votre dossier partage « backup ».

    Cliquez sur le bouton « Ok ».

    image

    Une fois le « Full Backup » terminé, il faut faire le « logs backup » de la même base de données

    Logs Backup

    Faîtes un clic droit sur la même base de données que vous avez sélectionnez pour faire le « Full Backup ».

    Dans le menu contextuel sélectionnez « Tasks »\ « Back Up… » .

    Dans la partie « Backup type », sélectionnez « Transaction Log ».

    Dans la partie destination, sélectionnez le même fichier de destination que celui utilisé pour le « Full Backup ».

    Cliquez sur « Ok »

    image

    Répétez cette opération de sauvegarde (Full + Logs) pour toutes les bases de données devant participer au groupe de disponibilité « SQL AlwaysON »

    Restauration des bases de données sur les différents nœuds

    Même si l’assistant de configuration d’AlwaysON est capable de restaurer tout seul comme un grand les bases de données, nous allons le faire nous-même sur les différents nœuds.

    Connectez-vous sur un des autres serveurs (dans mon cas le server SQL2). Exécutez Management Studio Et connectez-vous à votre serveur SQL.

    Cliquez sur « Connect » puis sur « Database Engine ».

    clip_image024

    Dans la fenêtre « Connect to server », sélectionnez votre serveur.

    Cliquez sur « Connect ».

    clip_image025

    Faîtes un clic droit sur le dossier « Databases » et sélectionnez « Restore Database » dans le menu contextuel.

    clip_image026

    Dans la fenêtre « Restore Database », cliquez sur le bouton radio « Device » puis sur le bouton image

    image

     

    Dans la fenêtre « Select backup devices », sélectionnez « File » dans la liste « Backup media type ».

    Cliquez sur le bouton « Add » et renseignez le chemin réseau vers le dossier partagé « Backup ».

    image

    Ci-dessous une copie d’écran de l’ajour de mon fichier de backup.

    clip_image030

    Vous devez donc avoir quelque chose ressemblant à la copie d’écran ci-dessous. Cliquez sur le bouton « Ok »

    clip_image031

    Après avoir cliquez sur « Ok » vois devez avoir quelque chose de similaire à la copie d’écran ci-dessous :

    clip_image032

    Sur la gauche, sélectionnez « Options ».

    Dans la liste « Recovery State », sélectionnez « Restore With Norecovery ».

    Cliquez sur « Ok ».

    image

    Vos bases de données doivent être dans un état « Restoring… ».

    Répétez l’opération pour tous vos serveurs SQL participant au groupe de disponibilité AlwaysON.

    Ci-dessous une copie d’écran avec tous les serveurs participants à mon groupe de disponibilité.

    clip_image034

    Configuration du groupe de disponibilité

    Connectez-vous sur un de vos serveurs SQL. Dans mon cas, je me connecte sur mon serveur SQL1.

    Ouvrez SQL Server Management Studio et connectez-vous à votre serveur SQL.

    Faîtes un clic droit sur le dossier « AlwaysOn High Availability » et sélectionnez « New Availability Group Wizard… ».

    clip_image035

    Dans la fenêtre d’introduction, cliquez sur « Next »

    clip_image036

    Dans la partie « Specify Name », donnez un nom à votre groupe de disponibilité. Cliquez sur « Next ».

    clip_image037

    Dans la partie « Select Databases », sélectionnez les bases que vous souhaitez intégrer dans votre groupe de disponibilité.

    Dans mon exemple, je sélectionne les bases « AdventureWorks2012 » et « FranmerDB » que j’ai sauvegardées puis restaurées en NoRecovery sur mes différents nœuds.

    Notez que l’assistant indique si oui ou non les bases sont éligibles.

    Cliquez sur « Next ».

    image

    Dans la partie « Specify Replicas », définissez les fonctions de vos serveurs. Ci-dessous une copie d’écran de ma configuration. (On reste sur l’onglet « Replicas »).

    Cliquez sur « Next ».

    clip_image039

    Dans la partie « Select Data Synchronisation », sélectionnez « Join Only », car nous avons fait les restaurations sur nos différents nœud. Mais notez que l’assistant peut faire ce travail pour nous si l’option « Full » est sélectionnée.

    Cliquez sur « Next ».

    clip_image040

    La phase de validation se lance. Si tout va bien vous devez avoir un warning sur le « listener », (on y reviendra) mais rien de bloquant.

    Cliquez sur « Next ».

    clip_image041

    La fenêtre « Summary » récapitule l’ensemble des actions qui vont être réalisées. Cliquez sur « Finish »

    clip_image042

    Une fois l’assistant terminé, vous devez avoir l’ensemble de vos nœuds dans la partie « AlwaysON High Availability » dans le management studio.

    Ci-dessous, une copie d’écran de mon environnement :

    clip_image043

    Si vous faîtes un clic droit sur « AlwaysON High Availability », vous pouvez sélectionnez « Show Dashboard ».

    clip_image044

    Le « dashboard » vous permet d’avoir en un coup d’œil l’état de votre groupe de disponibilité.

    clip_image045

    Dans le prochain article, nous aborderons la création du listener.

    Franck Mercier

    Pour tester Windows Server 2012 R2, Windows 8, SQL Server 2014 et Power BI, vous pouvez télécharger gratuitement une version d’évaluation :

    Windows Server 2012 R2:

    SQL Server 2014 :

    Power BI :

    Testez Azure gratuitement pendant un mois :