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