10 min de lecture
Open Sourcing SAND, le démon de mise en réseau de Scalingo
Introduit pour la première fois par Scalingo en janvier 2019, SAND est un service autonome gérant des réseaux superposés qui s'intègre à Docker.

Première introduite par Scalingo en janvier 2019, SAND est un service autonome gérant des réseaux superposés qui s'intègre avec Docker. SAND (Scalingo Awesome Network Daemon) est conçu pour des entreprises à l'échelle web comme Scalingo, gérant des milliers de conteneurs chaque jour. SAND propose une API simple pour créer des réseaux superposés privés basés sur VXLAN afin de lier les conteneurs ensemble. Un des principaux avantages de cette solution est que SAND est indépendant de la technologie de conteneur sous-jacente. C'est l'un des piliers de l'infrastructure de Software-Defined Networking (SDN) de la plateforme de Scalingo.
Chez Scalingo, SAND est un élément critique de l'infrastructure alimentant certaines parties des réseaux de conteneurs. Il est actuellement utilisé pour faire fonctionner des centaines de clusters de bases de données.
Nous sommes ravis aujourd'hui d'annoncer le licenciement ouvert de SAND. En permettant aux autres membres de la communauté des réseaux définis par logiciel de tirer parti des planificateurs unifiés et de la co-localisation des charges de travail, Scalingo ouvrira la porte à de nouvelles façons de gérer les réseaux. De plus, le licenciement ouvert de SAND permettra une plus grande collaboration au sein de l'industrie et ouvrira le logiciel aux retours et contributions des ingénieurs de l'industrie, des développeurs indépendants et des universitaires du monde entier.
Fonctionnalités de la version actuelle
Scalingo fait fonctionner SAND depuis environ six mois en production et cela fonctionne très bien et se développe. L'objectif est d'offrir un moyen de gérer des réseaux superposés privés. Il est écrit en Go. L'API vous permet de CRUD un réseau privé et d'ajouter toute entité (appelée point de terminaison) à ce réseau.
La version initiale fournit également un pilote Docker pour s'intégrer facilement avec ce moteur de conteneurs.
Avantages d'utiliser SAND
Les réseaux privés créés avec SAND sont basés sur la technologie VXLAN (Virtual Extensible LAN). VXLAN isole différents réseaux tout comme les VLAN, mais encapsule les trames Ethernet de couche 2 dans des datagrammes UDP de couche 4. Ce protocole rend les VLAN plus évolutifs.
Alors que Docker fournit libnetwork qui permet de définir un réseau superposé, il est strictement lié à Docker. En revanche, SAND est complètement agnostique de la technologie de conteneur sous-jacente et vous permet d'utiliser autre chose que Docker.
Conception
Le démon de réseau SAND doit être installé sur tous les hôtes qui auront des conteneurs fonctionnant dans l'un des réseaux superposés. La configuration du réseau est stockée sur le magasin de valeurs clés etcd.
Chaque réseau superposé créé peut utiliser sa propre plage IP, mais il n'y a aucun problème à utiliser la même plage pour différents réseaux car ils sont complètement isolés les uns des autres. Par défaut, chaque réseau superposé recevra des adresses IP dans le format 10.0.0.0/24.
Créer un réseau est une opération sans effet où un ID VXLAN unique est alloué et où la configuration du réseau est stockée sur etcd.
Lorsqu'un premier point de terminaison est ajouté à un réseau, le service créera un espace de noms réseau dédié contenant l'interface de réseau VXLAN sur le serveur qui ajoute le point de terminaison. Une paire d'interfaces Ethernet virtuelles (veth) liera l'espace de noms ciblé (le réseau de conteneurs) et l'espace de noms superposé. Toutes les interfaces veth sont liées au VXLAN avec une interface de pont. En conséquence, il n'y a pas d'impact sur l'espace de noms racine du serveur exécutant SAND, tout est géré dans des espaces de noms dédiés.
Lorsqu'un point de terminaison est ajouté ou supprimé, tous les autres hôtes ayant au moins un point de terminaison dans le même réseau ajoutent des routes au point de terminaison nouvellement créé modifiant les tables ARP et FDB de l'interface VXLAN, permettant le routage entre les différents membres du réseau superposé.
Comment l'utiliser
Interface de ligne de commande autonome
SAND fournit une interface de ligne de commande permettant aux opérateurs de manipuler et de visualiser les réseaux superposés et leurs membres :
Créez un point de terminaison pour chaque entité qui doit rejoindre le réseau superposé, elles pourront communiquer instantanément entre elles.
Intégration Docker
Il est également possible d'intégrer SAND avec Docker en utilisant libnetwork de Docker RemotePlugin
La ressource réseau initiale doit être créée à l'aide de l'API/CLI SAND.
Essayer SAND
Nous espérons que vous essayez SAND par vous-même et que vous nous envoyez vos retours ! Vous pouvez apprendre comment nous utilisons SAND chez Scalingo en lisant nos articles de blog annonçant des clusters Elasticsearch et des clusters Redis.
Utilisation future
Avec SAND, nous avons développé la technologie sous-jacente pour construire automatiquement des réseaux privés via une API, également appelée Software Defined Networking. Actuellement, nous l'utilisons pour isoler des clusters de bases de données de notre offre de base de données en tant que service. À l'avenir, nous envisageons de nombreuses applications amusantes telles que Espaces Privés : toutes vos applications et bases de données dans le même réseau privé.
Photo de Sumner Mahaffey sur Unsplash

É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






