> Mobilité > Nano Server est prometteur

Nano Server est prometteur

Mobilité - Par Loïc Thobois - Publié le 22 juillet 2016
email

Encore sans date officielle de lancement, Windows Server 2016 n'en reste pas moins extrêmement attendu par l'ensemble de la communauté au vu des nombreuses avancées et nouveautés qu'il se promet d'intégrer.

Nano Server est prometteur

Nano Server se présente comme faisant partie des plus prometteuses de ces avancées …

Plongée au cœur de Nano Server

En effet, Nano Server est une nouvelle forme d’intégration du système d’exploitation serveur de Microsoft qui se veut minimaliste et modulaire. Il s’appuie à la fois sur le retour d’expérience des utilisateurs, à savoir …

Réduire les impacts liés aux redémarrages

Redémarrer suite à la mise à jour d’un composant que je n’utilise pas

Redémarrer le plus rapidement possible

Réduire la taille des images systèmes

Une taille importante implique des temps d’installation et de maintenance plus longs

Les transferts réseaux consomment une bande passante plus importante

Le stockage nécessite une volumétrie plus importante

Réduire les ressources consommées

Une consommation réduite des ressources augmente la densité applicative

Et sur le retour des équipes gérant la plateforme Azure, soumises aux contraintes actuelles d’autant plus critiques à l’échelle d’un cloud …

Disponibilité interrompue par les patchs et les redémarrages

(Grand nb. de serveurs) * (ressources OS importantes) => Coût d’infrastructure important

Déploiement d’images de taille importante impacte le réseau

Et qui ont besoin …

D’une intégration des composants de gestion (System Center)

D’un temps de déploiement réduit

D’une réduction des indisponibilités suite aux mises à jour et aux redémarrages (actuellement redémarrage d’un hôte système ~2 minutes et d’un hôte de stockage ~5 minutes)

Historiquement, l’architecture des systèmes Windows a évolué comme suit

On remarque donc une évolution permettant d’offrir une granularité plus importante de déploiement en passant d’un système quasi monolithique à un système de déploiement par couche comme peuvent l’offrir les systèmes Linux par exemple.

Nano Server bénéficie pour sa part d’une nouvelle forme d’intégration du système d’exploitation serveur de Microsoft qui rompt avec l’existant.

Nano Server pour le déploiement de Windows Server 2016

Nano Server se présente ainsi comme un nouveau mode de déploiement de Windows Server 2016 qui s’inscrit dans la mouvance DevOps et qui se veut minimaliste.

Nano Server ne va prendre en charge que les sous-systèmes principaux du système d’exploitation à savoir les processeurs, la mémoire, les disques et le réseau. Il sera complètement dépourvu d’interface graphique en poussant la démarche beaucoup plus loin que ce qu’avait fait Nano Server.

Le système se veut tout de même modulaire en intégrant ses options d’installation sous la forme de packages modulaires.

Construit autour des applications « cloud », il n’est pas fait pour remplacer l’édition Core de Windows Server. Ainsi, il bénéficie d’une refonte profonde de l’architecture de Windows Server, d’un déploiement facilité, d’un besoin plus faible en ressource physique et n’est disponible qu’en architecture 64bits.

Il sera ainsi plus rapide à déployer avec une durée d’installation oscillant autour des 40 secondes au lieu de 300 secondes pour un système comme l’édition Core.

Quelques rappels des caractéristiques historiques des versions de Windows Server mettant en avant le travail accompli sur Nano Server (voir les tableaux).

Ressources mémoire utilisées 

Une empreinte disque très faible est donc observée qui s’explique par l’absence des rôles et fonctionnalités dans l’image de base de Nano Server. Les packages sont indépendants et autonomes et sont installés selon les besoins.

Actuellement, les rôles et fonctionnalités suivantes sont disponibles

  • Hyper-V, Stockage (SoFS), Clustering, IIS, DNS, Conteneurs
  • Core CLR, ASP.NET Core 1 (ex: ASP.NET 5)

Le support complet des pilotes Windows Server est assuré par la disponibilité de trois packages à savoir Hyper-V, Physique et Azure. Un package spécifique permet d’améliorer la compatibilité avec des applications historiques.

Et des packages d’agents SCVMM, Defender et PowerShell DSC permettent une prise en charge étendue de la gestion de Nano Server avec les technologies existantes.

Il est à noter que Nano Server embarque une version spécifique et allégée du Framework .NET appelée .NET Core 1.0. C’est cette même version qui est maintenant portée et supportée sur Linux et Mac OS X, et celle-ci n’intègre pas, par exemple, les composants graphiques que l’on peut trouver dans le Framework .NET 4.6.

Un petit tour du côté déploiement de Nano Server

