En utilisant NCache dans Microsoft Azure Service Fabric

Bonjour et bienvenue dans une autre présentation de NCache. Aujourd'hui, nous allons parler de la façon dont nous pouvons déployer NCache dans un environnement Service Fabric. Il y a beaucoup à couvrir, alors commençons.

NCache Déploiement

Commençons par un aperçu général de ce que nous essayons de réaliser. Nous avons donc ici une vue d'ensemble d'une application Service Fabric typique déployée sur Azure.

ncache-deploiement-azur

Nous avons un cluster Service Fabric doté d'un équilibreur de charge Azure. Dans l'application Service Fabric, nous avons un certain nombre de services qui peuvent être écrits dans différentes langues. Ces services sont généralement déployés en tant que services conteneurisés. Désormais, dans une application d'entreprise, la mise en cache distribuée est importante pour permettre des performances de lecture élevées et c'est là que NCache entre en jeu.

NCache peut être déployé dans l'application Service Fabric en tant que service conteneurisé. NCache serveur s'exécute dans les conteneurs sur les multiples nœuds du groupe de machines virtuelles identiques, peuvent communiquer entre eux et former un cache en cluster. Combler le fossé entre les NCache clients et les serveurs, nous avons le service de découverte de cache, qui est utilisé pour obtenir les informations d'adresse IP en temps réel du NCache serveurs et fournir ces informations aux NCache clients. Avec ces informations, le NCache les clients peuvent ensuite créer des descripteurs de cache, avec lesquels ils peuvent commencer à effectuer la gestion du cache et les opérations CRUD sur le NCache Cache en cluster.

Voici donc les principaux paramètres de la démonstration que nous allons aborder aujourd'hui.

démo-environnement-détails

La NCache les serveurs qui s'exécutent dans les conteneurs Windows utiliseront l'image Docker avec le nom de 'alachisoft/ncache:dernier'. Celle-ci contient le NCache Enterprise, avec une .NET framework installation. Nous allons commencer par 2 NCache serveurs, qui sont réunis pour former un cache en cluster avec une partition de topologie de réplique. Les deux NCache les applications client que nous avons sont écrites dans .NET Core et Java et ils effectueront des opérations CRUD sur le NCache les serveurs.

Créer un cluster Service Fabric

Donc, pour commencer, la première chose que nous allons faire est de créer une infrastructure Service Fabric sur Azure. Je peux accéder à la fenêtre de mon navigateur, où j'ai déjà ouvert mon portail Azure.

portail-azur

J'ai créé un groupe de ressources avec le nom de 'NCacheServiceFabric' et celui-ci ne contient pour le moment qu'une seule ressource 'Key Vault'. Cette ressource de coffre de clés contient le certificat qui sera utilisé avec le cluster Service Fabric. En venant à Visual Studio 2019, j'ai un modèle ARM ouvert et j'ai introduit des paramètres, pour permettre le mode de configuration ouvert de Service Fabric.

Visual Studio

Nous parlerons plus en détail du mode de configuration ouverte de Service Fabric et de la raison pour laquelle nous l'utilisons après avoir déployé l'infrastructure. Donc, pour commencer le déploiement, je peux accéder à 'Solution Explorer' et sur mon projet de groupe de ressources Azure, je peux faire un clic droit, venir déployer et j'ai répertorié le groupe de ressources.

visuel-studio2

Cela ouvrira une fenêtre de déploiement. Je peux cliquer sur le bouton "Déployer" et le déploiement commencera.

bouton de déploiement

Cela prendra du temps, donc je vais mettre la vidéo en pause ici. Notre modèle a été déployé avec succès et pour le confirmer, nous pouvons revenir sur notre portail Azure. Si j'actualise la page, vous verrez des changements et voilà. Ainsi, notre cluster Service Fabric et toutes les ressources dépendantes associées ont été créés avec succès. Pour commencer, la première chose dont je vais parler est le mode de configuration ouvert, dont j'ai déjà parlé.

Cet article passe essentiellement en revue le mode de configuration ouvert et pourquoi il est utilisé. Pour nos besoins, le mode de configuration ouvert permet la NCache serveurs qui s'exécutent dans les conteneurs pour pouvoir communiquer entre plusieurs hôtes et se réunir pour former un cache en cluster et pour voir comment cela se fait, nous pouvons accéder au portail Azure et la première chose que je regarderai est le Virtual Réseau.

