Dans cette article, je vous propose de faire un focus sur les deux services VIYA :
Compute Server et
Compute Service.
Si vous souhaitez approfondir le processus de lancement d'une session CAS, je vous invite à lire également mon article
Comprendre le démarrage d’une session CAS
Présentation
Le
Compute Service permet aux clients de soumettre des programmes SAS et des procédures stockées sous forme de job. Le
Compute Server implémente le
Compute Service.
SAS Compute Server
Pour chaque travail traité, le
Compute Server écrit un message dans un journal SAS. Si le travail génère des résultats ODS, des ensembles de données de sortie, des fichiers, etc., la sortie est associée au job.
Compute Service
Le
Compute Service est un microservice SAS Viya qui fournit des points de terminaison API pour demander une session
Compute Server. Le
Compute Service fournit également des points de terminaison API pour créer et gérer des contextes de calcul, des spécifications qui contiennent toutes les informations nécessaires pour exécuter un
Compute Server.
Comment ça marche ?
Maintenant que les présentations sont faites, regardons d'un peu plus près ce qu'il se passe lorsqu'un utilisateur soumet du code au Compute Server. Dans l'explication ci-dessous je vous présente la "cinématique" qui se déroulé lorsque un utilisateur souhaite soumettre un job. L'exemple ci-dessous est simplifier. Si vous souhaitez en savoir plus, je vous invite à lire la documentation officielle disponible :
SAS® Viya® 3.5 Administration: Programming Run-Time Servers
1) Par intermédiaire d'un client, l'utilisateur récupère un
token OAuth (protocole permettant d’obtenir un accès à un service disponible via HTTP par le biais d’une autorisation préalable du détenteur des ressources). Le client utilise se token pour soumettre une requête au service Viya
Compute Service :
2) Le
Compute Service localise un "compute contexte" pour l'utilisateur. Ce "compute contexte" est associé avec un launcher context" :
3) En utilisant ce contexte, le
Compute Service appelle le
Launcher Service qui, à sont tour, appelle le
Launcher Server. C'est le
Launcher Server qui démarre un
Compute Server :
La log
tklauncher (/var/log/sas/viya/tklauncher/default) trace ce démarrage du
Compute Server :
pp.tk.launcher.process.output - SAS Compute Server has completed initialization
Il est possible de vérifier la présence du processus linux pour l'utilisateur :
On retrouve le serverID
5fb7d801-a329-436e-b0ef-b558870b5766 indiqué dans la log du tklauncher
4) Le
Compute Service va ensuite demander une session au
Compute Server pour l'utilisateur :
La log du
Compute Server (/var/log/sas/viya/compsrv/default) trace cette demande :
5) L'utilisateur peut enfin soumettre du code SAS. Le compute service redirige la demande vers la session Compute Server.
launchsvcs crée une session CAS sous l'identité de l'utilisateur qui a soumis la demande. Le processus identsvcs authentifie les utilisateurs lorsqu'ils tentent de se connecter à un serveur CAS avec un nom d'utilisateur et un mot de passe. Ainsi,
les UID et GID doivent être cohérents sur toutes les machines du déploiement.
Il est possible de retrouver les actions associés à la session Compute Server dans les logs compsrv ( /var/log/sas/viya/compsrv/default) et plus précisement dans les fichiers ComputeServer_***.pgm.log :
Exécution de commandes X
SAS Compute Server ne prend pas en charge les commandes X, qui permettent l'exécution des commandes du système d'exploitation à partir de SAS.
Exemple d'erreurs
com.sas.studio.exceptions.ServerOperationException: Impossible de créer une session du Compute Server.
Le lancement du processus a échoué.
Echec de lancement du processus : host=nicolas-housset.viya.local port=36530 ssl=true
Erreur de serveur : status=0x80BFD100 messages=[ERROR: Access denied.]