Table of Contents
LSTP : Installation et Configuration LTSP 5
Table of Contents
Présentation
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 :
- Le client léger ne prend en charge que les fonctions de base telles que l’affichage, le clavier, la souris et le son ;
- Le serveur gère l’ensemble des ressources nécessaire au fonctionnement du CL. Toutes les applications s’exécutent sur le serveur, et elles s’affichent simplement sur le CL.
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.
Principe de fonctionnement
2 éléments définissent un CL :
- Lors de son démarrage sur le réseau en PXE, il va monter par le réseau son environnement de travail présent sur le serveur LTSP : il n’a pas besoin de disque dur ;
- Il peut exécuter des applications en utilisant ses propres ressources ou celles du serveur d’application.
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 :
- DHCP pour fournir la configuration IP, le chemin vers l’environnement à monter, l’adresse IP du serveur TFTP et le chemin du chargeur d’amorçage PXE ;
- TFTP pour réaliser le boot PXE des clients légers (récupérer le noyau linux) ;
- NFS pour mettre à disposition l’environnement de travail, c’est à dire la racine / montée par les CL via le réseau lors de leur démarrage ;
- SSH pour sécuriser l’identification des utilisateurs et éventuellement les échanges graphiques entre le serveur et les clients légers ;
- LDM pour lancer les applications et gérer la liaison entre le serveur LTSP et ses clients légers. Dans notre structure ce service sera installé sur le serveur d’application.
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.
Types de client léger
Il existe trois types d’environnements différents pour les clients légers :
- L’environnement léger: Le CL lance une session X sur le serveur LTSP et tout est exécuté sur celui-ci puis « déporté » sur l’écran du CL dans un tunnel X : le client se comporte alors comme un terminal X et a besoin de peu de ressources (128 à 256 Mo de RAM).
- L’environnement hybride (LOCAL-APP): Il s’agit d’un environnement léger dans lequel certaines applications sont exécutées avec les ressources locales du CL et d’autres sur le serveur LTSP. Il faut que le CL dispose de suffisamment de RAM. Si on exécute un logiciel qui demande 50 Mo de stockage en RAM et que le poste n’a que 32Mo, le CL crashera.
- L’environnement lourd (FAT CLIENT): Le CL lance une session X de son environnement et exécute les applications avec ses propres ressources locales : le serveur LTSP est alors seulement utilisé pour identifier l’utilisateur et mettre à disposition des CL leur environnement de travail. Cette configuration permet d’alléger le serveur d’application mais nécessite des CL plus performants. Il est également possible de créer plusieurs environnements sur un même serveur LTSP et de les assigner à des groupes de CL.
L’environnement chroot
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.
Configuration matérielle des CL et du serveur
Configuration pour environnement léger
- CPU : au moins 533 Mhz
- Mémoire : 256 Mo
- Carte réseau : 100 Mbs (usage normal de 0,5 à 2 mbit mais pic possible à 70 Mbs si consultation de contenu multimédia sur le serveur LTSP)
Configuration pour environnement lourd
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 :
- Pour les CL, c’est le déport d’affichage graphique qui circule sur le réseau.
- Pour les FC, à chaque fois qu’un utilisateur lance une application, cette application est chargée via le réseau dans la RAM du FC puis exécutée par son processeur. Plus la quantité de RAM demandée par l’application sera élevée, plus le temps nécessaire au lancement de l’application sera élevé.
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.
Configuration pour le serveur d’application
Mémoire
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.
Processeur
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.
Stockage
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.
Réseau
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).
Installation et configuration du serveur
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.
Installation des serveurs
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.
- Méthode élément par élément: Cette méthode regroupe 4 paquets principaux :
- ltsp-server: Ce paquet est à installer sur le serveur de démarrage. Il permet d’installer un serveur LTSP + un serveur TFTP + un serveur NFS + un client OpenSSH.
- ldm-server: Ce paquet est à installer sur le serveur d’application. Il permet d’installer un serveur LDM + un serveur OpenSSH.
- isc-server-dhcp [Facultatif]: Ce paquet s’installe sur un serveur dédié ou non (il peut être installé sur le serveur de démarrage). Il permet d’installer un serveur DHCP. Si on posséde déjà un serveur DHCP (linux), alors vous n’êtes pas obligé d’en installer un autre.
- ltsp-docs [Facultatif]: Ce paquet s’installe sur le serveur de démarrage. Il permet d’obtenir la documentation de LTSP.
- Méthode centralisée: Cette méthode nécessite un seul paquet : ltsp-server-standalone Il installe ltsp-server + ltsp-docs + ldm-server + isc-server-dhcp + openssh-serveur + openssh-client
Installer le serveur de démarrage
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é.
Installer le serveur d’application
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).
Configuration de LSTP
Déclarer l’export NFS
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)
- /opt/ltsp : dossier sur lequel s’applique les autorisations ;
- * : représente « tout le monde » pour qui s’applique les instructions ;
Redémarrer le service nfs-kernel-server
:
service nfs-kernel-server restart
Construire un environnement chroot
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
- –arch i386 : Spécifie que l’environnement doit être en 32 bits ;
- –chroot Nom_Du_Chroot : Spécifie le nom du chroot (de la racine de l’environnement client) ;
- –prompt-rootpass : Spécifie qu’il faut demander la saisie d’un mot de passe super-utilisateur de l’environnement durant la construction de celui-ci.
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
- –fat-client-desktop : Spécifie qu’on exécute toutes les applications, ou presque, localement ;
- gnome-desktop-environment : Spécifie qu’il faut utiliser l’environnement de bureau GNOME.
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
.
Configurer le serveur DHCP
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
Configuration pour un seul environnement
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
Configuration pour plusieurs environnements
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 l’environnement
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
Récupérer la clé publique du serveur d’application
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
Configuration des clients légers
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 :
Correction des erreurs.
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.