réseau-virtuel

D'accord, nous avons maintenant plusieurs nœuds du groupe de machines virtuelles identiques, mais si vous regardez attentivement, chacun des nœuds a plusieurs adresses IP qui leur sont attribuées. La première adresse IP est l'adresse principale de l'hôte. Cependant, les autres adresses IP qui sont attachées au nœud, forment le pool d'adresses IP secondaire et avec le mode de configuration ouvert de Service Fabric, ces adresses IP seront attribuées aux conteneurs, sur lesquels le NCache les serveurs seront en cours d'exécution. Avec les adresses IP attribuées à partir de ce pool secondaire, les conteneurs des différents hôtes peuvent communiquer entre eux de manière transparente pour créer un cluster de cache sur Service Fabric.

L'autre chose que je veux regarder dans les ressources est l'équilibreur de charge et si j'en viens à la 'configuration IP frontale', la règle qui m'intéresse vraiment est la 'règle 10' et cela a à voir avec le port 8251, qui sera utilisé par le NCache Web Manager, dont nous parlerons plus loin dans cette présentation. Mais la chose importante à noter est qu'avec le NCache Web Manager, nous allons utiliser une persistance collante, comme le montrent les champs de « persistance de la session » affichés ici, avec une valeur de « IP client ».

nc-web-manager

Avec cela, s'il y a plusieurs instances de NCache Web Manager en cours d'exécution, nous pourrons avoir une expérience utilisateur cohérente entre le navigateur et le service final. Maintenant que nous avons regardé l'infrastructure et l'avons déployée avec succès, nous allons entrer dans le déploiement de l'application Service Fabric et pour cela, nous reviendrons sur Visual Studio et nous avons un certain nombre de fichiers ServiceManifest, correspondant au services de l'application. Nous avons le NCache service, le NCache le service Web Manager, le service Discovery ainsi que le service conteneur client, qui abritera nos applications clientes. Nous rentrerons dans le détail de chacun de ces services, après avoir déployé l'application. Pour ce faire, nous reviendrons à un explorateur de solutions et ici, nous ferons simplement un clic droit sur le projet d'application Service Fabric et le nom et descendrons à "Publier".

explorateur de solution

Cela ouvrira notre fenêtre de déploiement et, comme vous pouvez le voir, elle a déjà récupéré le point de terminaison de connexion du cluster Service Fabric. Tout ce que nous avons à faire à ce stade est de cliquer sur « Publier » et le processus démarrera.

fenêtre de déploiement

Cela prendra du temps, donc je vais mettre ma vidéo en pause ici. L'application a été déployée avec succès et nous sommes prêts dans la fenêtre "Service Fabric Explorer". Comme vous pouvez le voir, le DNS du cluster est donné ici.

service-fabric-explorer

Et si je vais voir sur le 'DASHBOARD', j'ai cinq nœuds opérationnels avec 1 application et 4 services. Les 4 services peuvent être vus dans le volet de gauche. Le premier service que je veux examiner est le NCache service. Cela représente la NCache serveurs qui s'exécuteront dans les conteneurs et qui formeront le cache en cluster. Ensuite j'ai le NCache Service Web Manager, cela représente une interface graphique facile à utiliser pour la création et la surveillance d'un cluster de cache. Ensuite j'ai le NCache Discovery Service, qui se chargera d'acquérir les adresses IP des NCache serveurs et de les fournir aux applications clientes. En parlant d'applications clientes, nous avons le service de conteneur client qui représente un conteneur qui héberge deux applications différentes, une écrite en .NET Core et l'autre en Java. Je vais maintenant entrer dans les détails de chacun de ces services à tour de rôle.

NCache Service de cluster

Le premier que je veux regarder, c'est le NCache Cluster Service et pour cela je vais revenir sur Visual Studio. Ceci est le ServiceManifest pour le NCache Cluster Service, comme vous pouvez le voir, est un service de conteneur, qui utilise l'image 'alachisoft/ncache".

visuel-studio3

