Partager via


Jetpack

Vous avez besoin de Jetpack sur chaque nœud d’un cluster. Azure CycleCloud installe automatiquement Jetpack sur chaque machine virtuelle que vous approvisionnez pour devenir un nœud dans un cluster. Jetpack fournit trois fonctions principales :

  • 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 et 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. Cette gestion permet à CycleCloud de surveiller l’état 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 qu’elles puissent arrêter des machines virtuelles non saines.

Installation de Jetpack

Le programme d’installation 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. Cette extension télécharge le programme d’installation Jetpack à partir de votre cache stockage Azure, puis l’installe sur la machine virtuelle.

Programme d’installation de Jetpack :

  • Décompresse les fichiers Jetpack dans une arborescence de répertoires unique :
    • Windows : C :\cycle\jetpack
    • Linux : /opt/cycle/Jetpack
  • Crée des scripts de démarrage init 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 sur :
    • 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

Remarque

Si Jetpack est préinstallé sur l’image, l’extension de script personnalisé ne réinstalle pas Jetpack. Au lieu de cela, il exécute une étape d'initialisation qui valide la connexion du nœud à CycleCloud et démarre les services healthcheck et jetpackd avant de continuer à configurer le nœud.

Répertoires secondaires Jetpack

Répertoire Descriptif
bin Fichiers binaires et scripts utiles.
config Fichiers et scripts de configuration définis par l’utilisateur et définis par le cluster.
logs Journaux générés en joignant un cluster et en convergeant le nœud. Ce qui est d’un intérêt particulier est jetpack.log, qui contient les résultats du processus de convergence.
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 version à l'autre.

Vérification de santé

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 Descriptif
jetpack autoscale Mettre à l’échelle automatiquement le cluster auquel appartient ce nœud.
jetpack config Récupérez une valeur de configuration.
jetpack converge Exécutez une « convergence » pour mettre à jour la configuration du nœud.
jetpack download Téléchargez un objet blob à partir d’un projet dans le Stockage Azure.
jetpack keepalive Retarder l’arrêt du système par le service HealthCheck.
jetpack log Journaliser un message dans l’interface utilisateur du cluster CycleCloud.
jetpack run_on_shutdown Ajoutez un script qu'il convient d'exécuter 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ère sur cette machine virtuelle.
jetpack report_issue Archiver les fichiers journaux d’une machine virtuelle vers le stockage Azure

mise à l’échelle automatique jetpack

Permet jetpack autoscale de définir les cibles de mise à l’échelle automatique pour le cluster auquel appartient le nœud. Vous pouvez mettre à l’échelle des clusters par cœurs, nombre d’instances ou définitions personnalisées.

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

jetpack autoscale --corecount=100

Pour mettre à l’échelle le réseau de nœuds « gpu » sur cinq nœuds :

jetpack autoscale --instancecount 5 --name=gpu

Pour personnaliser la mise à l’échelle automatique, écrivez un fichier JSON sur le disque qui contient 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 de jetpack

Permet jetpack config d’extraire des informations que CycleCloud transmet à une machine virtuelle. Il expose :

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

converger jetpack

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

téléchargement jetpack

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

Pour télécharger l'objet blob big-file.zip que vous avez chargé dans le cadre du projet example-project dans le répertoire actuel :

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

jetpack keepalive

jetpack keepalive la commande 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. Vous pouvez définir le délai sur une période fixe ou indéfiniment. Par défaut, la commande retarde l’arrêt pendant une heure.

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

jetpack keepalive

Pour retarder l’arrêt du système d’une durée de six heures :

jetpack keepalive 6h

Pour désactiver entièrement le service HealthCheck, autrement dit, pour retarder l’arrêt indéfiniment :

jetpack keepalive forever

Remarque

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 principal et la page de l’interface utilisateur du cluster.

Chaque message a deux propriétés : level et priority.

La level propriété indique le type de message. Les niveaux valides sont info, warnet error. 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 avec des 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 sur 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

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

La commande prend le chemin absolu du script en tant qu’argument.

Quand Azure termine le nœud et les notifications d’arrêt sont activées, Jetpack reçoit la notification de l’arrêt. Il 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.

envoyer jetpack

jetpack send envoie un message AMQP à CycleCloud. Il s’agit d’une commande avancée que nous ne recommandons pas, 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

Utilisez jetpack shutdown pour demander à CycleCloud de terminer le nœud. Vous pouvez passer des paramètres à la commande pour spécifier la raison de la demande d’arrêt (inactif ou non sain) et comment arrêter le nœud (terminer ou désallouer).

Pour arrêter un nœud non sain, utilisez la commande suivante :

jetpack shutdown --unhealthy

Pour libérer le nœud :

jetpack shutdown --deallocate

essai de jetpack

Permet jetpack test d’exécuter tous les tests inclus dans les projets affectés au nœud. La commande imprime les résultats dans stdout.

les utilisateurs de Jetpack

jetpack users répertorie les utilisateurs que CycleCloud gère sur le nœud. Cette liste peut changer au fil du temps à mesure que les utilisateurs sont affectés et supprimés du 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 conviviale pour 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 signaler_un_problème

jetpack report_issue archive des répertoires de logs à partir de la machine virtuelle, avec la possibilité de les charger dans Azure Storage et de créer une URL signée pour l'accès externe. La commande charge les journaux d’activité dans le compte stockage Azure référencé par le Locker du nœud. Lorsque vous connectez une archive dans Stockage Azure, le jeton SAP résultant a un accès en lecture seule pendant 30 jours.

Utilisation :

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

Pour archiver, charger et signer 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, télécharger, mais ne pas signer un répertoire des journaux autre que celui 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 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