VNC

From CC Doc
Jump to: navigation, search
This page is a translated version of the page VNC and the translation is 100% complete.

Other languages:
English • ‎français
MATLAB exécuté dans VNC

Pour certains paquets (par exemple MATLAB), il est parfois utile de démarrer une interface utilisateur graphique. Il est préférable d'utiliser SSH avec redirection X11, mais la performance est souvent trop lente. Une option est d'utiliser VNC pour se connecter à un ordinateur à distance.

Installation

Pour vous connecter au serveur VNC, vous devez d'abord installer un client VNC sur votre ordinateur. Nous recommandons le paquet TigerVNC disponible pour Windows et Mac et pour la plupart des distributions Linux (voir ci-dessous). Nous abordons ici le téléchargement, l'installation et la configuration de TigerVNC de manière sécuritaire pour chaque système d'exploitation. Les étapes de configuration de certificat ne sont requises que pour se connecter aux nœuds VDI pour que l'autorité de signature présentée par le vncserver soit connue. Si un message est affiché au sujet d'un problème avec un certificat, soit qu'il n'est pas configuré correctement, soit que vous n'êtes pas connecté à notre serveur; n'entrez pas votre mot de passe.

Windows

Téléchargez et exécutez la plus récente version de l'installateur tigervnc64-1.9.0.exe. Les cases Register new TigerVNC Server as a system service et Start or restart TigerVNC service ne doivent pas être cochées; ces options servent à partager votre bureau et non à vous connecter aux grappes. Cliquez ensuite pour télécharger cacert.pem dans un répertoire local. Configurez les paramètres par défaut en cliquant sur l'icône TigerVNC Viewer. Dans la fenêtre VNC Viewer: Connection Details, cliquez sur Options -> Security et cochez toutes les cases sauf Encryption None. Entrez votre C:\full\directory\pathto\cert.pem dans le champ Path to X509 CA Certificate. Cliquez sur OK, puis sur Connect; les paramètres ne sont pas sauvegardés si vous ne cliquez pas sur Connect.

MacOS

Téléchargez et exécutez la plus récente version de l'installateur tigerVNC-x.y.z.dmg. Configurez les paramètres par défaut en cliquant sur l'icône de TigerVNC Viewer. Dans la fenêtre VNC Viewer: Connection Details, cliquez sur Options -> Security et cochez toutes les cases sauf Excryption None. Entrez votre /etc/ssl/cert.pem dans le champ Path to X509 CA Certificate. Cliquez sur OK, puis sur Connect; les paramètres ne sont pas sauvegardés si vous ne cliquez pas sur Connect.

Linux

Installez TigerVNC Viewer pour votre version de Linux :

Version Commande d'installation
Debian, Ubuntu sudo apt-get install tigervnc-viewer
Fedora, CentOS, RHEL sudo yum install tigervnc
Gentoo emerge -av net-misc/tigervnc

Lancez TigerVNC par le menu des applications ou en entrant vncviewer en ligne de commande. Dans la fenêtre VNC Viewer: Connection Details, cliquez sur Options -> Security et cochez toutes les cases sauf Excryption None. Entrez le chemin approprié dans le champ Path to X509 CA Certificate :

Version Path to X509 CA Certificate
Debian, Ubuntu /etc/ssl/certs/ca-certificates.crt
Fedora, CentOS, or RHEL /etc/pki/tls/certs/ca-bundle.crt
Gentoo /etc/ssl/certs/ca-certificates.crt

Cliquez sur OK, puis sur Connect; les paramètres ne sont pas sauvegardés si vous ne cliquez pas sur Connect.

Connexion

Vous avez maintenant besoin d'un serveur auquel vous connecter, soit

  • un vcnserver sur des nœuds VDI dédiés faisant partie d'un vcnserver temporaire sur Graham ou
  • d'un vcnserver temporaire que vous démarrez sur le nœud de calcul d'une grappe.

Nœuds VDI

gra-vdi.computecanada.ca

