Jetpack

Jetpack est requis sur chaque nœud d’un cluster. Il est automatiquement installé par Azure CycleCloud sur chaque machine virtuelle provisionnée pour devenir un nœud dans un cluster. Jetpack fournit trois fonctions main :

  • Configuration du nœud : CycleCloud utilise des scripts et Chef pour automatiser la configuration d’une machine virtuelle provisionnée dans un nœud de cluster opérationnel. Un client Chef ainsi que les ressources nécessaires à la configuration de la machine virtuelle sont incorporées dans Jetpack.
  • Synchronisation distribuée : Jetpack gère la communication entre le nœud et le serveur d’applications CycleCloud. Cela permet à CycleCloud de surveiller l’status des machines virtuelles d’approvisionnement et de synchroniser l’orchestration de plusieurs nœuds dans le cluster.
  • HealthCheck : Jetpack utilise HealthCheck pour déterminer l’intégrité des machines virtuelles afin que les machines virtuelles non saines puissent être arrêtées.

Jetpack Installation

Le programme d’installation de Jetpack est mis en cache dans votre compte de stockage Azure lorsque vous démarrez un cluster à l’aide de CycleCloud. À mesure que les machines virtuelles de cluster sont approvisionnées, une extension de script personnalisé est exécutée dans le cadre du processus de démarrage qui télécharge le programme d’installation jetpack à partir de votre cache de stockage Azure, puis l’installe sur la machine virtuelle.

Le programme d’installation de Jetpack :

  • Décompresse les fichiers Jetpack dans une seule arborescence de répertoires :
    • Windows : C :\cycle\jetpack
    • Linux : /opt/cycle/Jetpack
  • Crée des scripts de démarrage d’initialisation du système qui configurent une machine virtuelle en tant que nœud de cluster
  • Installe le service HealthCheck
  • Installe l’outil en ligne de commande Jetpack pour :
    • Windows : C :\cycle\jetpack\bin\jetpack
    • Linux : /opt/cycle/jetpack/bin/jetpack
  • Crée des règles udev sur Linux
  • Définit la variable d’environnement CYCLECLOUD_HOME

Notes

Si Jetpack a été préinstallé sur l’image, l’extension de script personnalisé ne réinstallera pas Jetpack. Au lieu de cela, une étape d’initialisation est exécutée pour valider la connexion du nœud à CycleCloud et démarrer les healthcheck services et jetpackd avant de continuer à configurer le nœud.

Sous-répertoires Jetpack

Répertoire Description
bin Fichiers binaires et scripts utiles.
config Fichiers et scripts de configuration définis par l’utilisateur et définis par le cluster.
logs Les journaux générés en joignant un cluster et en faisant converger le nœud, sont particulièrement intéressants les chef-client.log qui contiennent les résultats des recettes Chef convergentes.
run Fichiers runtime générés par le système. Nous vous déconseillons d’accéder directement à ces fichiers.
system Fichiers internes. Nous vous déconseillons d’utiliser directement des fichiers dans ce répertoire, car ils peuvent changer considérablement d’une mise en production à l’autre.

Healthcheck

Le service HealthCheck exécute des scripts définis par l’utilisateur pour déterminer la viabilité actuelle d’une machine virtuelle en tant que nœud de cluster. Pour plus d’informations, consultez la documentation HealthCheck .

Outil en ligne de commande Jetpack

L’outil en ligne de commande Jetpack fournit un ensemble utile de sous-commandes pour manipuler la machine virtuelle actuelle et interagir avec Azure CycleCloud.

Commande Description
jetpack autoscale Mise à l’échelle automatique du cluster auquel appartient ce nœud.
jetpack config Récupérer une valeur de configuration.
jetpack converge Exécuter une convergence Chef.
jetpack download Téléchargez une ressource d’objet blob à partir d’un projet dans Stockage Azure.
jetpack keepalive Retarder l’arrêt du système par le service HealthCheck.
jetpack log Consignez un message dans l’interface utilisateur du cluster CycleCloud.
jetpack run_on_shutdown Ajoutez un script à appeler avant l’arrêt du nœud.
jetpack send Envoyez un message AMQP arbitraire au serveur CycleCloud.
jetpack shutdown Demandez l’arrêt de la machine virtuelle par CycleCloud.
jetpack test Exécutez des tests associés aux projets affectés à la machine virtuelle.
jetpack users Répertorier les utilisateurs que CycleCloud gérera sur cette machine virtuelle.
jetpack report_issue Archiver les fichiers journaux d’une machine virtuelle vers stockage Azure

