Jetpack

Jetpack es necesario en cada nodo de un clúster. Azure CycleCloud instala automáticamente en cada máquina virtual que se aprovisiona para convertirse en un nodo de un clúster. Jetpack proporciona tres funciones principales:

  • Configuración de nodo : CycleCloud usa scripts y Chef para automatizar la configuración de una máquina virtual aprovisionada en un nodo de clúster de trabajo. Un cliente chef, así como los recursos necesarios para la configuración de la máquina virtual, se insertan en Jetpack.
  • Sincronización distribuida : Jetpack administra la comunicación entre el nodo y el servidor de aplicaciones cycleCloud. Esto permite a CycleCloud supervisar el estado de las máquinas virtuales de aprovisionamiento y sincronizar la orquestación de varios nodos del clúster.
  • HealthCheck : Jetpack usa HealthCheck para determinar el estado de las máquinas virtuales para que se puedan finalizar las máquinas virtuales incorrectas.

Instalación de Jetpack

El instalador de Jetpack se almacena en caché en la cuenta de Azure Storage cuando se inicia por primera vez un clúster mediante CycleCloud. A medida que se aprovisionan máquinas virtuales de clúster, se ejecuta una extensión de script personalizado como parte del proceso de arranque que descarga el instalador de Jetpack desde la memoria caché de Azure Storage y, a continuación, lo instala en la máquina virtual.

El instalador de Jetpack:

  • Desempaqueta los archivos jetpack en un único árbol de directorios:
    • Windows: C:\cycle\jetpack
    • Linux: /opt/cycle/Jetpack
  • Crea scripts de inicio de inicialización del sistema que configuran una máquina virtual como un nodo de clúster.
  • Instala el servicio HealthCheck .
  • Instala la herramienta de línea de comandos de Jetpack para:
    • Windows: C:\cycle\jetpack\bin\jetpack
    • Linux: /opt/cycle/jetpack/bin/jetpack
  • Crea reglas udev en Linux
  • Establece la variable de entorno CYCLECLOUD_HOME

Nota

Si Jetpack se ha instalado previamente en la imagen, la extensión de script personalizado no volverá a instalar Jetpack. En su lugar, se ejecutará un paso de inicialización que validará la conexión del nodo a CycleCloud e iniciará los healthcheck servicios y jetpackd antes de continuar con la configuración del nodo.

Subdirectorios jetpack

Directorio Descripción
bin Archivos binarios y scripts útiles.
config Archivos de configuración y scripts definidos por el usuario y clúster definidos por el usuario.
logs Los registros generados al unir un clúster y converger el nodo, de especial interés, son los chef-client.log que contienen los resultados de las recetas de Chef convergentes.
run Archivos en tiempo de ejecución generados por el sistema. No se recomienda acceder directamente a estos archivos.
system Archivos internos. No se recomienda usar directamente ningún archivo de este directorio, ya que pueden cambiar significativamente de la versión a la versión.

Healthcheck

El servicio HealthCheck ejecuta scripts definidos por el usuario para determinar la viabilidad actual de una máquina virtual como un nodo de clúster. Consulte la documentación de HealthCheck para obtener más información.

Herramienta de línea de comandos de Jetpack

La herramienta de línea de comandos jetpack proporciona un conjunto útil de subcomandos para manipular la máquina virtual actual e interactuar con Azure CycleCloud.

Get-Help Descripción
jetpack autoscale Escalado automático del clúster al que pertenece este nodo.
jetpack config Recupere un valor de configuración.
jetpack converge Ejecute una convergente de Chef.
jetpack download Descargue un recurso de blob de un proyecto en Azure Storage.
jetpack keepalive Retrasar la terminación del sistema por parte del servicio HealthCheck.
jetpack log Registre un mensaje en la interfaz de usuario del clúster de CycleCloud.
jetpack run_on_shutdown Agregue un script al que se llamará antes de la finalización del nodo.
jetpack send Envíe un mensaje AMQP arbitrario al servidor CycleCloud.
jetpack shutdown Solicite el apagado de la máquina virtual por CycleCloud.
jetpack test Ejecute pruebas asociadas a los proyectos asignados a la máquina virtual.
jetpack users Enumere los usuarios que CycleCloud administrará en esta máquina virtual.
jetpack report_issue Archiva los archivos de registro de la máquina virtual en Azure Storage.

escalado automático de jetpack

jetpack autoscale establece los destinos de escalado automático del clúster al que pertenece el nodo. Los clústeres se pueden escalar mediante núcleos, recuento de instancias o definiciones personalizadas.

Para escalar a 100 núcleos:

jetpack autoscale --corecount=100

Para escalar el nodo "gpu" a 5 nodos:

jetpack autoscale --instancecount 5 --name=gpu

Para personalizar el escalado automático, se debe escribir un archivo JSON en el disco que contiene la definición nodearray que desea escalar. Para escalar en 100 núcleos:

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

configuración de jetpack