Il y a quelques points de terminaison, que j'ai enregistrés auprès du service de nommage et ceux-ci sont les suivants : Nous avons le point de terminaison 'cache-management', qui expose le port 8250, sur lequel les serveurs de cache écouteront les demandes de connexion. Nous avons le point de terminaison 'cache-client' qui expose le port 9800. Tous les Opérations CRUD sont effectués via ce port. En plus de ceux-ci, nous avons également les terminaux "bridge-management" et "bridge-client". Pour cette démonstration actuelle, nous allons seulement nous concentrer sur les deux premiers Endpoints montrés ici.

visuel-studio4

NCache Gestion des services

Le deuxième service que nous examinons est le NCache Gestion des services, qui représente l'interface graphique de Web Manager. Pour en revenir à Visual Studio, si je viens au ServiceManifest pour le NCache Web Manager Service, nous voyons qu'il s'agit également d'un service de conteneur qui utilise la même image que le NCache service et le Endpoint que nous enregistrons avec le service de nommage est 'web-management' et qui expose le port 8251.

visuel-studio5

NCache Service Découverte

Le troisième service est bien sûr le NCache Service Découverte et le ServiceManifest pour cela est donné ici.

type de découverte nc

La NCache Discovery Service est un ASP fiable et sans état.NET Core API Web. Qui consulte le service de nommage et acquiert les Endpoints qui ont été enregistrés par le NCache service rendu ici. Avec les endpoints reçus du service de nommage, le service de découverte peut ensuite fournir ces informations au NCache clients.

Services d'applications clients

Le quatrième service que nous avons dans notre application, est le Services d'application client et pour cela aussi nous avons ces ServiceManifest ouverts et les Applications Client, le .NET Core et Java sont hébergés dans le même conteneur. dont l'image est 'ncache/apps:sfclient'.

client sf

La chose importante à noter ici est que, avec le NCache service et service client, nous utilisons 'open config'. Le NCache le service a le mode de configuration ouvert, pour permettre aux conteneurs s'exécutant sur différents hôtes de communiquer entre eux et de former ainsi le cluster de cache tandis que sur le conteneur client, nous avons un NCache client et installation qui seront utilisés par l'interface graphique de Web Manager pour acquérir les compteurs côté client et être en mesure de surveiller le comportement du client à partir de l'interface graphique.

Créer un cluster de cache

La prochaine partie à faire est la création proprement dite du cluster de cache et pour cela revenons à notre fenêtre Service Fabric Explorer. La première chose que je vais faire est de confirmer que ma découverte de service fonctionne. Pour cela, je vais donner l'URI, qui est composé du DNS clusterisé et du port sur lequel le service de découverte écoute, qui est 55100.

lien google

Si je clique sur Entrée, je vois que les adresses IP et les ports associés pour chaque Endpoint qui ont été enregistrés par le NCache service, ont été présentés avec succès. Si vous regardez attentivement, les adresses IP sont les mêmes, telles que données par le réseau virtuel à ces nœuds Service Fabric, dans le cadre du pool d'adresses IP secondaires.

adresse IP

Maintenant que la découverte de service est en cours d'exécution, allons-y et venons au NCache Gestionnaire Web. Encore une fois, nous donnerons le DNS en cluster, suivi du port sur lequel il écoute, qui est 8251 et cela nous amène à la fenêtre principale de l'interface graphique Web Manager.

web-manager-gui

Maintenant, je vais montrer à quel point il est facile de créer un cache en cluster et pour cela, tout ce que j'ai à faire est de cliquer sur le bouton "Nouveau" affiché ici.

nouveau bouton

Je vais commencer par donner le nom de la cache.

nom-cache

Gardez tout le reste par défaut. J'utiliserai la partition de la topologie Replica avec le mode asynchrone.

asynchrone

Maintenant, à ce stade, je vais donner les adresses IP de ces serveurs qui constitueront mon cache en cluster. Donc, je vais d'abord donner au premier IP et au second 11. Avec ces deux ajoutés, nous pouvons passer à la phase suivante.

adresse-ip2

Gardez tout le reste par défaut et à la fin, nous cliquons simplement sur "Terminer".

finition