Le processus de déploiement de Nano Server est spécifique. Celui-ci n’est pas présent dans l’outil de déploiement classique de Windows Server 2016.

Pour Nano Server, un fichier WIM spécifique est présent dans le média de Windows Server 2016.

(((IMG8449)))

Le déploiement va donc nécessiter une personnalisation de l’image en amont de l’installation et des scripts PowerShell vont faciliter les opérations d’intégration des différents packages.

Nano Server se veut tout de même disponible pour tous les scénarios de déploiement, à savoir :

  • Système hôte pour les serveurs physiques
  • Système invité pour les machines virtuelles
  • Conteneurs Windows Serveur
  • Conteneurs Hyper-V

Pour déployer Nano Server dans une machine virtuelle, on va pouvoir suivre la procédure suivante :

-Copier les scripts du répertoire \NanoServer

NanoServerImageGenerator.psm1

Convert-WindowsImage.ps1

Import de bibliothèque d’administration de l’image Nano Server

Import-Module NanoServerImageGenerator.psm1 –Verbose

– Lancer la commande de création du disque VHD de NanoServer

  • New-NanoServerImage –GuestDrivers
  • <fichier>.vhd pour Gen1 et <fichier>.vhdx pour Gen2
  • Créer une machine virtuelle pour accueillir le disque

Se connecter

  • Administrer la machine à distance
  • Obtenir l’adresse IP du Nano Server et ouvrir les flux réseaux nécessaires à l’administration à distance

Pour déployer Nano Server sur un serveur physique à l’aide de la technologie BootVHD, on va pouvoir suivre la procédure suivante

  1. Copier les scripts du répertoire \NanoServer
  2. NanoServerImageGenerator.psm1
  3. Convert-WindowsImage.ps1
  4. Importer la bibliothèque d’administration de l’image Nano Server
  5. import-Module NanoServerImageGenerator.psm1 –Verbose
  6. Lancer la commande de création du disque VHD de NanoServer
  7. New-NanoServerImage -OEMDrivers -DriversPath <chemin>
  8. <disque>.vhd pour MBR et < disque>.vhdx pour UEFI
  9. Copier le fichier VHD sur le serveur cible
  10. Configurer le serveur pour démarrer sur le système Nano Server
  11. Monter le contenu du fichier contenu dans l’arborescence
  12. Lancer la commande : bcdboot <volume nano server>:\windows
  13. Démonter le contenu du disque
  14. Démarrer le serveur physique sur le système Nano Server
  15. Administrer la machine à distance
  16. Obtenir l’adresse IP du Nano Server et ouvrir les flux réseaux nécessaires à l’administration à distance

Voici les commutateurs de la Cmdlet New-NanoServerImage:

* -MediaPath <chemin vers le média>

* -BasePath .\Base

* -TargetPath .\<fichier>.vhd

* -ComputerName <computer name>

* -GuestDrivers, -ForAzure, -OEMDrivers, -DriversPath

* -AdministratorPassword

* -DomainName, -DomainBlobPath, -ReuseDomainNode

* -InterfaceNameOrIndex

* -Ipv4Address, -Ipv4SubnetMask, -Ipv4Gateway

* -EnableRemoteManagementPort

* -Packages, -Compute, -Storage, …

* -MergePath

* …

L’installation des pilotes peut aussi se faire de la manière suivante à l’aide de l’outil DISM.

(((IMG8450)))

1. Installation des pilotes correspondant au périphérique

o Dism /Add-Driver /driver:<path>

o Add-WindowsDriver -Recurse -ForceUnsigned –Driver – Path

2. Installation du catalogue de pilote de Server Core

o Dism /Add-Package /PackagePath:.\packages\Microsoft-NanoServer-OEM-Drivers-Package.cab

3. Installation des pilotes en tant que machine virtuelle invitée

o Dism /Add-Package /PackagePath:.\packagesMicrosoft-NanoServer-Guest-Package.cab

L’installation des rôles et fonctionnalités va se faire via le biais des commutateurs suivants

INano Server ne propose pas de support des MSI et Microsoft préconise l’utilisation de xcopy ou de scripts PowerShell personnalisés (PowerShell DSC par exemple) pour le déploiement des applicatifs tiers (Site Web, Services, Applications, …)

Téléchargez cette ressource

Livre blanc Sécurité et Stockage des documents

Livre blanc Sécurité et Stockage des documents

Découvrez dans ce livre blanc Kyocera les outils logiciels qui permettent une approche holistique et efficace de la collecte, du stockage, de la gestion et de la sécurisation des documents en entreprise.

Terminons avec l’administration de Nano Server

L’administration de Nano Server est assez spécifique car celui-ci ne dispose pas du tout d’interface graphique (même pas une petite invite de commande… et encore moins un service de bureau à distance).

