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 complexes (par exemple MATLAB), il est parfois utile de démarrer à distance l'interface utilisateur graphique. Pour ce faire, on utilise généralement SSH avec redirection X11, mais la performance est souvent trop lente, tout comme avec MobaXTerm ou Putty. Une meilleure option est d'utiliser VNC pour se connecter à un ordinateur à distance.

Configuration

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 afin que l'autorité de signature présentée par le vncserver soit connue. Si un message est affiché rapportant 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 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 C:\full\directory\pathto\cacert.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. Pour créer des tunnels sécuritaires entre votre ordinateur et le vncserver comme décrit ci-dessous, vous devez ouvrir une fenêtre de terminal et faire exécuter la commande ssh, ce qui peut être fait avec le standard PowerShell de Windows 10, à partir de la mise à jour 1809 d'octobre.

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 :

Linux Version Install Command
Debian, Ubuntu sudo apt-get install tigervnc-viewer
Fedora, CentOS, or 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 VNC auquel vous connecter. Il peut s'agir d'un vncserver persistant sur un nœud VDI dédié de Graham ou d'un vncserver que vous démarrez sur un nœud de calcul. Comme VNC n'est pas un serveur pour des tâches lourdes, vous pouvez certainement ouvrir une session légère sur un nœud de connexion.

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 réguliers, les nœuds VDI sont des ressources partagées dont le rôle n'est pas d'exécuter des calculs en lots; ceci est le rôle des nœuds de calcul. Nous vous demandons donc de n'utiliser les nœuds VDI que pour les tâches graphiques, par exemple le prétraitement graphique comme la génération de maillage (mesh) et le post-traitement graphique comme la visualisation et les environnements de développement intégrant des graphiques.

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 connexion

Pour utiliser sur votre ordinateur à distance une application peu exigeante qui requiert peu de mémoire, de temps CPU ou de GPU, vous pouvez démarrer un serveur VNC sur un nœud de connexion et vous y connecter ainsi :

1) Démarrez un serveur VNC (pour 3600 sec. ou plus s'il y a lieu) et déterminez quel est le port qui écoute.

[laptop:~] ssh graham.computecanada.ca

[gra-login1:~] vncserver -MaxConnectionTime 3600
  Log file is /home/username/.vnc/gra-login1:3.log

[gra-login1:~] grep port /home/username/.vnc/gra-login1:3.log
  vncext: Listening for VNC connections on all interface(s), port 5903

[gra-login1:~] exit

2) Établissez un tunnel SSH vers le serveur VNC.

[laptop:~] ssh graham.computecanada.ca -L 5901:gra-login1:5903

3) Connectez-vous au serveur VNC à partir de votre ordinateur.

Si vous travaillez sous Linux, ouvrez un terminal et lancez

[laptop:~] vncviewer localhost:5901

Sous MacOS ou Windows, cliquez sur l'icône de l'application TigerVNC Viewer qui se trouve sur votre ordinateur et entrez l'information sur le localhost:port dans la boîte de dialogue affichée. Tenez compte des limites imposées sur les nœuds de connexion en termes d'utilisation de la mémoire et du temps de CPU; sur Graham ces limites sont de 8Go de mémoire et de 1 heure d'utilisation de CPU par processus, selon ulimit -t -v. Si vous avez besoin de plus de ressources, utilisez des nœuds de calcul ou des nœud VDI comme décrit dans la présente page.

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é.

1) Démarrer un serveur VNC

Avant de démarrer votre serveur VNC, connectez-vous à une grappe (par exemple, Cedar) et créez une allocation sur un nœud de connexion avec la commande salloc (limite de 3 heures). Par exemple, pour demander une tâche interactive qui utilise 4 CPU et 16Go de mémoire, vous pourriez utiliser

[username@cedar5:~/project] salloc --time=1:00:00 --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

2) Établissez un tunnel 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.

3) Connectez-vous au serveur VNC.

Sous Linux, ouvrez une nouvelle fenêtre de terminal et connectez votre client VNC à localhost:port. Dans le prochain exemple, la commande 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.


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

Sous MacOS ou Windows, cliquez sur l'icône de l'application TigerVNC Viewer et entrez l'information sur le localhost:port. Dans le cas de notre exemple, nous avons ainsi thumbMac Tiger VNC Viewer Connection Details Dialogue Box


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 quand vous invoquez vncviewer. Cependant, il peut être impossible sous Windows de définir un tunnel SSH avec le port local 5900. Une fois la connexion établie, le bureau Linux MATE sera affiché.

Pour lancer un terminal, cliquez sur Applications->System Tools->MATE Terminal dans le menu du haut. Vous pouvez ajouter un raccourci au menu du haut en faisant un clic droit sur MATE Terminal puis en cliquant sur Add this launcher to panel. Enfin, pour démarrer un programme, lancez la commande comme vous le feriez dans une session bash, par exemple avec xclock. Pour les programmes plus complexes comme MATLAB, chargez le module et lancez la commande matlab.