Le Cache sera créé, comme on peut le voir sur la fenêtre principale.

créé par le cache

Maintenant qu'il est créé, il est temps de le démarrer et pour cela, nous pouvons cliquer sur la case à cocher à côté du nom du cache, puis appuyer sur le bouton "Démarrer".

Commencer

Maintenant que le cache a été démarré, il y a quelques choses que nous pouvons regarder maintenant. La première chose que nous pouvons faire est de regarder l'outil 'Monitor' en cliquant sur le bouton 'Monitor', tandis que la case à cocher est enfoncée.

moniteur

Cela ouvrira une autre fenêtre et nous pourrons voir les tableaux de bord qui composent notre outil de surveillance. La première chose que vous pouvez regarder ici est la « santé du cluster ». Nous voyons que nous avons 2 serveurs, avec les partitions actives et répliquées, qui sont entièrement connectés, comme le montre la couleur verte.

cache de cluster

Nous avons également les quatre partitions différentes affichées dans un format graphique ici.

tableau de bord du serveur

Il y a quelques compteurs que nous pouvons regarder en ce moment, y compris les 'Requêtes/seconde' les 'Ajouts', les 'Récupérations', les 'Mises à jour', les 'Suppressions' etc. Le 'Compteur' est 0, avec tous les autres L'opération CRUD compte car il n'y a pas encore de processus client connectés et les processus client une fois connectés peuvent être vus à partir du tableau de bord 'Processus client', qui affichera l''IP client', l''ID de processus' et le serveur auquel il est connecté . Il s'agit du "tableau de bord du serveur". L'autre tableau de bord disponible par défaut est le 'Tableau de bord client' et ici nous pouvons regarder les différents compteurs, provenant des clients et pouvoir diagnostiquer et surveiller le comportement du client.

tableau de bord client

Le troisième tableau de bord fourni par défaut est le « Tableau de bord des rapports », qui affiche une vue d'ensemble des compteurs de performances côté serveur et côté client.

rapport-tableau de bord

Exécuter des applications clientes

Pour voir les informations en action, nous allons maintenant démarrer les applications clientes. Donc, maintenant, nous arrivons à exécuter nos applications clientes. Pour en revenir à la fenêtre du moniteur, j'ai ici le PowerShell ouvert dans le conteneur client et je suis déjà dans le dossier 'nettester', qui contient les binaires pour le .NET Core App. Je vais exécuter une commande batch qui prend comme paramètres, le nom du cache, qui est 'democache' ainsi que l'URI du Cache Discovery Service comme montré ici.

cmd

Il est composé du DNS en cluster, ainsi que du port du service de découverte de cache. Maintenant, si j'appuie sur "Entrée", le cache sera initialisé du côté client et nous examinerons une activité dans la fenêtre de surveillance. Donc, sans plus tarder et ici, nous voyons que le client a réussi à obtenir les adresses IP et que le handle de cache a été initialisé et cela peut être confirmé à partir du moniteur de santé du cluster, qui montre que le nombre de clients a augmenté d'un.

fenêtre de surveillance

Nous commençons également à voir une certaine activité sur les différents tableaux de bord associés aux opérations CRUD. Tels que les 'Ajouts', 'Fetches', Updates' et 'Deletes'. Ainsi que l'activité globale affichée avec les "Requêtes/sec". Nous voyons que le 'Count' a commencé à augmenter au fur et à mesure que le Client a commencé à mettre des éléments dans le cache et nous voyons dans le 'Processus Client', de nouvelles entrées liées au processus client. Nous voyons le 'Client IP' et le 'Process ID' et nous voyons que le client est connecté aux deux serveurs. Il s'agit d'une fonctionnalité spécifique à la partition et à la partition de la topologie de réplication connue comme étant compatible avec les clusters. En ce qui concerne le "tableau de bord client", nous voyons également une activité ici et nous pouvons voir que le gestionnaire Web a pu obtenir les compteurs du côté client.

tableau de bord client2

Le 'Rapport Dashboard' donne une vue d'ensemble. Nous voyons que l'instance par nœud des compteurs de performance est affichée ici sur les serveurs et nous voyons également l'activité du côté «rapport client» provenant également du côté client.