jetpack config captura la información pasada a una máquina virtual por CycleCloud. Expone:

  • todas las propiedades del sistema disponibles a través de Ohai
  • un subconjunto de los metadatos de Azure de la máquina virtual
  • información sobre el clúster primario de CycleCloud.

convergente jetpack

jetpack converge descarga todos los proyectos de CycleCloud asociados con el nodo e inicia un proceso convergente de Chef que ejecuta todas las recetas de Chef y los scripts de cluster-init para el nodo.

descarga de jetpack

jetpack download descarga un blob que se cargó con un proyecto en el nodo. Debe especificar el proyecto al que pertenece el blob.

Para descargar el blob big-file.zip que se cargó como parte del example-project proyecto en el directorio actual:

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

jetpack keepalive

jetpack keepalive interactúa con el servicio HealthCheck para retrasar la terminación de la máquina virtual debido a un error de HealthCheck. La terminación se puede retrasar durante un período fijo o indefinidamente. De forma predeterminada, la finalización se retrasa durante una hora.

Para retrasar la finalización del sistema en una hora:

jetpack keepalive

Para retrasar la finalización del sistema en seis horas:

jetpack keepalive 6h

Para deshabilitar el servicio HealthCheck por completo, es decir, retrasar la terminación indefinidamente:

jetpack keepalive forever

Nota

Solo la forever opción está disponible para HealthCheck en máquinas virtuales Windows.

registro jetpack

jetpack log devuelve un mensaje de registro a CycleCloud. El mensaje aparecerá en el registro del servidor de aplicaciones (normalmente /opt/cycle_server/cycle_server.log), el registro de eventos principal y la página Interfaz de usuario del clúster.

Cada mensaje tiene dos propiedades: nivel y prioridad.

La propiedad level indica el tipo de mensaje. Los niveles válidos son "info", "warn" y "error". El nivel no indica la importancia de un mensaje determinado; por ejemplo, algunos errores son triviales y algunos mensajes informativos críticos.

Priority indica la importancia del mensaje. Los valores de prioridad válidos son "low", "medium" y "high". Solo se muestran los mensajes con una prioridad media o superior en la página Interfaz de usuario del clúster para evitar inundar la página con mensajes de prioridad baja.

Para enviar un mensaje de registro informativo que aparecerá en la página Interfaz de usuario del clúster:

jetpack log 'system is now ready'

Para enviar un mensaje de registro de prioridad baja que no desea que aparezca en la página Interfaz de usuario del clúster:

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

De forma predeterminada, los mensajes con un nivel de error tienen una prioridad alta. Para enviar un mensaje de error:

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

Para enviar un mensaje de error trivial:

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

jetpack run_on_shutdown

jetpack run_on_shutdown registra un script de Bash al que se llamará antes de la finalización del nodo.

El comando toma la ruta de acceso absoluta al script como argumento.

Cuando Azure finalice el nodo, si las notificaciones de terminación están habilitadas, Jetpack recibirá una notificación de la terminación e intentará ejecutar el script antes de que se apague el nodo.

Los nodos deben habilitar las notificaciones de terminación para habilitar run_on_shutdown.

jetpack run_on_shutdown /tmp/example.sh

Este comando no se admite para los nodos de Windows.

jetpack send

jetpack send envía un mensaje AMQP a CycleCloud. Es un comando avanzado que no se recomienda a menos que esté desarrollando complementos para CycleCloud.

Puede enviar cadenas arbitrarias o archivos con claves de enrutamiento amQP especificadas.

apagado de jetpack

jetpack shutdown solicita que CycleCloud finalice el nodo. Las opciones se pueden pasar al comando para especificar el motivo de la solicitud de apagado (inactiva frente a incorrecta), así como cómo finalizar el nodo (finalizar frente a desasignar).

Para apagar un nodo incorrecto:

jetpack shutdown --unhealthy

Para desasignar el nodo:

jetpack shutdown --deallocate

prueba jetpack

jetpack test ejecuta las pruebas que se incluyen con los proyectos asignados al nodo e imprime los resultados en stdout.

usuarios de jetpack

jetpack users enumera los usuarios que CycleCloud administrará en el nodo. Esta lista puede cambiar con el tiempo a medida que los usuarios se asignan y quitan al clúster.

Para obtener una impresión fácil de usar de los usuarios asignados al nodo:

$ jetpack users

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

Para obtener resultados JSON descriptivos del script:

$ 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 archiva directorios de registro desde la máquina virtual, lo que opcionalmente los carga en Azure Storage y crea una dirección URL firmada para el acceso externo. Los registros se cargarán en la cuenta de Azure Storage a la que hace referencia el Locker del nodo. Al firmar un archivo en Azure Storage, el token de SAS resultante tendrá acceso de solo lectura durante 30 días.

Uso:

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

Para archivar, cargue y firme los registros predeterminados de Jetpack ($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

Para archivar, cargue pero no firme un directorio de registro no predeterminado:

$ 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

Para archivar simplemente los registros en la máquina virtual local:

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