Utilisation des Connexions Hybrides d’Azure

Publié par Middleway
Catégorie : Azure / Connectivité hybride
07/10/2019

Dans nos solutions d’intégration, nous avons fréquemment besoin d’intégrer une application cloud Azure avec un système on-premise. Récemment, un de mes collègues a écrit un article sur l’installation et l’utilisation de la passerelle de données locale (On-Premise Data Gateway) pour connecter Azure Logic App avec un serveur de base de données SQL Server on-premise. On-Premises Data Gateway et Azure Logic Apps offrent un ensemble de connecteurs hybrides intégrés (pour le système de fichiers, SQL Server, SAP Application Server,…). Cependant les connecteurs Logic Apps comportent leur propre limitation. Ils sont là, ils sont packagés, mais vous ne pouvez faire que ce que le connecteur permet. Par exemple, l’écriture de requête SQL spécifique peut s’avérer complexe. Pour contourner ces limitations, nous utilisons une connectivité de plus « bas niveau » dans nos Web App et Fonctions Azure. Et c’est là qu’Azure Hybrid Connection intervient. Dans ce post, je voudrais vous montrer comment Hybrid Connection fonctionne, comment le configurer et comment l’utiliser.

 

Comment cela fonctionne-t-il ?

La connexion hybride Azure représente une connexion entre Azure App Service et un point de terminaison (endpoint) TCP (hôte et port) d’un système sur on-premise. Au cœur de la connexion hybride se trouve Azure Service Bus Relay. Le service reçoit deux connexions sortantes cryptées. Le premier, côté Azure App Service (Web App dans notre cas) et le second depuis Hybrid Connection Manager (HCM). HCM est un programme qui doit être installé sur votre système d’exploitation on-premise. HCM connecte votre serveur local avec Azure Service Bus Relay. Il est important de noter qu’il n’y a pas de connexion entrante à partir d’Internet, mais juste une connexion sortante depuis le port TCP 443 de notre serveur on-premise. Cela élimine la configuration NAT et pare-feu pour rendre ces connexions simples, sécurisées et rapidement disponible.

Dans mon exemple, je connecte une Azure Web App avec une base de données SQL Server présente sur mon ordinateur locale (DESKTOP-PC-PKA). Une fois la connexion hybride établie, Azure Web App peut utiliser la base de données SQL Server de la même manière que nous utilisons Azure SQL.

 

La connexion hybride Azure peut être établie entre un App Service et un point de terminaison TCP avec un port statique. Cependant HCM ne supporte pas les protocoles UDP, LDAP ou encore le FTP en mode passif ou étendu.

 

Mise en place d’une Azure Hybrid Connection

Pour montrer comment utiliser la connexion hybride Azure, j’ai créé une application web simple qui s’appelle Contoso University disponible ici (source Microsoft). L’application permet la gesiton des inscriptions d’une liste d’étudiants. Elle utilise Entity Framework pour cartographier les objets de la base de données SQL Server. L’objectif est de déployer l’application web sur Azure App Service et de le connecter (en utilisant une connexion hybride) à la base de données SQL Server. Pour des raisons pratiques, dans mon test, la base de données SQL server est sur mon poste local.

 

Création d’une connexion hybride depuis le portail Azure

Tout d’abord, je vais créer un service d’application pour héberger l’application web. Rendez-vous sur le Portail Azure et créez un nouveau service de type App Service. Notez que les service App avec le plan de service d’application gratuit ou partagé ne prennent pas en charge la connexion hybride. Le plan B1 est le plan minimal offrant des connexions hybrides. Une fois que votre service d’application existe (j’ai appelé le mien ContosoUniversityMW), sélectionnez Networking > Configure hybrid connection endpoints. La première chose que vous remarquerez peut-être est que vous avez 5 connexions disponibles (et 0 connexion utilisée). Le nombre de connexions dépend du plan de service d’application sélectionné (le plan supérieur doit être choisi si vous avez besoin de plus de connexions). Sélectionnez [+] Add hybrid connection pour créer votre première connexion hybride.

 

Pour configurer la connexion hybride, vous devez identifier le port du service en cours d’exécution sur votre environnement on-premise. Les ports de service commun sont 1433 pour SQL Server, 3306 pour MySQL, 27017 pour MongoDB, 22 pour SFTP, etc.