Des outils qui lui sont propres seront donc nécessaires pour en assurer l’administration quasi exclusivement à distance.

Seule exception avec la Nano Server Recovery Console qui va permettre localement de configurer le réseau et le pare-feu.

PowerShell sera ensuite particulièrement et recommandé et adapté à l’administration de Nano Server accompagné de PowerShell DSC si le module a été installé.

L’implémentation de PowerShell sur Nano Server s’appuie sur Core PowerShell qui est une refonte allégée s’appuyant sur le .NET Core 1 dont nous avons déjà parlé précédemment dans l’article.

 

Core PowerShell garantit une compatibilité complète avec les cmdlets d’administration distante et le debug à distance (Invoke-Command, New-PSSession, Enter-PSSession, etc…).

La plupart des cmdlets standard sont aussi disponibles avec le support de tous les types de cmdlet: C#, Script et CIM.

Core PowerShell prend en charge PowerShell DSC avec un sous ensemble des ressources DSC disponibles.

Les Workflow PowerShell ne sont pas supportés par Nano Server.

Une fois les composants installés et configurés de manière initiale, les outils historiques RSAT (Remote Server Administration Tools) seront ensuite utilisable (Server Manager, MMC, …)

Visual Studio 2015 bénéficie aussi d’une intégration dans le processus de déploiement de Nano Server avec des modules dédiés

Un nouvel outil fraîchement disponible et appelé Remote Server Management Tools sera aussi très intéressant pour l’administration de Nano Server en sachant qu’il s’agit d’une interface web d’administration s’appuyant sur l’infrastructure d’Azure et sur un composant passerelle faisant le lien avec les serveurs locaux.

Ce nouvel outil remplace les outils traditionnellement locaux et permet d’administrer les éditions Core et Standard aussi

  • Task Manager, Registry Editor, Event Viewer, Device Manager, Sconfig
  • Control Panel, Explorateur, Moniteur Performance, Gestionnaire disque, Gestionnaire Utilisateurs et groupes, …

 

Et la configuration de Nano Server ?

Au vu de ses caractéristiques et de sa cible, Nano Server se positionne comme une Cloud Application platform.

Le support des applications « faites pour le cloud » est assuré par l’implémentation d’un sous ensemble de Win32, de la CoreCLR, des services PaaS et d’ASP .NET Core 1 (ASP.NET 5).

Nano Server n’est donc pas en mesure d’exécuter toutes les applications historiques de Windows Server.

 

Les futurs développements applicatifs  doivent donc prendre en compte les considérations suivantes pour cibler correctement les plateformes

  • La couche client pour RDS est-elle nécessaire ?
  • Doit-il être installé sur l’édition Server ou sur Nano Server ?
  • Le déploiement se fera sur des serveurs physiques, virtuels ou des conteneurs ?

 

Nano Server bénéficie d’une intégration directement dans Visual Studio avec des outils dédiés dans la VS gallery. Ainsi, des modèles de projets seront adaptés et offriront des fonctions avancées comme l’IntelliSense et le debug à distance avec comme périmètre Nano Server.

 

La réduction des composants présents sur le système implique une révision des applications existantes afin de garantir la compatibilité.

Une DLL manquante pourrait aboutir à un dysfonctionnement de l’application et il existe donc un package appelé « Reverse forwarders » permettant d’augmenter le niveau de compatibilité en simulant la présence des principaux composants manquants. L’appel sera ainsi lancé sur Nano Server qui va retourner un « Not Implemented » si l’API n’est pas implémentée.

Il est tout de même recommandé de refondre le code des applications devant être exécutées sur Nano Server pour coller au mieux à la cible.

 

Le package Reverse forwarders devant être intégré sur Nano Server pour augmenter le niveau compatibilité est le suivant: Microsoft-OneCore-ReverseForwarders-Package

 

Les composants disponibles dans le package sont : advapi32.dll, comctl32.dll, comdlg32.dll, gdi32.dll, kernel32.dll, ole32.dll, psapi.dll, shell32.dll , shlwapi.dll, user32.dll, version.dll, winmm.dll

Voici des exemples d’applications compatibles à l’aide du Reverse Forwarders pour le moment: Chef, PHP, Nginx, Python 3.5, Node.js, GO, Redis, MySQL, OpenSSL, Java (OpenJDK), Ruby (2.1.5), SQLite, …

Nano Server, en conclusion

Nano Server se montre très prometteur même si son périmètre est plus réduit que sur les éditions classiques. Il sera le support parfait pour héberger des VMs Hyper-V ou des applications Web lorsqu’elles seront compatibles avec le .NET Core 1.0.

Mobilité - Par Loïc Thobois - Publié le 22 juillet 2016