Blog

Haute disponibilité pour Elasticsearch sur Scalingo

Chargement...

6 min de lecture

Haute disponibilité pour Elasticsearch sur Scalingo

À partir d'aujourd'hui, les clusters Elasticsearch sont disponibles à tous sur Scalingo.

How Scalingo makes migrating from Heroku easy

Elasticsearch est un moteur de recherche capable d’indexer et de parcourir des documents JSON complexes sans schéma, disponible sur Scalingo depuis plus de 4 ans. Sa véritable force réside dans ses capacités de clustering flexibles, transparentes et puissantes. Dès aujourd’hui, les clusters Elasticsearch sont disponibles en production sur Scalingo, apportant de la haute disponibilité (HA) ainsi que de meilleures performances par rapport à notre offre actuelle en mono-nœud.

Qu’est-ce qu’un cluster Elasticsearch ?

Elasticsearch est un type particulier de base de données, optimisé pour la recherche full-text.
Au cœur de son fonctionnement se trouvent les notions de cluster et de sharding :

  • Un cluster Elasticsearch est composé d’un ou plusieurs nœuds.

  • Lorsqu’un index est ajouté, il est découpé en plusieurs shards.

  • Chaque shard peut être répliqué sur différents nœuds.

Chaque nœud du cluster connaît la topologie globale et est capable de rediriger une requête vers le bon nœud.

L’utilisation d’un cluster multi-nœuds permet d’apporter de la redondance et d’améliorer la disponibilité.

Les clusters Elasticsearch sur Scalingo

Lorsque vous provisionnez un cluster Elasticsearch sur Scalingo, nous démarrons trois nœuds Elasticsearch afin de répartir les index sur deux d’entre eux.
Grâce à ce mécanisme de réplication, si un nœud tombe en panne, votre base de données reste accessible sans interruption.

Du point de vue du client (généralement votre application), il n’y a qu’un seul point d’entrée vers le cluster, qui se charge d’équilibrer la charge entre les nœuds.
Ainsi, la variable d’environnement injectée dans votre application contient toujours une seule adresse IP.

Pour rendre cela possible « comme par magie », un énorme travail a été nécessaire. Voici l’architecture cible que nous proposons :

Scalingo Elasticsearch network setup

Lorsque votre application interroge Elasticsearch, elle entre dans le réseau privé via un point d’entrée unique, appelé en interne Gateway, qui se charge :

  • de router les requêtes vers les nœuds Elasticsearch

  • de gérer l’authentification

Pour éviter que ce gateway ne devienne un point de défaillance unique, un second est démarré en failover.
Ce mécanisme est assuré par LinK, un gestionnaire d’IP virtuelle.
Actuellement, ces points d’entrée sont des serveurs HAProxy.

Afin d’augmenter la sécurité du cluster, les nœuds sont déployés dans un réseau privé dédié basé sur VXLAN, grâce à SAND, un service autonome qui gère les réseaux overlay.

SAND et LinK ont été développés en interne afin d’améliorer la sécurité et la disponibilité de la plateforme.
Ces deux projets ont été open sourcés sous licence MIT. Nous reviendrons plus en détail sur ces projets dans les prochaines semaines.

TLS Partout

Comme toujours, la sécurité des communications vers la base de données et entre les membres du cluster est une priorité pour nous.

Pour garantir le chiffrement :

  • entre les nœuds Elasticsearch

  • entre les nœuds et le gateway

nous utilisons l’extension Search Guard (édition communautaire), qui implémente le chiffrement au niveau transport et au niveau REST (TLS).

Par défaut, votre base de données n’est pas accessible depuis l’extérieur du réseau Scalingo.
Comme annoncé l’an dernier, pour la rendre accessible depuis n’importe où, vous devez d’abord forcer l’utilisation de connexions TLS pour vous connecter au cluster Elasticsearch.

Comment tirer parti des clusters Elasticsearch ?

Cette fonctionnalité est disponible dans les nouveaux plans pour votre base de données. Si vous créez une nouvelle base, il vous sera demandé de choisir un plan. Tous les plans Business incluent un cluster avec trois nœuds contenant les données et deux nœuds gateway. La première version compatible cluster est la 5.5.3-7. Il s’agit de la 7e révision Scalingo de la version 5.5.3 d’Elasticsearch.

Pour une base de données existante, l’obtention d’un cluster se fait en plusieurs étapes. Vous devez d’abord mettre à jour vers la dernière version 5.5.3-7. Cela démarrera votre base en cluster mono-nœud (c’est-à-dire un nœud Elasticsearch dans son propre réseau privé avec un seul gateway). Ensuite, vous pouvez modifier le plan dans la section « Addons » de votre application pour choisir un plan Business. Votre base de données sera alors migrée de manière transparente d’un cluster mono-nœud vers un cluster à trois nœuds.