Sur Graham se trouvent des nœuds de connexion VDI dédiés connus sous le nom de gra-vdi; ils offrent une interface graphique, OpenGL accéléré et l'accès partagé aux systèmes de fichiers /home, /project et /scratch.

Pour vous connecter, démarrez VNC (tigervnc) et entrez l'adresse gra-vdi.computecanada.ca. Un écran de connexion sera affiché et vous pourrez vous connecter en utilisant vos identifiants Calcul Canada.

Comme c'est le cas pour les nœuds de connexion réguliers, les nœuds de connexion VDI sont des ressources partagées et contrairement aux nœuds de calcul, ne devraient pas servir au traitement en lots (batch). Veuillez donc limiter votre usage aux tâches utilisant des graphiques, par exemple lors du prétraitement pour la génération du maillage, pour la visualisation en post-traitement ou le travail dans des environnements de développement graphiques intégrés (IDE).

Si vous voulez effectuer des tâches de calcul dans une interface graphique, veuillez utiliser un nœud de calcul avec la commande salloc comme décrit dans la section Nœuds de calcul ci-dessous; la mémoire et les CPU de gra-vdi restent ainsi complètement disponibles aux autres utilisateurs pour les besoins de visualisation graphique interactive.

Nœuds de calcul

Si aucun nœud VDI n'est disponible, vous pouvez démarrer un serveur VNC dans un nœud de calcul puis vous y connecter à partir de votre ordinateur par redirection de port. Vous obtenez ainsi un accès dédié au serveur sans toutefois bénéficier de toutes les fonctionnalités graphiques ou de OpenGL accéléré.

Démarrer un serveur VNC

Avant de démarrer votre serveur VNC, utilisez la commande salloc pour réserver un nœud dans lequel se fera l'exécution. Par exemple, pour demander une tâche interactive utilisant 4 CPU et 16Go de mémoire, vous pourriez utiliser la commande

[username@cedar5:~/project] salloc --time=1:00:0 --cpus-per-task=4 --mem=16000 --account=def-username
salloc: Pending job allocation 20067316
salloc: job 20067316 queued and waiting for resources
salloc: job 20067316 has been allocated resources
salloc: Granted job allocation 20067316
salloc: Waiting for resource configuration
salloc: Nodes cdr768 are ready for job
[username@cdr768:~/project]

Une fois la tâche interactive démarrée, il faut définir une variable d'environnement pour éviter certaines erreurs répétitives.

[username@cdr768:~/project] export XDG_RUNTIME_DIR=${SLURM_TMPDIR}

Ensuite, démarrez un serveur VNC avec vncserver. Portez attention au nœud dans lequel la tâche est exécutée; en cas de doute, utilisez la commande hostname pour vérifier de quel nœud il s'agit. Si vous faites ceci pour la première fois, une invite demandera un mot de passe pour votre serveur VNC. VOUS DEVEZ ENTRER UN MOT DE PASSE que vous pourrez changer par la suite avec la commande vncpasswd. Revenons à l'exemple :

[username@cdr768:~/project] vncserver
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
xauth:  file /home/username/.Xauthority does not exist
New 'cdr768.int.cedar.computecanada.ca:1 (username)' desktop is cdr768.int.cedar.computecanada.ca:1
Creating default startup script /home/username/.vnc/xstartup
Creating default config /home/username/.vnc/config
Starting applications specified in /home/username/.vnc/xstartup
Log file is /home/username/.vnc/cdr768.int.cedar.computecanada.ca:1.log

Identifiez le port utilisé par le serveur VNC en consultant le fichier journal.

[username@cdr768:~/project] grep port /home/username/.vnc/cdr768.int.cedar.computecanada.ca:1.log
 vncext:      Listening for VNC connections on all interface(s), port 5901

Tunnel SSH vers le serveur VNC

Une fois le serveur VNC démarré, il faut créer un pont pour que votre ordinateur puisse se connecter directement au nœud de calcul. Cette connexion se fait par un tunnel SSH. Les tunnels sont créés sur votre ordinateur avec la commande SSH usuelle à laquelle une option est ajoutée; la commande est au format ssh user@host -L port:compute_node:port.