Pour créer la connexion hybride, spécifiez le nom de connexion hybride, l’hôte du point de terminaison (qui est le nom de mon ordinateur local dans mon cas), le port utilisé (je vais me connecter à SQL Server donc le port 1433 dans mon cas) et finalement, l’espace de nom de bus de service.

 

Après création de la connexion hybride, le tableau de bord indique l’utilisation d’une connexion (sur les 5 disponibles). La connexion apparaît également dans la liste des connexions et possède le statut initial « Non connecté ».

Ensuite, téléchargez le connection manager (HCM) en utilisant le lien de téléchargement.

 

Configuration de Hybrid Connection Manager on-premise

Tout d’abord, installez le programme téléchargé à partir du portail Azure sur l’ordinateur local. Lancez l’exécutable. A la fin de l’installation, lancez l’application « Hybrid Connexion Manager ». Celle-ci vous permet d’ajouter les connexions disponible sur Azure. Vous allez simplement lier les connexions Azure avec l’instance que vous venez d’installer.

 

Sélectionnez [+] Add a new Hybrid Connection (ajouter une nouvelle connexion hybride). Ensutie, vous pouvez être invité à vous connecter à Azure pour répertorier vos souscriptions Azure. Après cela, choisissez l’abonnement où vous avez ajouté la connexion Hybride Azure. Finalement, Lorsque la connexion s’affiche dans la liste, sélectionnez Save (enregistrer). Notez que vous pouvez entrer la connexion aussi manuellement en fournissant une chaîne de connexion. Vous pouvez trouver dans le Portail Azure la liste des connexions hybrides.

 

Comme vous le voyez, la connexion est présente sur l’ordinateur local. Toutefois, l’état de connexion reste au statut « non connecté » même si la connexion apparaît sur la plateforme Azure.

 

La solution est simple. Ouvrez la console de services Windows, trouvez le service Azure Hybrid Manager. Ce service se trouve sur l’ordinateur local avec le nom Hybrid Connection Manager UI. Redémarrez le service et retournez sur la console HCM. Avec ces manipulations, vous venez d’indiquer que toutes requêtes sortantes d’Azure vers ces points de terminaisons seront gérées par cette instance de HCM.

 

 

La connexion hybride est maintenant connectée, et nous pouvons tester les communications hybrides.

 

Utilisation de la connexion hybride

Pour voir la connexion hybride Azure en action, j’ouvre la solution Contoso University avec Visual Studio. Ensuite, je localise le fichier appsettings.json et je recherche la propriété ConnectionStrings afin de configurer ma chaîne de connexion (appelé SchoolContext dans mon cas). J’ai mis mon nom d’hôte local (DESKTOP-PC-PKA) pour le serveur et ContosoUniversityDb pour la base de données. La connexion hybride ne prend pas en charge l’authentification intégrée. Ainsi vous devez obligatoirement utiliser une authentification SQL. Les informations d’identification sont cryptées du côté Azure et décryptées au point de terminaison sur le serveur local. Un tunnel crypté PTC sécurise les échanges. Une fois la chaîne de connexion mise en place, je déploie l’application directement depuis le Visual Studio vers Azure App Service.

 

Je peux maintenant tester mon application en naviguant sur la page contenant la liste des étudiants de l’Université Contoso. Azure App Service qui héberge mon application Web réalise une requête sur mon ma base de données locale. Malgré la connectivité hybride, les performances les temps de réponse sont relativement bon et l’utilisateur ne se rend pas compte de la complexité derrière le système.

 

Conclusion

Comme vous l’avez vu, les connexions Hybrides Azure offrent un moyen facile d’accéder aux ressources on-premise à partir d’Azure. Les services Azure Web App et Azure Functions (avec App Service Plan) peuvent bénéficier de connexions hybrides avec HCM. La connectivité hybride reste possible pour l’accès aux base de données et aux API locales. En revanche, vous ne pouvez pas accéder au système de fichier par exemple. Pour palier à ce type de besoin, la solution pourrait être de monter un VNet et de le connecter au réseau on-premise en utilisant une connexion de type passerelle VPN site-to-Site.