Je vais vous montrer comment vous pouvez installer très rapidement sur votre ordinateur un cluster de nœuds InterSystems IRIS en sharding. Dans cet article, mon objectif n'est pas de parler du sharding en détail, ni de définir une architecture de déploiement pour un cas réel, mais de vous montrer comment vous pouvez rapidement installer sur votre machine un cluster d'instances d'IRIS en sharding avec lequel vous pouvez jouer et faire des tests. Si vous souhaitez en savoir plus sur le sharding dans IRIS, vous pouvez consulter la documentation en cliquant ici: clicking here.
Disons dès le départ que la technologie de sharding d'IRIS va nous permettre de faire deux choses:
- Définir, charger et consulter des tables fragmentées ou des shards, dont les données seront réparties de manière transparente entre les nœuds du cluster
- Définir des tables fédérées, qui offrent une vue globale et composite des données appartenant à des tables différentes et qui, physiquement, sont stockées sur différents nœuds distribués
Donc, comme je l'ai dit, nous laissons le sujet du jeu avec des shards ou des tableaux fédérés pour d'autres articles, et nous nous concentrons maintenant sur l'étape précédente, c'est-à-dire sur la mise en place du cluster de nœuds en sharding.
Pour notre exemple, nous allons utiliser Docker Desktop (for Windows or MacOS) et nous appuyer sur la fonctionnalité d'IRIS: CPF Merge; ou fusion de fichier de configuration; qui nous permet d'utiliser un fichier texte brut dans lequel nous inclurons les sections et propriétés de configuration d'IRIS que nous voulons appliquer pour modifier la configuration actuelle de l'instance d'IRIS. Cette fichier se superpose au fichier iris.cpf
qui définit la configuration par défaut de l'instance.
Ce merge est automatiquement « activé » lors de l'ajout de la variable d'environnement: ISC_CPF_MERGE_FILE
à laquelle nous devons avoir attribué un chemin valide vers un fichier contenant les sections du fichier cpf que nous voulons modifier. Au démarrage, IRIS vérifie si on lui a demandé de faire une fusion (merge) (en gros, si cette variable d'environnement existe et pointe vers un fichier valide). Si c'est le cas, vous pouvez procéder à la fusion et démarrer.
Je ne fais pas plus de détours et je vous inclus le fichier docker-compose.yml
qui fera la magie:
docker-compose.yml
Dans ce cas, nous créons 3 services:
- irisnode1 - Premier nœud du cluster, qui a un rôle spécial, et c'est pourquoi nous l'appelons spécifiquement
node1
- irisnode2 - Nœud de données supplémentaire du cluster, dont le rôle est
data
(nous pouvons en avoir autant que nous le voulons) - webgateway - Serveur web préconfiguré pour accéder aux instances IRIS (Apache + Webgateway)
Pour créer l'image shardnode:latest
, j'ai utilisé le dockerfile suivant:
Dockerfile
Les fichiers utilisés pour effectuer la fusion (merge) pour nodo1
et d'autre cluster IRIS data
nodes sont les suivants:
merge_first_data-node.cpf
merge_data-node.cpf
On pourrait avoir plus de nœuds de type
data
dans le cluster en ajoutant simplement plus de services avec la même définition que l'irisnode2
(en changeant le nom bien sûr)
D'autre part, pour que l'acheminement fonctionne correctement sur notre serveur web et que nous puissions accéder aux portails d'administration de chacune des instances, nous devons modifier le paramètre CSPConfigName dans chacune d'entre elles, et nous le faisons avec les fichiers: configure_first_data-node.sh
y configure_data-node.sh
; qui sont identiques dans cet exemple, mais que j'ai laissés différents car, à un moment donné, nous pourrions vouloir effectuer des actions différentes au démarrage de chaque instance d'IRIS, selon qu'il s'agit du node1
ou d'un nœud de type data
du cluster.
configure_data-node.sh
Je pense que c'est à peu près tout.
Les nœuds pourraient être définis à l'aide de l'API disponible dans la classe
%SYSTEM.Cluster
mais la possibilité d'introduire des actions conjointement avec la fonctionnalité CPF Merge simplifie grandement la tâche. Je vous recommande de consulter ce lien, en particulier la section relative à la rubrique the section [Actions].
Pour construire les images et déployer le cluster, nous pourrions construire notre image sharnode:latest
et lancer le docker-compose from depuis VS Code. Alternativement, nous pourrions le faire dans notre ligne de commande, à partir du dossier dans lequel nous avons le fichier: docker-compose.yml
, en exécutant ces commandes:
docker compose build
docker compose up
Shell SessionShell Session
Cela prendra un peu de temps la première fois car l'instance marquée comme node1
doit être instanciée avant que tout autre nœud de type data
du cluster ne démarre pour la première fois. Mais tout devrait fonctionner et être prêt en une minute ou moins.
Si tout s'est bien passé, vous devriez pouvoir accéder aux portail de gestion de chaque instance avec les URL ci-dessous:
Portail de gestion du nœud de données data : http://localhost:7772/irishost2/csp/sys/UtilHome.csp
Accès à la passerelle WebGateway: http://localhost:7772/csp/bin/Systems/Module.cxw
Et voilà! À partir de là, la limite en termes de volume de stockage de bases de données et de taille de tables est déjà fixée par votre hardware. Vous auriez un cluster de nœuds IRIS prêt à définir des tables en sharding ou des tables fédérées.
J'espère que cela vous sera utile!! À bientôt...