Autres points importants

Mot de passe

Pour réinitialiser votre mot de passe, utilisez la commande

[gra-login1:~] vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

Vous pouvez choisir de supprimer définitivement votre configuration VNC incluant votre mot de passe en supprimant votre répertoire ~/.vnc. La prochaine fois que vous lancerez vncserver, une invite vous demandera de définir un nouveau mot de passe.

Tuer le vncserver

Si un vncserver n'est plus nécessaire, tuez-le ainsi :

[gra-login1:~] vncserver -list

TigerVNC server sessions:

X DISPLAY#	  PROCESS ID
:44		      27644

[gra-login1:~] vncserver -kill :44
Killing Xvnc process ID 27644

Pour tuer tous les serveurs en fonction sur un nœud, utilisez pkill Xvnc -u $USER.

Connexions multiples

Pour lister les serveurs VNC en fonction sous votre nom d'utilisateur, utilisez la commande vncserver -list. Pour vous reconnecter à un vncserver particulier sur un nœud de connexion 1) établissez à nouveau un tunnel 2) lancez à nouveau vncserver -list. Il est possible d'établir plusieurs connexions à distance à un bureau vcnserver existant, par exemple pour établir une deuxième connexion à partir de votre ordinateur à la maison en conservant la connexion initiale de votre ordinateur au bureau. Pour ce faire, la connexion initiale doit être établie avec l'option vncserver -AlwaysShared, autrement les connexions qui suivront fermeront par défaut la connexion initiale.

Échecs de connexion

Des échecs répétés à établir une nouvelle connexion vncserver/vncviewer pourraient être causés par un tunnel SSH existant sur votre ordinateur qui bloquerait les ports. Pour déterminer la présence de tels tunnels et les tuer, ouvrez une fenêtre de terminal sur votre ordinateur et lancez la commande ps ux | grep ssh suivie de kill PID.

Déverrouiller l'écran de veille

Si votre écran de veille VNC s'éteint en raison du délai d'affichage et qu'un mot de passe vous est demandé, entrez le mot de passe de votre compte sur la grappe et non le mot de passe vncserver. Si le bureau MATE est en cours d'exécution et que l'écran de veille ne se déverrouille pas, essayez avec la commande killall -9 .mate-screensaver. Ceci ne devrait plus se produire car l'écran de veille VNC a été désactivé sur les grappes de Calcul Canada.

Logiciel

Comparés aux de nœuds de calcul, les nœuds VDI sont composés de matériel spécial, ont une configuration de serveur virtuelle et des couches supplémentaires de modules. Avant d'utiliser des applications graphiques sur gra-vdi, il faut bien connaître les modules qui sont disponibles et savoir lesquels choisir pour obtenir 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 votre chemin pour installer et utiliser les paquets nix dans votre environnement personnel nix.

o Installation

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


Votre environnement nix persiste entre vos connexions; vous n'avez donc qu'à lancer une fois la commande d'installation.

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


Avec cette commande, les logiciels installés aujourd'hui seront encore disponibles la prochaine fois que vous chargez le module nix.

o Applications OpenGL

Pour qu'OpenGL accéléré fonctionne, 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 disponibles sur gra-vdi et tous les paquets utilisant OpenGL que vous développez et installez via nix. Il faut toutefois faire ces ajustements pour les logiciels prédéveloppés que vous téléchargez et les programmes que vous compilez sans utiliser 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


Il est aussi possible de précharger vglfaker.so via la variable d'environnement LD_PRELOAD, ce qui n'est généralement pas une bonne idée car ceci s'applique à tous les binaires sans exception. Ceux qui requièrent un vglfaker.so différent de celui défini dans LD_PRELOAD vont donc échouer. Dans certains cas cependant, ceci peut être utilisé de façon sécuritaire dans des scripts encapsuleurs (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 avec les grappes. Les modules devraient bien fonctionner avec des applications graphiques sur les nœuds de calcul, mais certains peuvent présenter des problèmes de stabilité sur gra-vdi, par exemple des plantages inattendus ou des comportements étranges tesl des menus manquants ou des fenêtres transparentes. Pour contourner ces problèmes, utilisez un paquet nix équivalent tel que décrit précédemment, ce qui pourrait aussi améliorer la performance graphique. Le module nix offre plusieurs paquets open-source optimisés et stables pour gra-vdi, mais n'offre pas de modules commerciaux équivalents pour ANSYS, COMSOL ou StarCCM. Vous pouvez trouver ceux-ci en chargeant plutôt le module SnEnv.

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

CernVM File System