SQL Server sur toutes les plates-formes : et pourquoi pas sur un NAS ?

Vous en avez peut-être entendu parler, SQL Server 2017, la dernière version de SQL Server est multi-plateformes !
En effet, au delà des éditions pour Windows habituelles, il tourne aussi sous Linux et il est aussi possible de l'installer dans un container Docker.

Pour rappel, Docker est une solution de virtualisation qui permet de faire tourner une application (ou un OS) dans un container. A la différence d'une solution de virtualisation classique, l'image n'embarque que les fonctionnalités nécessaires du système d'exploitation : elle est donc très légère et démarre en quelques secondes. Le déploiement de l'image est automatisé. Et Docker est disponible sur plates-formes Linux, Windows, Mac !

En l'occurence, Docker est aussi disponible sur les NAS QNAP, entre autres modèles, ce qui m'a donné l'envie de tenter d'y installer SQL Server. Une installation totalement non supportée par Microsoft, mais qui marche plutôt bien, voici le tutoriel...

Sur les NAS récents de marque QNAP, le sytème QTS 4.x qui tourne sur un noyau Linux proposait déjà une solution de virtualisation basée sur KVM. Il offre aussi l'application Container Station. Cette application prend en charge les containers LXC (Linux Container) et Docker. Cela méritait donc de tenter une installation de SQL Server 2017.

Via l'App Center du QNAP, installons l'application Container Station. Une fois installée, la configuration est extrêmement simple, il suffit de désigner le dossier qui contiendra les images de containers.

A partir de l'interface, il est très simple d'installer des container Docker, cliquer sur "Créer un conteneur" et une liste est proposée. Dans la boîte de recherche, taper microsoft/mssql pour obtenir la liste des images de SQL Server.

Installer l'image microsoft/mssql-server-linux (bouton installer), choisir la dernière version (latest) puis configurer les quelques paramètres nécessaires : d'abord le nom de votre image Docker, et les limites de ressources allouées, CPU et mémoire. Pour la mémoire, 4096 est une valeur minimale : il faut donc que vous ayez un NAS suffisamment équipé en mémoire...

Dans les réglages avancés, saisir 2 variables d'environnement et leur valeur :

  • Variable ACCEPT_EULA , la valeur doit être Y
  • Variable SA_PASSWORD la valeur est le mot de passe du login sa, qui doit être respecter les exigences de complexité (majuscules, minuscules, chiffres, caractères spéciaux)

Toujours dans les réglages avancés, configurez le réseau : vous pouvez choisir le mode bridge (avec une nouvelle adresse sur votre réseau, mappée à la carte réseau du NAS. Saisissez dans ce cas une adresse IP fixe), ou le mode NAT (utilise la même adresse que le NAS avec translation de ports).

Pour que vos fichiers de base de données soient accessibles à l'extérieur du container et durables même en cas de suppression du container, vous pouvez ajouter un volume monté depuis un répertoire partagé du NAS (que vous aurez créé préalablement). Redirigez le répertoire /var/opt/mssql vers le dossier de votre choix.

Puis cliquez sur le bouton "Créer". Il ne reste plus qu'à attendre le téléchargement de l'image (en tâche de fond) puis la création de votre container. Pendant ce temps, si vous le souhaitez, vous pouvez créer un enregistrement DNS pour votre nom de serveur ou un mappage dans le fichier host, ce qui vous permettra par la suite de vous y connecter par son nom au lieu de l'adresse IP.

Une fois l'image créée, vous pouvez voir les messages de console dans la fenêtre du container :

Une fois tout bien démarré, il ne reste plus qu'à vous connecter avec SQL Server Management Studio... Magique, non ? Aviez-vous rêvé un jour de voir SQL Server sous Linux, et qui plus est, installé sur un NAS ?