mise à l’échelle automatique jetpack

jetpack autoscale définit les cibles de mise à l’échelle automatique pour le cluster auquel appartient le nœud. Les clusters peuvent être mis à l’échelle par cœurs, instance nombre ou définitions personnalisées.

Pour effectuer une mise à l’échelle à 100 cœurs :

jetpack autoscale --corecount=100

Pour mettre à l’échelle le nodearray « gpu » sur 5 nœuds :

jetpack autoscale --instancecount 5 --name=gpu

Pour personnaliser la mise à l’échelle automatique, un fichier json doit être écrit sur le disque contenant la définition nodearray que vous souhaitez mettre à l’échelle. Pour effectuer une mise à l’échelle de 100 cœurs :

[
  {
      "Name": "execute",
      "TargetCoreCount": 100
  }
]
jetpack autoscale --file=custom-autoscale.json

configuration jetpack

jetpack config récupère les informations transmises à une machine virtuelle par CycleCloud. Il expose :

  • toutes les propriétés système mises à disposition via Ohai
  • un sous-ensemble des métadonnées Azure de la machine virtuelle
  • informations sur le cluster CycleCloud parent.

jetpack converge

jetpack converge télécharge tous les projets CycleCloud associés au nœud et démarre un processus de convergence Chef qui exécute toutes les recettes Chef et les scripts cluster-init pour le nœud.

jetpack download

jetpack download télécharge un objet blob chargé avec un projet sur le nœud. Vous devez spécifier le projet auquel appartient l’objet blob.

Pour télécharger l'big-file.zip d’objet blob qui a été chargé dans le example-project cadre du projet dans le répertoire actif :

jetpack download --project example-project big-file.zip .

jetpack keepalive

jetpack keepalive interagit avec le service HealthCheck pour retarder l’arrêt de la machine virtuelle en raison d’un contrôle d’intégrité défaillant. L’arrêt peut être retardé pour une période fixe ou indéfiniment. Par défaut, l’arrêt est retardé d’une heure.

Pour retarder l’arrêt du système d’une heure :

jetpack keepalive

Pour retarder l’arrêt du système de six heures :

jetpack keepalive 6h

Pour désactiver entièrement le service HealthCheck, c’est-à-dire retarder l’arrêt indéfiniment :

jetpack keepalive forever

Notes

Seule l’option forever est disponible pour HealthCheck sur les machines virtuelles Windows

journal jetpack

jetpack log renvoie un message de journal à CycleCloud. Le message s’affiche dans le journal du serveur d’applications (généralement /opt/cycle_server/cycle_server.log), le journal des événements main et la page de l’interface utilisateur du cluster.

Chaque message a deux propriétés : niveau et priorité.

La propriété level indique le type de message. Les niveaux valides sont « info », « avertir » et « erreur ». Le niveau n’indique pas l’importance d’un message donné , par exemple, certaines erreurs sont triviales et certains messages d’information critiques.

La priorité indique l’importance du message. Les valeurs de priorité valides sont « low », « medium » et « high ». Seuls les messages dont la priorité est moyenne ou supérieure sont affichés sur la page de l’interface utilisateur du cluster pour éviter d’inonder la page de messages de faible priorité.

Pour envoyer un message de journal d’informations qui s’affiche sur la page de l’interface utilisateur du cluster :

jetpack log 'system is now ready'

Pour envoyer un message de journal de faible priorité que vous ne souhaitez pas afficher dans la page de l’interface utilisateur du cluster :

jetpack log 'system is now ready' --priority low

Par défaut, les messages avec un niveau d’erreur ont une priorité élevée. Pour envoyer un message d’erreur :