Voici un exemple d'une commande de tunnel SSH exécutée sur un ordinateur pour établir une connexion avec un serveur VNC situé sur le nœud gra768 de Graham avec le port 5901 :

[name@local_computer]$ ssh username@cedar.computecanada.ca -L 5902:cdr768:5901

Le tunnel SSH fonctionne comme une session SSH normale et il peut servir entre autres à lancer des commandes. Souvenez-vous cependant que cette session SSH est aussi votre connexion au serveur VNC; si vous terminez la session SSH, vous perdrez votre connexion au serveur VNC. Pour plus d'information, consultez la page Tunnels SSH.

Se connecter au serveur VNC

Pour vous connecter au serveur VNC via le tunnel, le client VNC doit se connecter à localhost:port. Dans le prochain exemple, vncviewer de TigerVNC établit la connexion au serveur VNC actif sur cdr768. Vous devrez entrer le mot de passe que vous avez défini précédemment. Sur MacOS, plutôt que d'entrer vncviewer en ligne de commande, cliquez sur l'icône de l'application TigerVNC Viewer et entrez l'information du localhost:port dans la fenêtre affichée.

Commande avec exemple de sortie'

Question.png
[name@local_computer]$ vncviewer localhost:5902
TigerVNC Viewer 64-bit v1.8.0
Built on: 2018-06-13 10:56
Copyright (C) 1999-2017 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.

Tue Jul 10 17:40:24 2018
 DecodeManager: Detected 8 CPU core(s)
 DecodeManager: Creating 4 decoder thread(s)
 CConn:       connected to host localhost port 5902
 CConnection: Server supports RFB protocol version 3.8
 CConnection: Using RFB protocol version 3.8
 CConnection: Choosing security type VeNCrypt(19)
 CVeNCrypt:   Choosing security type TLSVnc (258)

Tue Jul 10 17:40:27 2018
 CConn:       Using pixel format depth 24 (32bpp) little-endian rgb888
 CConn:       Using Tight encoding
 CConn:       Enabling continuous updates

Le numéro du port (ici 5902) doit correspondre au port local (le premier nombre) que vous avez défini à la création du tunnel SSH. Le port VNC par défaut est le 5900. Si vous avez défini 5900 comme étant le port local pour le tunnel SSH, vous pourriez l'omettre en invoquant vncviewer. Cependant, il peut être impossible sous Windows de définir un tunnel SSH avec le port local 5900.

Une fois la connexion établie, un bureau Linux MATE sera affiché. Pour démarrer un terminal, cliquez sur Applications -> System Tools -> MATE Terminal dans le menu supérieur. Vous pouvez aussi ajouter un raccourci vers le menu supérieur en faisant un click droit sur MATE Terminal puis en cliquant sur Add this launcher to panel. Enfin, pour lancer un programme, appelez la commande comme vous le feriez habituellement dans une session Bash. Par exemple, xclock ferait afficher une horloge que vous pouvez utiliser pour effectuer des tests. Pour les programmes plus complexes comme MATLAB, chargez le module et lancez le programme comme suit :

  [name@server ~]$ module load matlab
  [name@server ~]$ matlab


Bureau MATE verrouillé

Si vous utilisez l'environnement MATE à l'intérieur de votre session VNC et que le bureau est verrouillé, supprimez l'économiseur d'écran dans le nœud où se trouve la session VNC.

  [name@server ~]$ killall -9 .mate-screensav


Réinitialiser la configuration du serveur VNC

Pour réinitialiser votre mot de passe pour le serveur VNC, utilisez la commande vncpasswd. Vous pouvez également supprimer la configuration VNC et votre mot de passe en supprimant votre répertoire ~/.vnc. Au prochain lancement de vncserver, vous pourrez choisir un nouveau mot de passe.

Logiciels

En comparaison des serveurs de nœuds de calcul, ceux des nœuds VDI ont une configuration matérielle et virtuelle particulière et une couche additionnelle de modules logiciels. Avant de choisir un logiciel graphique sur gra-vdi, il est donc important de bien connaître les modules qui sont disponibles et qui produiront les meilleurs résultats.