rapport-tableau de bord2

Maintenant que nous avons réussi à nous connecter depuis le .NET Core Client, nous allons maintenant essayer de nous connecter également à partir du client Java. Donc, tout comme avec le .NET Core Application, nous avons un fichier batch qui exécute l'application Java ici. Là encore, il reprend les mêmes paramètres à savoir le nom du cache ainsi que l'URI du Cache Discovery Service.

cmd2

Maintenant, je vais exécuter le programme et regarder ce qui change dans la fenêtre de surveillance. Donc, j'appuie sur "Entrée" et l'application a démarré et elle a été initialisée avec succès et nous voyons maintenant qu'il y a maintenant 2 clients connectés à chacun de ces serveurs.

fenêtre de surveillance2

En venant ici, regardons ce que l'activité montre. Tout d'abord, regardons le 'Comte'. Le "compte" a commencé à augmenter, car le nombre de clients a augmenté et ils vident tous les deux des données dans le cache. Les demandes ont également commencé à augmenter, leur taux et ici dans le "processus client", nous voyons qu'il y a 2 clients affichés ici. Puisqu'ils s'exécutent à partir du même conteneur, les adresses IP des clients sont les mêmes, mais les ID de processus sont différents et l'un provient de .NET Core et l'autre de Java. Si je viens à la fenêtre principale, une autre fenêtre, je veux montrer est la fenêtre "Statistiques". Ce qui donne une autre vision de ce qui se passe ? Pour ce faire, je vais cliquer sur le bouton points de suspension et accéder à l'onglet "Afficher les statistiques".

statistiques

Nous voyons ici les compteurs de performance par nœud dans cette fenêtre également. Les adresses IP sont affichées ici. Ainsi, nous avons réussi à connecter nos clients à nos serveurs au sein du même cluster Service Fabric.

statistiques2

écaillage NCache Grappe

Dans cette dernière partie de la démonstration, nous allons démontrer l'ajout à l'exécution des nœuds au cache cluster et nous verrons que les ajouts n'ont aucun impact sur les performances des applications clientes. Pour cela, revenons à notre fenêtre principale dans le 'Web Manager'. Pour ajouter un troisième nœud, tout ce que nous avons à faire est de cliquer sur le lien "Afficher les détails" comme indiqué ici.

cluster-cache2

Cela nous amènera à une autre fenêtre et si nous arrivons à la section Nœuds de serveur, pour ajouter un troisième nœud, tout ce que nous avons à faire est de cliquer sur le bouton 'Ajouter' montré ici.

bouton d'ajout

Donnez l'adresse du troisième serveur. Je vais le faire ici et je vais donner celui avec 17 et le nœud a été ajouté avec succès.

noeud_ajouté

Maintenant que c'est ajouté, nous devons le démarrer et pour cela, il suffit de cocher la case à côté de l'adresse IP et de cliquer sur "Démarrer" et il a été ajouté avec succès.

start2

Pour en revenir à la fenêtre principale, si nous actualisons ce bouton, nous voyons maintenant qu'il y a 3 serveurs et regardons maintenant ce qui se passe dans la fenêtre de surveillance. Comme précédemment, nous cliquons sur la case à cocher ici et cliquez sur l'onglet "Monitor" et nous voyons maintenant qu'il y a 3 serveurs affichés dans le tableau de bord "Cluster Health" et qu'ils sont entièrement connectés.

serveur-tableau de bord2

Et dans le 'Client Process', nous avons 3 serveurs différents fournissant la demande des 2 clients.

client-processus

Et si vous regardez dans la section 'Count', le 'Count' a été équilibré en charge entre les 3 nœuds.

compte-section

Cela montre que la stratégie d'équilibrage de charge employée par la partition du cluster de réplication est en vigueur.

Ceci nous amène à la fin de notre présentation. Nous avons examiné comment déployer NCache en tant que service conteneurisé au sein d'une application Service Fabric. Si vous avez des questions sur NCache ou la présentation à laquelle vous venez d'assister, n'hésitez pas à nous contacter au support@alachisoft.com. Merci.

© Copyright Alachisoft 2002 - . Tous droits réservés. NCache est une marque déposée de Diyatech Corp.