Après la mise à niveau vers un plan Business, votre base de données devient hautement disponible et Scalingo garantit une disponibilité de 99,99 % de vos données. De plus, les mises à jour vers des versions plus récentes sont effectuées sans interruption de service !

Avec ces modifications, la manière dont les sauvegardes automatiques sont effectuées évolue. En effet, l’API de sauvegarde d’Elasticsearch nécessite un stockage partagé entre tous les membres du cluster. Nous avons choisi de stocker toutes les sauvegardes sur un stockage objet externe grâce au plugin S3 Repository. Ces sauvegardes transitent par un proxy interne afin d’être chiffrées. Notre Data Processing Agreement a été mis à jour en conséquence. Malheureusement, avec cette configuration, il n’est plus possible de télécharger vos sauvegardes. Cependant, nous avons ajouté une fonctionnalité de restauration permettant de restaurer la base à partir d’une sauvegarde précédente. Vous n’avez pas à vous soucier de la portabilité des données : votre base Elasticsearch est totalement standard (les images Docker de base sont open source) et vous pouvez récupérer toutes vos données en les interrogeant.

Le dashboard de votre base a été mis à jour pour vous aider à comprendre les statistiques essentielles de votre cluster Elasticsearch, sa topologie et son état de santé :

Database dashboard revamped

Évolution nécessaire de la tarification

Comme tout le monde n’a pas besoin d’un cluster ni ne peut se permettre une configuration haute disponibilité, la tarification Elasticsearch sur Scalingo a été entièrement revue.

Il existe désormais trois catégories de prix :

Sandbox contient un seul plan et doit être utilisé uniquement pour le développement. Aucun SLA n’est proposé sur ce plan.
Les plans Starter proposent un déploiement en mono-nœud (sans haute disponibilité), mais incluent tous des sauvegardes automatiques quotidiennes.
Les plans Business sont ceux à privilégier pour la production : cluster complet et meilleure disponibilité.

Vous trouverez la nouvelle grille tarifaire ci-dessous :

Scalingo Elasticsearch new pricing plans

À partir d’aujourd’hui, tous les anciens plans sont obsolètes et ne sont plus disponibles pour la création de nouveaux addons. En conséquence, tous les addons Elasticsearch utilisant l’ancien plan gratuit seront arrêtés le 31 mars et automatiquement transformés en plan Sandbox.

Si vous avez des questions ou des remarques concernant les nouveaux plans tarifaires ou la fonctionnalité de cluster, n’hésitez pas à nous contacter. Nous serions ravis d’avoir votre retour !

Et ensuite ?

Nous avons désormais développé toutes les briques nécessaires pour assurer l’isolation des réseaux privés avec SAND et la haute disponibilité des adresses IP avec LinK. Cela va nous permettre de proposer davantage de services à forte valeur ajoutée à l’avenir. Parmi eux, la haute disponibilité pour Redis et PostgreSQL arrive prochainement sur Scalingo. Restez à l’écoute dans les prochains mois !

Photo par Gabriel Sollmann sur Unsplash

Etienne Michon, Scalingo

Étienne Michon

Docteur en informatique, Étienne Michon occupe actuellement le poste d'ingénieur R&D chez Scalingo. Il était l'un des premiers employés de Scalingo et il contribue grandement à faire grandir ce blog grâce à ses articles techniques de qualité.

Restez informé

Recevez des articles et des mises à jour de la plateforme dans votre boîte de réception.

Prêt à déployer en toute confiance ?

Découvrez des déploiements sans temps d'arrêt, une mise à l'échelle automatique intelligente et une infrastructure entièrement gérée. Commencez à déployer vos applications sur Scalingo dès aujourd'hui.

Aucune carte de crédit requise • Déployez en quelques minutes • Annulez à tout moment

Dégradé arrière-plan section

Déployez une application ou base de données

Commencez à déployer

Rejoignez les équipes qui misent sur une plateforme conçue pour livrer rapidement, opérer sereinement, avec des valeurs européennes et un support humain.

Dégradé arrière-plan section

Déployez une application ou base de données

Commencez à déployer

Rejoignez les équipes qui misent sur une plateforme conçue pour livrer rapidement, opérer sereinement, avec des valeurs européennes et un support humain.

Dégradé arrière-plan section

Déployez une application ou base de données

Commencez à déployer

Rejoignez les équipes qui misent sur une plateforme conçue pour livrer rapidement, opérer sereinement, avec des valeurs européennes et un support humain.