S’il est bien un domaine où les acteurs du monde Apple sont clairement en retard, c’est celui de la virtualisation.
Reprenant mon rôle d’évangéliste des technologies d’entreprise lié au monde Apple, je vous propose un article pour comprendre la virtualisation. Il est important que l’ensemble des acteurs professionnels du monde Mac arrête d’associer la virtualisation à de la magie noire.
L’avenir d’OS X Server sera virtuels ou ne sera pas.
Principes généraux
La plupart des professionnels connaissent la virtualisation d’un système Windows depuis un poste client OS X avec VMware Fusion ou Parallels Desktop. Généralement mis en place pour faire tourner de mauvais logiciels PC comme les applications comptable ou certaines applications métier.
En partant de cette situation connue de tous, essayons de tracer un schéma de fonctionnement théorique. Nous avons une machine Apple, qui démarre un système OS X nativement (dit système hôte) sur lequel on installe une application Mac qui va permettre de créer un matériel virtuel (potentiellement lié à du matériel réel, mais pas forcément) pour enfin faire tourner un système d’exploitation virtuel (dit système invité).
Lorsque le système invité fait quelque chose (un calcul, un accès disque, une communication réseau…) il doit traverser l’ensemble des couches inférieur pour accéder au matériel réel capable d’effectuer le travail demander.
Dans le cas d’un système virtualisé sur un poste de travail, les échanges entre l’application de virtualisation et le système hôte sont soumis à la règle du temps partager. L’OS de base étant multitâche, les systèmes virtuels ne sont pas plus prioritaires que votre navigateur web en train de monopoliser toutes les ressources de votre machine pour lire une publicité en Flash.
De cette situation (un système de virtualisation sur une machine de travail générique) est né un mythe : la virtualisation c’est lent.
La virtualisation pour de vrai
Si on laisse de côté les outils de virtualisation depuis un poste de travail et que l’on se tourne vers le monde des serveurs de virtualisation, nous allons trouver des choses bien plus intéressantes.
Dans ce monde-là, le système hôte, celui démarré par la machine physique n’est pas un système d’exploitation standard démarrant une interface graphique permettant d’aller lire des vidéos YouTube…
Non, le système d’exploitation des serveurs de virtualisation est un système très léger, équipé d’un micro noyaux permettant de faire le strict nécessaire pour la tâche qui lui est dédiée : partager de la manière la plus optimale possible les ressources matérielles.
Le système hôte et les services de virtualisation sont d’ailleurs confondus. L’un étant prévu pour l’autre, une couche de notre schéma applicatif disparait.
Sur une vue logique, les blocs fonctionnels sont toujours les mêmes, cependant, le fait que l’OS hôte et les services de virtualisations soient développés l’un pour l’autre permet de réduire le gap entre les deux et d’optimiser la situation au mieux.
OK, c’est bien, mais pour quoi faire ?
C’est la question légitime face à une nouvelle technologie. En quoi ce truc va nous être utile ? Est-ce que la complexité de mise en œuvre se justifie ou non ?
Dans le cadre de la virtualisation, il y a certains avantages non négligeables.
Le plus évident est la meilleure utilisation des ressources matérielles. Regardez les statistiques de vos serveurs, vous verrez que la consommation CPU est assez faible généralement (moins de 5%) ainsi que la RAM dans la plupart des cas. La virtualisation va permettre d’aller utiliser ces ressources latentes.
Autre intérêt de la virtualisation, la capacité de migrer très simplement d’un serveur physique à un autre. Si vous devez arrêter une machine pour ajouter de la mémoire ou que vous souhaitez la remplacer, l’Ancien Monde vous impose une coupure de service assez conséquente. Si vos services hébergés ne sont pas clusterisés (ou clusterisable, comme bien trop de logiciels « serveur » sous Mac), vous serez bon pour couper la prod ou y aller de vos heures de sommeil. La virtualisation va permettre de migrer, à chaud, une instance virtuelle d’un serveur physique à un autre. Aucune coupure de services et la possibilité de travailler à des heures ouvrables.
Avec la virtualisation, il est également possible de faire des snapshot de vos systèmes. De figer les disques de stockage virtuels vos systèmes virtuels et d’écrire les nouveaux changements dans de nouveaux fichiers. Ainsi, un snapshot avant une mise à jour vous permet de revenir à l’état précédent en un redémarrage, sans besoin de repartir d’une sauvegarde longue à restaurer.
Enfin, et c’est pour moi la meilleure partie, les derniers systèmes vous permettent de faire tourner une machine virtuelle sur deux serveurs physiques en même temps. Cette fonction nommée « Fault Tolerance » par VMware est une fonction extrêmement puissante.
Imaginez, vous disposez d’un « applicatif serveur » Mac aussi mal développé que d’habitude : pas de cluster, pas de réplication, un bon logiciel de compta / calendrier / gestion métier comme on connait tous sur Mac. Avec la virtualisation, vous pouvez pallier ces manques graves.
La même application et la même base de données tournent sur deux serveurs physiques en même temps et s’il l’un tombe, l’autre prend la relève sans perte de service pour les utilisateurs ni crash de base de données.
Voici ce qu’il se passe si je débranche électriquement le Mac Mini faisant tourner mon serveur de stream vidéo.
Et pour le client qui regarde un film à ce moment-là, un simple glitch comme on en voit très souvent avec la TV numérique.
Architecture de base
Le principe de base d’architecture de serveurs de virtualisation est assez simple. Il faut plusieurs nœuds de virtualisation dans le cluster, plusieurs serveurs physiques donc, et un stockage partagé.
Ce stockage peut être du NAS dans une solution premier prix où les I/O disque ne sont pas critique (sur mon NAS de lab assez chargé, je monte à 70 Mo/s de lecture et d’écriture) ou si vous avez du budget, un SAN.
L’idée est simple, il faut un stockage permettant un mode clusterisé : plusieurs clients accèdent au même stockage en bas niveau pour plus de performance. Les deux seules solutions permettant cela aujourd’hui sont le FibreChannel et le iSCSI.
Et c’est tout. Des Mac Mini Server ou des Mac Pro et un NAS Synology ou un SAN Promise pour faire simple. Un switch manageable au milieu n’est même pas impératif.
En fonction du budget et des besoins, on mettra plus ou moins de serveurs et d’espace de stockage. Les espaces de stockage pourront être spécialisé : un milieu de gamme pour les disques système et les services non critiques et un haut de gamme plus rapide dédié aux données et aux services ayant besoin de beaucoup d’I/O.
Le cas Apple
En s’arrêtant là, le monde serait parfait. Et les administrateurs système des mondes UNIX et Windows sont heureux de leur situation. Les mauvais développeurs pas foutus de faire des services en haute dispo aussi.
Mais dans le monde Mac, il faut toujours faire différent. Entre autres, Apple et son désintérêt total du monde de l’entreprise et des serveurs viennent ajouter une ombre légale au tableau.
Certains diront : la virtualisation sous Mac est interdite. Fort heureusement c’est faux. Elle est simplement rendue extrêmement complexe par Apple.
Le contrat de licence utilisateur Apple dit ceci :
2. Permitted License Uses and Restrictions.
A. Preinstalled and Single-Copy Apple Software License.
Subject to the terms and conditions of this License, unless you obtained the Apple Software from the Mac App Store or under a volume license, maintenance or other written agreement from Apple, you are granted a limited, non- exclusive license to install, use and run one (1) copy of the Apple Software on a single Apple- branded computer at any one time. For example, these single-copy license terms apply to you if you obtained the Apple Software preinstalled on Apple-branded hardware.
B. Mac App Store License.
If you obtained a license for the Apple Software from the Mac App Store, then subject to the terms and conditions of this License and as permitted by the Mac App Store Usage Rules set forth in the App Store Terms and Conditions (http://www.apple.com/legal/ itunes/ww/) (“Usage Rules”), you are granted a limited, non-transferable, non-exclusive license:
(i) to download, install, use and run for personal, non-commercial use, one (1) copy of the Apple Software directly on each Apple-branded computer running OS X Mountain Lion, OS X Lion or OS X Snow Leopard (“Mac Computer”) that you own or control;
(ii) If you are a commercial enterprise or educational institution, to download, install, use and run one (1) copy of the Apple Software for use either:
(a) by a single individual on each of the Mac Computer(s) that you own or control, or
(b) by multiple individuals on a single shared Mac Computer that you own or control.
For example, a single employee may use the Apple Software on both the employee’s desktop Mac Computer and laptop Mac Computer, or multiple students may serially use the Apple Software on a single Mac Computer located at a resource center or library; and
(iii) to install, use and run up to two (2) additional copies or instances of the Apple Software within virtual operating system environments on each Mac Computer you own or control that is already running the Apple Software, for purposes of:
(a) software development;
(b) testing during software development;
(c) using OS X Server; or
(d) personal, non commercial use.
The grant set forth in Section 2B(iii) above does not permit you to use the virtualized copies or instances of the Apple Software in connection with service bureau, time-sharing, terminal sharing or other similar types of services.
Que je traduis personnellement comme cela (traduction personnelle et n’ayant aucune valeur) :
2. Autorisations et restrictions
A. Licences pré installées et licence de copie unique.
Suivant ces conditions et sauf si vous avez obtenu vos logiciels depuis le Mac App Store ou via un contrat d’achat en volume, de maintenance ou un autre type de contrat d’Apple, vous disposez d’un usage limité et exclusif permettant d’utiliser une seule copie du logiciel Apple sur un seul ordinateur Apple à la fois. Par exemple, ces licences de copie unique s’appliquent si vos logiciels Apple étaient pré installé sur votre matériel Apple.
B. Licences Mac App Store.
Si vous avez obtenu une licence Apple depuis le Mac App Store, alors les conditions d’usage sont fixé par le contrat « Mac App Store Usage Rules »
(http://www.apple.com/legal/ itunes/ww/), vous disposez d’un usage limité, non exclusif et non transférable pour :
(i) télécharger, installer et utiliser pour un usage personnel et non commercial une copie du logiciel Apple sur tous les ordinateurs Apple fonctionnant sur OS X Mountain Lion, OS X Lion ou OS X Snow Leopard que vous possédez ou contrôlez ;
(ii) si vous êtes une entreprise commerciale ou une institution éducative, vous pouvez télécharger, installer et utiliser une copie du logiciel Apple pour soi :
(a) un utilisateur unique sur toutes les machines que vous possédez ou contrôlez ou
(b) plusieurs utilisateurs sur un ordinateur Mac partagé que vous possédez ou contrôlez.
Par exemple, un employé unique peut utiliser le logiciel Apple sur son ordinateur de bureau et son ordinateur portable, ou plusieurs étudiants peuvent utiliser l’un après l’autre le logiciel installé sur un simple ordinateur Apple mis à disposition dans un centre de documentation ou une bibliothèque; et
(iii) installer et lancer jusqu’à deux copies ou instances supplémentaires du logiciel Apple dans un système virtualisé sur chaque ordinateur Apple que vous possédez ou contrôlez qui exécute déjà le logiciel en question pour des besoins de :
(a) développement logiciel ;
(b) tests durant le développement d’un logiciel ;
(c) utiliser OS X Server ;
(d) un usage personnel et non commercial.
Les droits accordés en section 2B(iii) précédemment ne vous permettent pas d’utiliser les copies virtuelles ou instances des logiciels Apple dans des situations de bureau à distance, de temps partagé, de service de terminal ou d’autres services similaire.
Mon interprétation personnelle (et n’ayant aucune valeur) me fait dire que la situation de la virtualisation pour de vrai n’est pas prise en compte.
Dans le cas d’une virtualisation depuis le poste de travail (OS X + VMware Fusion + OS X), vous ne pouvez lancer que deux machines virtuelles OS X. C’est très clair, et uniquement si vous avez obtenu OS X par le Mac App Store.
Cependant, ce droit est accordé dans le cadre d’un usage d’instance supplémentaire à l’instance d’origine installée sur le matériel Apple.
À aucun moment n’est abordé le cas d’un logiciel Apple virtualisé tournant sur un matériel Apple n’exécutant pas le logiciel Apple.
Cette zone de flou laisse chacun libre de sa propre interprétation.
La plus commune et moins risqué est de dire qu’un ordinateur Apple donne le droit de faire tourner deux machines virtuelles Apple avec des logiciels achetés sur le Mac App Store et aucune limite sur le reste (pas de limitation du nombre de Windows, de Linux, etc.).
La moins commune, considérant que ce qui n’est pas explicitement interdit est autorisé, consiste à dire qu’il n’est pas interdit de faire tourner plusieurs licences distinctes d’un logiciel Apple sur une même machine. De fait et sous condition d’avoir acheté autant de licence que d’instance de votre logiciel sur le Mac App Store, vous pouvez virtualisé autant de fois vos systèmes Apple que ce que permet votre matériel Apple.
Dans les deux cas, cet usage en machine virtuelle n’est valable que dans quatre situations :
- pour développer ;
- pour tester des logiciels ;
- pour faire tourner OS X Server ;
- pour un usage personnel.
Tout cela étant donc soumis à interprétation, mais il est possible de considérer que vous pouvez lancer deux VM OS X Server par Mac ou autant de VM OS X Server souhaitez par Mac n’exécutant pas directement le système Apple et sous condition d’acheter autant de licence que d’instance.
OS X étant gratuit et OS X Server coutant 18 €, il est possible de faire des choses.
Conclusion
La conclusion est assez simple pour moi : tout serveur doit être virtualisé aujourd’hui. Avec des produits comme ESXi gratuit et fonctionnel sur le Mac Mini, il n’y a aucune raison de ne pas y aller.
Une plus grande souplesse dans l’administration système quotidien, dans la maintenance, et surtout, un système permettant de palier les manques scandaleux de bien des logiciels « serveurs » sous Mac.
J’administre un certain nombre de clusters non virtualisé. Un Xsan offrant un système de fichier clusterisé, plusieurs frontaux derrière des load balancer, éventuellement du MySQL Cluster pour la réplication de base. Bref, des systèmes lourd, complexe et robuste permettant de faire de la haute disponibilité.
C’est tout à fait fonctionnel et stable. Je peux éteindre un serveur sans impacter la prod.
Pour autant, tout le matériel du monde ne permettra jamais de rendre résiliant un logiciel serveur créé par des personnes n’ayant aucune conscience de ce que « haute disponibilité » veut dire.
De fait, et tant que ces gens existeront, les administrateurs systèmes auront besoin de virtualisation pour avoir une chance de faire correctement leur travail.
Et pour ceux qui ont la chance de n’utiliser que des services serveur correctement conçus, la virtualisation permet d’utiliser au mieux les ressources matérielles et d’ajouter un niveau de sécurité supplémentaire.