Linux Terminal Server Project (LTSP) permet de démarrer des Clients Légers (CL) à partir d’un serveur LTSP. LTSP diminue les coûts matériels en permettant l’utilisation de machines obsolètes en tant que CL, conduisant à une administration réduite du fait que les frais généraux soient destinés au maintien du serveur LTSP. Lorsqu’un CL échoue, il peut simplement être remplacé sans perte de données ou réinstallation du système d’exploitation.
Le concept est le suivant :
Cette solution est avant-tout avantageuse pour les établissements qui n'ont pas les moyens financiers pour investir dans de nouveaux postes de travail. Il est plus simple d’investir 5000 € pour un serveur qui fera fonctionner 20 CL, que 10 000 € pour 20 nouveaux ordinateurs.
Ce tutoriel explique comment installer et configurer un serveur LTSP 5 sous Debian 7.11.0. Si vous utilisez une autre distribution (ou version), il pourrait y avoir quelques divergences de paramétrage.
Toutes les manipulations à venir seront à effectuer en tant que super-utilisateur de la machine.
2 éléments définissent un CL :
L’identification des utilisateurs, les communications sont sécurisées par le protocole SSH, qui est géré par le gestionnaire d’affichage LDM spécialement créé pour LTSP.
Un serveur LTSP regroupe les services suivants :
Il est possible d’utiliser NBD à la place de NFS : le boot du CL est censé être plus rapide (image compressée) et NBD devrait économiser de la bande passante sur le réseau. Par contre, il est nécessaire à chaque modification de l’environnement du client léger de reconstruire l’image compressée.
Il existe trois types d’environnements différents pour les clients légers :
Pour transformer un ordinateur en CL, il faut exécuter une mini version de GNU/Linux sur le poste de travail. Elle doit être démarrée sur le réseau, car le poste de travail n’a pas obligatoirement de disque dur (et donc on ne peut pas démarrer une version complète).
Cette mini installation est stockée sur le serveur. Elle est personnalisée afin de pouvoir démarrer sur le réseau et s’appelle un environnement chroot (environnement racine).
La raison pour laquelle elle s’appelle un environnement chroot est que, sur le serveur, on va créer un (ou plusieurs) nouvel environnement GNU/Linux dans le répertoire /opt/ltsp/Nom_Du_Chroot
(un répertoire par environnement, avec un nom différent). Dans ce répertoire on retrouve une arborescente identique à une machine GNU/Linux de base (/etc, /home, /bin…).
En utilisant la commande chroot on peut changer de répertoire racine pour gérer les environnements, afin d’y aller vos logiciels ou encore faire des mises à jour.
La configuration du serveur LTSP en Fat Client (FC) va nécessiter moins de ressources du serveur. Par contre, les ressources réseaux sont sollicitées différemment :
En claire, le lancement d’une application en FC peut être plus long qu’en environnement léger (par contre, une fois chargée, l’utilisation de cette application doit être plus rapide qu’en environnement léger).
C’est pourquoi il est préférable d’utiliser le service NBD (car les fichiers sont compressés et donc moins volumineux) plutôt que NFS, lorsque les CL sont configurés en FC.
La Mémoire du serveur d’application se calcule de la manière suivante :
256 + (192 * Nb_CL) MB
pour gérer 20 CLs, au moins 4 Go de mémoire est nécessaire (Si les clients ont un usage graphique gourmand, doubler cette valeur précédente).
Si on n'a pas assez de mémoire dans le serveur, on constatera que le serveur devra utiliser le disque dur pour créer de la mémoire virtuelle. Un disque dur étant beaucoup plus lents, on remarquera des lenteurs.
Le processeur dont on a besoin dépend entièrement des programmes que l'on envisage d’utiliser. Les jeux interactifs nécessiteront beaucoup plus de puissance de calcul qu’un logiciel de traitement de texte. Si on envisage d’utiliser des programmes comme Java ou Flash player, ceux-ci peuvent consommer beaucoup de puissance de traitement. Pour un modèle mixte, c’est-à-dire certaines personnes qui jouent à TuxMath, quelques personnes naviguant sur le Web, et d’autres personnes qui utilisent OpenOffice, un processeur de 2GHz ou mieux devrait être en mesure de gérer efficacement 20 personnes avec quelques retards mineurs. Un processeur 3GHz serait mieux.
Pour les réseaux plus importants, passer à un SMP (Symmetric Multi Processing) ou à un serveur à processeurs multiples peut être avantageux.
Afin de servir un grand nombre de clients, il vaut la peine de configurer plusieurs LTSP serveurs, chacun manipulant certains des terminaux.
Il est conseillé d’utiliser du RAID. En plus de préserver les données lorsqu’un disque unique échoue, il améliore les performances (en particulier les performances en lecture, qui est le type d’accès au fichier le plus courant). Pour les personnes à faible budget, la configuration d’un RAID 1, avec 2 disques SATA avec NCQ fournira de bons résultats.
Afin de servir plus de 20 utilisateurs, il est recommandé d’utiliser une connexion Ethernet de l’ordre du Gigabit. Au moins 1 Gibatbit est nécessaire (surtout pour le multimédia).
L’objectif, est de permettre à des clients légers (CL), d'avoir accès à un environnement de bureau exploitable sous Debian GNOME 3.
Pour cela on va mettre en service un serveur de démarrage qui va fournir aux CL les informations et fichiers nécessaires à leur démarrage sur le réseau. De plus, un serveur d’application pour contenir les ressources, les logiciels et le système d’exploitation qu’utiliseront les CL, sera requis.
Petite précision, il est possible de séparer les 2 parties en mettant en place un serveur de démarrage avec LTSP, TFTP, NFS et DHCP et un serveur d’application avec un (ou plusieurs) environnement(s) de travail dans lequel seront installés les applications qu’utiliseront les utilisateurs.
Ici on va créer un unique serveur indépendant, qui va contenir tous les composants logiciels et matériels nécessaires à la mise en service d’un réseau LTSP, ou bien de séparer la partie démarrage sur le réseau et la partie gestion des ressources.
Il existe 2 méthodes d’installation de LTSP. La première est destinée à séparer les éléments d’une infrastructure LTSP. Quant à la deuxième, elle permet de centraliser sur une seule machine tous les services nécessaires au fonctionnement d’une infrastructure LTSP.
Exécuter la commande suivante :
apt-get install ltsp-server ltsp-docs isc-dhcp-server
Le serveur DHCP retournera une erreur lors de la tentative de démarrage : ceci est normal car il n’est pas encore configuré.
Exécuter la commande suivante :
apt-get install ldm-server
Une fois le serveur installé, on peut déjà installer toutes les applications (apt-get install …) de bureau qui seront utilisées par les CLs (par exemple, LibreOffice).
Les CLs auront besoin de monter un environnement (racine /), stocké dans le répertoire /opt/ltsp/
, grâce au serveur NFS. Pour qu’il puisse effectuer le montage il faut d’abord autoriser l’accès dans fichier /etc/exports
.
Éditer le fichier exports :
nano /etc/exports
Ajouter la lignes suivante à la fin du fichier :
/opt/ltsp *(ro,no_root_squash,async,no_subtree_check)
Redémarrer le service nfs-kernel-server
:
service nfs-kernel-server restart
Pour construire l’environnement des CLs sur le serveur LTSP, on utilise la commande ltsp-build-client
.
Pour un environnement léger ou hybride, la commande est la suivante :
ltsp-build-client --arch i386 --chroot Nom_Du_Chroot --prompt-rootpass
Pour un environnement lourd, la commande est la suivante :
ltsp-build-client --arch i386 --chroot Nom_Du_Chroot --fat-client-desktop gnome-desktop-environment --promptrootpass
Dans le cas de l’environnement hybride ou lourd, les applications doivent directement être installées dans l’environnement chroot, pour être exécutées avec les ressources locales du CL.
Pour cela, il faut se chrooté à la racine de cet environnement, à l’aide de la commande suivante :
ltsp-chroot --mount-dev --mount-proc --arch Nom_Du_Chroot
Une fois dans l’environnement, on peut installer les applications de la même manière que sur une machine normale, en utilisant la commande apt-get install
. Par exemple, pour Firefox :
apt-get install firefox-esr
Pour valider les modifications et sortir de l’environnement, utiliser la commande suivante :
exit
Il est très important de quitter l'environnement de cette façon, sinon on risque à un Kernel panic l’or du démarrage d’un CL ;
Dans le cas de ces 2 environnements, le mode hybride ou fatclient, devra, être activé dans le fichier /opt/ltsp/hybridclient/etc/lts.cfg
.
Pour que le serveur DHCP fonctionne il faut lui indiquer dans sa liste d’interfaces réseau (eth0, eth1…), située dans le fichier /etc/default/isc-dhcp-server
, le ou les noms des interfaces connectées au réseau LTSP.
Une interface du serveur de démarrage est connectée au switch qui relie tous les éléments du réseau LTSP, c’est donc le nom de cette interface qu’il faudra renseigner.
Éditer le fichier isc-dhcp-server :
nano /etc/default/isc-dhcp-server
Repérer la ligne suivante :
INTERFACES=""
Renseignez entre les guillemets le ou les noms des interfaces réseau que vous utilisez pour vous relier au réseau LTSP ;
Maintenant, il faut configurer le fichier /etc/dhcp/dhcpd.conf
, qui va contenir toute la configuration du serveur DHCP. La configuration du fichier dépendra du nombre d’environnements à créer.
Sauvegarder le fichier par défaut dhcpd.conf :
mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.save
Crér un nouveau fichier dhcpd.conf :
nano /etc/dhcp/dhcpd.conf
Configurer le fichier de la même manière que ci-dessous (à adapter), en retirant les commentaires :
authoritative; subnet 192.168.1.0 netmask 255.255.255.0 { # Adresse sous-réseau range 192.168.1.50 192.168.1.60; # Étendue DHCP option domain-name "example.com"; # Nom du serveur DNS option domain-name-servers 192.168.1.1; # Adresse du serveur DNS option broadcast-address 192.168.1.255; # Adresse de broadcast option routers 192.168.1.1; # Adresse de la passerelle next-server 192.168.1.253; # Adresse du serveur TFTP option subnet-mask 255.255.255.0; # Adresse masque du réseau option root-path "/opt/ltsp/hybridclient"; # chemin de l'environnement hybride if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" { filename "/ltsp/hybridclient/pxelinux.0"; # chemin du chargeur d'amorçage PXE } else { filename "/ltsp/hybridclient/nbi.img"; # chemin charg. d'amorç. Etherboot } }
Enregistrer les modifications ;
Redémarrer le service isc-dhcp-server
:
service isc-dhcp-server restart
A chaque environnement il faudra définir un groupe dans lequel sera renseigné les CL ayant accès à l'environnement. La configuration (principale) d’un groupe sera la même quelque soit l'environnement.
Créer un nouveau fichier dhcpd.conf
:
nano /etc/dhcp/dhcpd.conf
Configurer le fichier de la même manière que ci-dessous (à adapter), en retirant les commentaires :
authoritative; subnet 192.168.1.0 netmask 255.255.255.0 { # Adresse sous-réseau option broadcast-address 192.168.1.255; # Adresse de broadcast range 192.168.1.50 192.168.1.60; # Étendue DHCP4 option subnet-mask 255.255.255.0; # Addresse masque du réseau option routers 192.168.1.1; # Adresse de la passerelle option domain-name-servers 192.168.1.1; # Adresse du serveur DNS option domain-name "example.com"; # Nom du serveur DNS next-server 192.168.1.253; # Adresse IP du serveur TFTP }
Configurer ensuite les groupes (dans le sous-réseau) de la manière suivante, en retirant les commentaires :
Group { # next-server 192.168.1.253; # @IP du serveur TFTP si plusieurs option root-path "/opt/ltsp/hybridclient"; # Chemin de l'environnement if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" { filename "/ltsp/hybridclient/pxelinux.0"; # Chemin du charg. d'amorç. PXE } else { filename "/ltsp/hybridclient/nbi.img"; # chemin charg. d'amorç. Etherboot } # On définit ensuite chaque CL dans un host # Client léger N°1 host Nom_CL { hardware ethernet 00:fc:b9:15:13:gh; # @MAC du CL # fixed-address 192.168.1.50; # @IP du CL [Facultatif] } # (...) }
On peut assigner des adresses IP fixes (fixed-address) aux hôtes ou encore, si on a plusieurs serveurs TFTP, indiquer l’adresse des serveurs TFTP (next-server) en fonction du groupe ;
Enregistrer les modifications ;
Redémarrer le service isc-dhcp-server :
service isc-dhcp-server restart
Configurer le fichier /opt/ltsp/Nom_Du_Chroot/etc/lts.cfg
en renseignant l’adresse IP du serveur d’application, en activant le mode hybride ou fatclient si besoin et en configurant quelques options supplémentaires.
Éditer le fichier lts.conf
:
nano /opt/ltsp/Nom_Du_Chroot/etc/lts.conf
Renseigner les options suivantes, en retirant les commentaires :
[default] # Section par défaut LTSP_CONFIG=True # Activer la configuration NBD_SWAP=True # Utiliser le swap LDM_LANGUAGE=fr_FR.UTF-8 # Configurer langue française XKBLAYOUT=fr # Régler le clavier en français LDM_SERVER="192.168.1.253" # Indiquer @IP du serveur d'application SOUND=True # Activer le son LOCALDEV=True # Activer le montage de périphérique X_NUMLOCK=True # Activer le pavé numérique CONFIGURE_X=False # Désactiver la conf. du serveur d'app. SYSLOG_HOST=SERVER # Enregistrer logs sur serv. démarrage # Activer l'environnement hybride # LOCAL_APPS=True # Activer le mode hybride # LOCAL_APPS_MENU=True # Autorise l'exécution des applications # LOCAL_APPS_MENU_ITEMS="firefox-esr" # Liste des applications # Ou, activer l'environnement fatclient # LTSP_FATCLIENT=True # Activer le mode fatclient # Vous pouvez également assigner une configuration spécifique à un CL, en créant une # nouvelle section avec son adresse MAC # [00:01:GE:AE:45:31] # Section du CL 00:01:GE:AE:45:31 # LTSP_CONFIG=True # Activer la configuration # LDM_LANGUAGE=fr_FR.UTF-8 # Langue française # XKBLAYOUT=fr # Régler le clavier français
Enregistrer les modifications ;
Renseigner l’option LOCALDEV=True
n’est pas suffisant pour pouvoir monter des périphériques, telle qu’une clé USB. En effet, l’utilisateur connecté doit également faire partie du groupe fuse en rapport au logiciel fuse
qui permet, entre autres, de monter un système de fichier. Celui-ci a été installé sur le serveur d’application en même temps que le paquet ldm-server
.
Pour ajouter un utilisateur au groupe fuse, utiliser la commande suivante :
adduser Nom_Utilisateur fuse
Un CL ne pourra s’identifier sur un serveur d’application de manière sécurisée que s’il possède dans son environnement la clé publique de celui-ci.
Récupérer la clé publique du serveur d’application :
ltsp-update-sshkeys @IP_Serveur_Apps
La clé est sauvegardée dans le fichier /etc/ltsp/ssh_known_hosts.auto
;
Mettre à jour les clés publiques de(s) l’environnement(s) :
ltsp-update-sshkeys
Si les clients ont plusieurs cartes réseaux, il faut toutes les désactiver, sauf la carte utilisée pour le boot réseau. Si on laisse activé une carte réseau inutilisée, celle-ci tentera également de booter sur le réseau et empêchera le démarrage du CL.
La configuration de l’infrastructure est maintenant terminée, on peut démarrer les clients.
Maintenant, on doit pouvoir se connecter à l’aide d’un utilisateur du serveur d’application et accéder à une session utilisateur :
Si ça ne fonctionne pas et qu'en retour on a un message du type Not found @IP
, alors vérifier que l’adresse IP du serveur d’application est correctement renseigné dans le fichier lts.conf
et que celui-ci soit bien connecté au réseau.
Ou encore, si on un message du type Connection refused
, il faut s'assurer de bien avoir récupéré la clé publique du serveur d’application et d’avoir mis à jour l’environnement client.