NIX

Les logiciels libres du module nix sur gra-vdi sont optimisés pour l'utilisation de OpenGL accéléré, lorsque possible. Pour charger ce module, lancez

  [name@gra-vdi4]$ module load nix

Les commandes nix et nix-env se trouvent maintenant dans le chemin pour installer et utiliser les paquets nix dans votre environnement nix personnel.

Installation de logiciels

Pour installer un paquet nix dans votre environnement, cliquez sur l'icône du terminal dans la barre de menus supérieure ou sélectionnez Applications -> System Tools -> Terminal. Vous pouvez maintenant chercher des programmes avec la commande nix search <regexp> et les installer avec nix-env --install --attr <attribute>. Par exemple, pour installer QGIS, utilisez

  [name@gra-vdi4]$ nix search qgis
  [name@gra-vdi4]$ nix-env --install --attr nixpkgs.qgis

Puisque votre environnement nix persiste entre les connexions, la commande d'installation n'est utilisée qu'une seule fois.

  [name@gra-vdi4]$ module load nix
  [name@gra-vdi4]$ qgis

Quel que soit le logiciel que vous installez aujourd'hui, il sera encore disponible la prochaine fois que vous chargerez le module nix.

Applications OpenGL

Pour que OpenGL accéléré puisse fonctionner, il faut ajuster les binaires compilés pour précharger une version appropriée de la bibliothèque vglfaker.so à partir de VirtualGL. Ceci a déjà été fait pour les modules logiciels offerts sur gra-vdi et tous les paquets OpenGL que vous construisez ou installez via nix. Il faut par contre le faire pour tout logiciel préconstruit que vous téléchargez ou tout code que vous compilez sans nix.

Le moyen le plus simple est avec l'utilitaire patchelf de nix pour ajuster le binaire final; installez l'utilitaire avec nix-env --install --attr nixpkgs.patchelf. Par exemple, si vous construisez une application OpenGL pour utiliser les bibliothèques de système et que vous l'installez comme étant ~/.local/bin/myglapp, vous devez ajouter la bibliothèque VirtualGL du système comme première bibliothèque requise.

  [name@gra-vdi4]$ module load nix
  [name@gra-vdi4]$ patchelf --add-needed /usr/lib64/VirtualGL/libvglfaker.so ~/.local/bin/myglapp

Remarquez qu'il est aussi possible de précharger vglfaker.so via la variable d'environnement LD_PRELOAD. Ce n'est pas recommandé, car il s'applique sans discrimination à tous les binaires et que ceux qui requièrent un vglfaker.so différent de celui défini dans LD_PRELOAD vont échouer. Vous pouvez cependant l'utiliser sans danger dans certains scripts enveloppeurs (wrapper scripts).

CVMFS

Les modules logiciels de Calcul Canada se trouvent sous /cvmfs et sont disponibles par défaut quand vous vous connectez à Graham, Cedar et Béluga. Cependant, il ne sont pas chargés par défaut quand vous vous connectez à gra-vdi par tigervnc. Pour les charger, ouvrez une fenêtre terminal et lancez

  [name@gra-vdi4]$ module load CcEnv StdEnv/2016.4
  [name@gra-vdi4]$ module avail

Tous les modules logiciels de Calcul Canada seront maintenant disponibles sur gra-vdi, comme sur les grappes. Même si ces modules devraient fonctionner correctement avec des applications graphiques sur des nœuds de calcul, certains pourraient être instables et se fermer soudainement ou causer des problèmes comme des fenêtres transparentes ou des menus absents. Pour contrer ceci, utilisez un paquet équivalent comme décrit dans la section précédente, ce qui améliorera peut-être la performance graphique. Le module nix offre un grand nombre de paquets libres optimisés et stables pour gra-vdi, mais n'offre pas de modules équivalents pour ANSYS, COMSOL ou StarCCM. Ceux-ci sont trouvés en chargeant plutôt le module SnEnv.

  [name@gra-vdi4]$ module load SnEnv
  [name@gra-vdi4]$ module avail

CernVM File System