jetpack log 'the machine cannot process jobs' --level error

Pour envoyer un message d’erreur trivial :

jetpack log 'the machine cannot process jobs' --level error --priority low

jetpack run_on_shutdown

jetpack run_on_shutdown inscrit un script bash à appeler avant l’arrêt du nœud.

La commande prend le chemin d’accès absolu au script en tant qu’argument.

Lorsque le nœud est arrêté par Azure, si les notifications d’arrêt sont activées, Jetpack est averti de l’arrêt et tente d’exécuter le script avant l’arrêt du nœud.

Les nœuds doivent activer les notifications d’arrêt pour activer run_on_shutdown.

jetpack run_on_shutdown /tmp/example.sh

Cette commande n’est pas prise en charge pour les nœuds Windows.

jetpack send

jetpack send envoie un message AMQP à CycleCloud. Il s’agit d’une commande avancée qui n’est pas recommandée, sauf si vous développez des plug-ins pour CycleCloud.

Vous pouvez envoyer des chaînes ou des fichiers arbitraires avec des clés de routage AMQP spécifiées.

arrêt jetpack

jetpack shutdown demande que CycleCloud termine le nœud. Des options peuvent être passées à la commande pour spécifier la raison de la demande d’arrêt (inactif ou non sain) ainsi que la façon d’arrêter le nœud (terminer ou libérer).

Pour arrêter un nœud non sain :

jetpack shutdown --unhealthy

Pour libérer le nœud :

jetpack shutdown --deallocate

test jetpack

jetpack test exécute tous les tests inclus dans les projets affectés au nœud et imprime les résultats dans stdout.

utilisateurs jetpack

jetpack users répertorie les utilisateurs que CycleCloud gérera sur le nœud. Cette liste peut changer au fil du temps à mesure que les utilisateurs sont affectés et supprimés sur le cluster.

Pour obtenir une impression conviviale des utilisateurs affectés au nœud :

$ jetpack users

Username: test-user
Full Name: Test User
UID: 10201
Is Admin: True
Is Owner: True

Pour obtenir une sortie JSON compatible avec les scripts :

$ jetpack users --json

[
    {
        "fullName": "Test User",
        "isAdmin": true,
        "isOwner": true,
        "name": "test-user",
        "publicKeys": [
            "ssh-rsa public-key-goes-here\n"
        ],
        "uid": 10201
    }
]

jetpack report_issue

jetpack report_issue archive les répertoires de journaux à partir de la machine virtuelle, en les chargeant éventuellement dans stockage Azure et en créant une URL signée pour l’accès externe. Les journaux d’activité sont chargés vers le compte de stockage Azure référencé par le Locker du nœud. Lors de la signature d’une archive dans stockage Azure, le jeton SAS résultant a un accès en lecture seule pendant 30 jours.

Usage :

$ jetpack report_issue [LOG_PATH] [--upload/--no-upload] [--sign/--no-sign]

Pour archiver, chargez et signez les journaux Jetpack par défaut ($JETPACK_HOME/logs) :

$ jetpack report_issue
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-77777964-8b74-420d-ad44-094edf7695f2.zip?sv=2017-11-09&rsct=binary&sig=jBJUlYo10lRq0eW94I%2B6syzYVmgo1qcTFUc35D/q0Tg%3D&se=2020-12-04T15%3A15%3A00Z&spr=https&rscd=disposition%3Dfile%3B%20attachment&sp=r&sr=b
Signed URL will expire on: 2020-12-04T15:15:00Z

Pour archiver, chargez mais ne signez pas un répertoire de journaux autre que le répertoire par défaut :

$ jetpack report_issue /var/log/azure --no-sign
Logs can be found at: https://testaccount.blob.core.windows.net/cyclecloud/issues/TestCluster-execute-1-d67fe991-1dac-4644-9af7-50c835726f5e.zip

Pour archiver simplement les journaux sur la machine virtuelle locale :

$ jetpack report_issue --no-upload
Logs can be found at: /tmp/tmp4nscw705/TestCluster-execute-1-4249e973-3d87-4b14-94ed-6856a5267972.zip