En este artículo se describen los procedimientos recomendados para compilar en Azure Spot Virtual Machines. Incluye un escenario de ejemplo que se puede implementar. Las máquinas virtuales de acceso puntual (vm de acceso puntual) proporcionan acceso a la capacidad de proceso a precios más bajos que las máquinas virtuales normales. Este descuento hace que sean una buena opción para las organizaciones que desean optimizar los costos. Pero los ahorros vienen con un equilibrio. Las máquinas virtuales de acceso puntual se pueden expulsar en cualquier momento, lo que significa que pierden el acceso a los recursos de proceso. Las cargas de trabajo que se ejecutan en máquinas virtuales puntuales deben poder controlar estas interrupciones en el proceso. La carga de trabajo adecuada y un mecanismo de orquestación flexible son las claves para el éxito. Las siguientes recomendaciones describen cómo crear máquinas virtuales puntuales.
Descripción de las máquinas virtuales de acceso puntual
En un nivel técnico, las máquinas virtuales puntuales son las mismas que las máquinas virtuales normales. Usan las mismas imágenes, hardware y discos que se traducen en el mismo rendimiento. La diferencia clave entre las máquinas virtuales puntuales y las máquinas virtuales normales es su prioridad y disponibilidad. Las máquinas virtuales de acceso puntual no tienen prioridad para acceder a la capacidad de proceso y no tienen garantías de disponibilidad después de acceder a esa capacidad de proceso.
Sin acceso prioritario. Las máquinas virtuales normales tienen acceso prioritario a la capacidad de proceso. Acceden a la capacidad de proceso cuando lo solicitan. Sin embargo, las máquinas virtuales puntuales solo se implementan cuando hay capacidad de proceso libre. Y solo continúan ejecutándose cuando una máquina virtual normal no necesita el hardware subyacente.
Sin garantía de disponibilidad. Las máquinas virtuales de spot no tienen ninguna garantía de disponibilidad ni contratos de nivel de servicio (SLA). Las máquinas virtuales de spot pueden perder el acceso a la capacidad de proceso inmediatamente o en cualquier momento después de la implementación o expulsión. Las máquinas virtuales de spot son más baratas porque se pueden expulsar. Cuando Azure necesita la capacidad de proceso de vuelta, se envía un aviso de expulsión y se expulsa la máquina virtual de acceso puntual. Azure proporciona un aviso de 30 segundos de antelación como mínimo antes de que se produzca la expulsión real. Para obtener más información, consulte Supervisión continua de la expulsión.
Descripción de los precios de máquinas virtuales puntuales
Las máquinas virtuales de spot pueden ser de hasta 90% más baratas que las máquinas virtuales de pago por uso normales. El descuento varía en función de la demanda, el tamaño de la máquina virtual, la región de implementación y el sistema operativo. Para obtener una estimación del ahorro de costos, consulte herramienta de precios de Azure Spot Virtual Machines y Información general sobre los precios de Las máquinas virtuales de Spot. También puede consultar la API precios minoristas de Azure para obtener mediante programación los precios puntuales de cualquier SKU.
Descripción de las cargas de trabajo interrumpibles
Las máquinas virtuales de spot son ideales para cargas de trabajo interrumpibles, que comparten varias características comunes. Las cargas de trabajo interrumpibles no tienen restricciones de tiempo mínimas, prioridad organizativa baja y tiempos de procesamiento cortos. Ejecutan procesos que pueden detenerse repentinamente y reanudarse más adelante sin dañar los procesos de la organización esenciales. Algunos ejemplos de cargas de trabajo interrumpibles son aplicaciones de procesamiento por lotes, análisis de datos y cargas de trabajo que crean una integración continua y un agente de implementación continua para un entorno que no es de producción. Estas características se comparan con las cargas de trabajo normales o críticas que tienen acuerdos de nivel de servicio, sesiones permanentes y datos con estado.
Puede usar máquinas virtuales puntuales en cargas de trabajo no interrumpibles, pero no deben ser el único origen de capacidad de proceso. Use tantas máquinas virtuales normales como necesite para cumplir los requisitos de tiempo de actividad.
Descripción de la expulsión
Las máquinas virtuales de spot no tienen acuerdos de nivel de servicio después de la creación y pueden perder el acceso al proceso en cualquier momento. Llamamos a esta pérdida de proceso una expulsión. Proceso de expulsión de suministro y demanda. Cuando la demanda de un tamaño de máquina virtual específico supera un nivel específico, Azure expulsa las máquinas virtuales puntuales para que el proceso esté disponible para las máquinas virtuales normales. La demanda es específica de la ubicación. Por ejemplo, un aumento de la demanda en la región A no afecta a las máquinas virtuales puntuales de la región B.
Las máquinas virtuales de spot tienen dos opciones de configuración que afectan a la expulsión. Estas configuraciones son el tipo de expulsión y directiva de expulsión de la máquina virtual de acceso puntual. Estas configuraciones se establecen al crear la máquina virtual de acceso puntual. El tipo de expulsión define las condiciones de una expulsión. La directiva de expulsión determina qué hace la expulsión en la máquina virtual de acceso puntual.
Tipo de expulsión
Los cambios de capacidad o los cambios de precio provocan expulsiones. La forma en que los cambios de capacidad y precio afectan a las máquinas virtuales puntuales depende del tipo de expulsión que elija cuando se cree la máquina virtual. El tipo de expulsión define las condiciones de una expulsión. Los tipos de expulsión son de expulsión solo de capacidad y precio o expulsión de capacidad.
expulsión solo de capacidad: Este tipo de expulsión desencadena una expulsión cuando el exceso de capacidad de proceso ya no está disponible. De forma predeterminada, el precio se limita a la tarifa de pago por uso. Use este tipo de expulsión cuando no quiera pagar más que el precio de la máquina virtual de pago por uso.
expulsión de precio o capacidad: Este tipo de expulsión tiene dos desencadenadores. Azure expulsa una máquina virtual puntual cuando el exceso de capacidad de proceso ya no está disponible o el costo de la máquina virtual supera el precio máximo establecido. Este tipo de expulsión le permite establecer un precio máximo muy por debajo del precio de pago por uso. Use este tipo de expulsión para establecer su propio límite de precios.
Directiva de expulsión
La directiva de expulsión que elija para una máquina virtual de acceso puntual afecta a su orquestación. La orquestación es el proceso de control de una expulsión y se describe más adelante en este artículo. Las directivas de expulsión son el de directiva de detención y desasignación de y la directiva de eliminación de.
directiva Stop/Deallocate: La directiva Stop/Deallocate es ideal cuando la carga de trabajo puede esperar la capacidad de lanzamiento dentro de la misma ubicación y tipo de máquina virtual. La directiva Stop/Deallocate detiene la máquina virtual y finaliza su concesión con el hardware subyacente. La detención y desasignación de una máquina virtual de acceso puntual es la misma que la detención y desasignación de una máquina virtual normal. La máquina virtual sigue siendo accesible en Azure y puede reiniciar la misma máquina virtual más adelante. La máquina virtual pierde la capacidad de proceso y las direcciones IP no estáticas con la directiva Stop/Deallocate. Sin embargo, los discos de datos de la máquina virtual permanecen y continúan generando cargos. La máquina virtual también ocupa núcleos en la suscripción. Las máquinas virtuales no se pueden mover de su región o zona incluso cuando se detienen o desasignan. Para obtener más información, consulte power states and billing.
Directiva de eliminación: Use la directiva Eliminar si la carga de trabajo puede cambiar el tamaño de la máquina virtual o la ubicación. Cambiar la ubicación o el tamaño de máquina virtual permite que la máquina virtual vuelva a implementarse más rápido. La directiva Delete elimina la máquina virtual y cualquier disco de datos. La máquina virtual no ocupa núcleos en suscripciones. Para obtener más información, consulte directiva de expulsión.
Diseño para orquestación flexible
La orquestación es el proceso de reemplazar una máquina virtual de acceso puntual después de una expulsión. Es la base para crear una carga de trabajo interrumpible de forma confiable. Un buen sistema de orquestación tiene flexibilidad integrada. La flexibilidad significa diseñar la orquestación para tener opciones, usar varios tamaños de máquina virtual, implementar en diferentes regiones, tener reconocimiento de expulsión y tener en cuenta diferentes escenarios de expulsión para mejorar la confiabilidad y la velocidad de la carga de trabajo.
Diseño para velocidad
En el caso de una carga de trabajo que se ejecuta en máquinas virtuales puntuales, la capacidad de proceso es fundamental. Debido al potencial de expulsión, asegúrese de que comprende el tiempo de proceso asignado para que pueda tomar decisiones de diseño informadas que prioricen la velocidad de la carga de trabajo. Por lo general, debe optimizar el tiempo de proceso que tiene. Cree una imagen de máquina virtual que tenga todo el software necesario preinstalado. El software preinstalado ayuda a minimizar el tiempo entre la expulsión y una aplicación totalmente operativa. Evite usar el tiempo de proceso en los procesos que no contribuyen al propósito de la carga de trabajo. Por ejemplo, una carga de trabajo para el análisis de datos debe centrarse la mayor parte de su tiempo de proceso en el procesamiento de datos y el menor tiempo posible en la recopilación de metadatos de expulsión. Elimine los procesos no esenciales de la aplicación.
Uso de varios tamaños y ubicaciones de máquina virtual
Para aumentar la flexibilidad, cree una orquestación para usar varios tipos y tamaños de máquinas virtuales. El objetivo es proporcionar las opciones de orquestación para reemplazar una máquina virtual expulsada. Azure tiene diferentes tipos y tamaños de máquinas virtuales que proporcionan funcionalidades similares para aproximadamente el mismo precio. Filtre por las vCPU o núcleos mínimos, la RAM mínima para las máquinas virtuales y el precio máximo. Este proceso le ayuda a encontrar varias máquinas virtuales que se ajusten al presupuesto y que tengan suficiente capacidad para ejecutar la carga de trabajo.
Cada tipo de máquina virtual tiene una tasa de expulsión expresada como un intervalo porcentual, como 0%-5%, 5%-10%, 10%-15%, 15%-20%o 20+%. Las tasas de expulsión pueden variar entre regiones. Es posible que encuentre una mejor tasa de expulsión para el mismo tipo de máquina virtual en otra región. Puede encontrar las tasas de expulsión de cada tipo de máquina virtual en el portal en la pestaña Aspectos básicos de . Junto a Tamaño, seleccione Ver historial de precios o Ver todos los tamaños. También puede obtener datos de máquina virtual de acceso puntual mediante programación mediante Azure Resource Graph.
En el sistema de orquestación, considere la posibilidad de usar la característica de puntuación de selección de ubicación de acceso puntual para evaluar la probabilidad de éxito de las implementaciones de spot individuales.
Para obtener más información, consulte los siguientes recursos:
Uso de la directiva de expulsión más flexible
La directiva de expulsión de la máquina virtual de acceso puntual expulsada afecta al proceso de reemplazo. Por ejemplo, una directiva Delete es más flexible que una directiva Stop/Deallocate.
Considere primero la directiva De eliminación: Usar una directiva de eliminación si la carga de trabajo puede controlarla. La eliminación permite que la orquestación implemente máquinas virtuales de spot de reemplazo en nuevas zonas y regiones. Esta flexibilidad de implementación podría ayudar a la carga de trabajo a encontrar capacidad de proceso de reserva más rápido que una máquina virtual detenida o desasignada. Las máquinas virtuales detenidas o desasignadas tienen que esperar a la capacidad de proceso de reserva en la misma zona en la que se crearon. Para la directiva De eliminación, necesita un proceso externo para supervisar las expulsiones y orquestar implementaciones en varias regiones, usar diferentes SKU de máquina virtual o ambas.
Comprender la directiva Stop/Deallocate: La directiva Stop/Deallocate tiene menos flexibilidad que la directiva Delete. Las máquinas virtuales de spot deben permanecer en la misma región y zona. No se puede mover una máquina virtual detenida o desasignada a otra ubicación. Dado que las máquinas virtuales tienen una ubicación fija, necesita algo en su lugar para reasignar la máquina virtual cuando la capacidad de proceso esté disponible. No hay ninguna manera de predecir la disponibilidad de la capacidad de proceso. Por lo tanto, debe usar una canalización de programación automatizada para intentar una reimplementación después de una expulsión. Una expulsión debe desencadenar la canalización de programación y los intentos de reimplementación deben comprobar continuamente la capacidad de proceso hasta que esté disponible.
Política | Cuándo usar la directiva |
---|---|
Eliminar directiva | - Proceso efímero y datos - No desea pagar por discos de datos - Presupuesto mínimo |
Directiva stop/deallocate | : se necesita un tamaño de máquina virtual específico. - No se puede cambiar la ubicación - Proceso largo de instalación de aplicaciones - Tiempo de espera indefinido - No controlado por el ahorro de costos por sí solo |
Supervisión continua de la expulsión
La supervisión es la clave para la confiabilidad de la carga de trabajo en máquinas virtuales puntuales. Las máquinas virtuales de spot no tienen ningún Acuerdo de Nivel de Servicio después de la creación y se pueden expulsar en cualquier momento. La mejor manera de mejorar la confiabilidad de la carga de trabajo en las máquinas virtuales puntuales es prever cuándo se van a expulsar. Si tiene esta información, puede intentar un apagado correcto de la carga de trabajo y desencadenar la automatización para orquestar el reemplazo.
Usar eventos programados: Use el servicio Scheduled Events para cada máquina virtual. Azure envía señales a las máquinas virtuales cuando el mantenimiento de la infraestructura los afectará. Las expulsiones se califican como mantenimiento de infraestructura. Azure envía la señal
Preempt
a todas las máquinas virtuales como mínimo 30 segundos antes de expulsarlas. El servicio Eventos programados permite capturar esta señal dePreempt
consultando un punto de conexión en la dirección IP estática y no enrutable169.254.169.254
.Usar consultas frecuentes: Consultar el punto de conexión de eventos programados a menudo para orquestar un apagado correcto. Puede consultar el punto de conexión De eventos programados hasta cada segundo, pero es posible que no sea necesaria una frecuencia de un segundo para todos los casos de uso. Estas consultas deben provenir de una aplicación que se ejecute en la máquina virtual de acceso puntual. La consulta no puede proceder de un origen externo. Como resultado, las consultas consumen capacidad de proceso de máquina virtual y roban la capacidad de procesamiento de la carga de trabajo principal. Debe equilibrar esas prioridades de competencia para satisfacer su situación específica.
Automatización de la orquestación: Después de recopilar la señal
Preempt
, la orquestación debe actuar en esa señal. Dadas las restricciones de tiempo, la señal dePreempt
debe intentar un apagado correcto de la carga de trabajo e iniciar un proceso automatizado que reemplace la máquina virtual de acceso puntual. Para obtener más información, consulte los siguientes recursos:
Creación de un sistema de implementación
La orquestación necesita una canalización automatizada para implementar nuevas máquinas virtuales de spot después de la expulsión. La canalización debe ejecutarse fuera de la carga de trabajo interrumpible para ayudar a garantizar la permanencia. La canalización de implementación debe funcionar según la directiva de expulsión que elija para las máquinas virtuales de acceso puntual.
Para una directiva de eliminación, se recomienda crear una canalización que use diferentes tamaños de máquina virtual e implemente en regiones diferentes. Para una directiva Stop/Deallocate, la canalización de implementación necesita dos acciones distintas. Para la creación inicial de una máquina virtual, la canalización debe implementar las máquinas virtuales de tamaño correcto en la ubicación correcta. Para una máquina virtual expulsada, la canalización debe intentar reiniciar la máquina virtual hasta que funcione. Una combinación de alertas de Azure Monitor y azure Functions es una manera de automatizar un sistema de implementación. La canalización podría usar plantillas de bicep. Son declarativos e idempotentes y representan un procedimiento recomendado para la implementación de infraestructura.
Preparación para la expulsión inmediata
Es posible que Azure desaloje una máquina virtual de acceso puntual tan pronto como la cree y antes de que se ejecute la carga de trabajo. En algunos casos, puede haber suficiente capacidad para crear una máquina virtual de acceso puntual, pero no será la última. Las máquinas virtuales de spot no tienen garantías de disponibilidad ni acuerdos de nivel de servicio después de la creación. La orquestación debe tener en cuenta las expulsiones inmediatas. La señal Preempt
proporciona un aviso de 30 segundos de antelación como mínimo de la expulsión.
Incorpore las comprobaciones de estado de la máquina virtual en la orquestación para prepararse para las expulsiones inmediatas. La orquestación de las expulsiones inmediatas no puede depender de la señal de eventos programados Preempt
. Solo la máquina virtual puede consultar la señal de Preempt
y no hay tiempo suficiente para iniciar una aplicación, consultar el punto de conexión de eventos programados y apagarse correctamente. Por lo tanto, la comprobación de estado debe residir fuera del entorno de carga de trabajo. Las comprobaciones de estado deben supervisar el estado de la máquina virtual de acceso puntual e iniciar la canalización de implementación para reemplazar la máquina virtual de acceso puntual cuando el estado cambia a desasignar o detener.
Planear varias expulsiones simultáneas
Si ejecuta un clúster de máquinas virtuales puntuales, diseñe la carga de trabajo para soportar varias expulsiones simultáneas. Se pueden expulsar varias máquinas virtuales de acceso puntual en la carga de trabajo al mismo tiempo. Una expulsión simultánea de varias máquinas virtuales podría afectar al rendimiento de la aplicación. Para evitar esta situación, la canalización de implementación debe poder recopilar señales de varias máquinas virtuales e implementar varias máquinas virtuales de reemplazo simultáneamente.
Diseño para un apagado correcto
El proceso de apagado de la máquina virtual debe ser inferior a 30 segundos y permitir que la máquina virtual se apague antes de una expulsión. La cantidad de tiempo que debe tardar el apagado depende de la frecuencia con la que la carga de trabajo consulta el punto de conexión De eventos programados. Cuanto más a menudo consulte el punto de conexión, más tiempo puede tardar el proceso de apagado. El proceso de apagado debe liberar recursos, purgar conexiones y vaciar registros de eventos. Debe crear y guardar periódicamente puntos de control para conservar el contexto y crear una estrategia de recuperación más eficaz. El punto de control es simplemente información sobre los procesos o transacciones en los que debe iniciarse la siguiente máquina virtual. Deben indicar si la máquina virtual debe reanudarse donde se dejó la máquina virtual anterior o si la nueva máquina virtual debe revertir los cambios e iniciar todo el proceso de nuevo. Almacene los puntos de control fuera del entorno de máquina virtual de acceso puntual, como en una cuenta de almacenamiento.
Prueba de la orquestación
Simular eventos de expulsión para probar la orquestación en entornos de desarrollo y pruebas. Para obtener más información, consulte Simular expulsión.
Diseño de una carga de trabajo idempotente
Se recomienda diseñar una carga de trabajo idempotente. El resultado del procesamiento de un evento más de una vez debe ser el mismo que procesarlo una vez. Las expulsiones pueden dar lugar a apagados forzados, a pesar de los esfuerzos para garantizar apagados correctos. Los apagados forzados pueden finalizar los procesos antes de la finalización. Las cargas de trabajo idempotentes pueden recibir el mismo mensaje más de una vez sin cambiar el resultado. Para obtener más información, consulte Idempotency.
Uso de un período de preparación de la aplicación
La mayoría de las cargas de trabajo interrumpibles ejecutan aplicaciones. Las aplicaciones necesitan tiempo para instalar y para iniciarse. También necesitan tiempo para conectarse al almacenamiento externo y recopilar información de los puntos de control. Tenga un período de preparación de la aplicación antes de permitir que empiece a procesarse. Durante el período de preparación, la aplicación debe iniciarse, establecer conexiones y prepararse para contribuir. Permitir que una aplicación empiece a procesar datos después de validar el estado de la aplicación.
Configuración de identidades administradas asignadas por el usuario
Asigne identidades administradas asignadas por el usuario para simplificar el proceso de autenticación y autorización. Las identidades administradas asignadas por el usuario permiten evitar colocar credenciales en el código y no están vinculadas a un único recurso, como las identidades administradas asignadas por el sistema. Las identidades administradas asignadas por el usuario contienen permisos y tokens de acceso del identificador de Microsoft Entra que se pueden reutilizar y asignar a máquinas virtuales de acceso puntual durante la orquestación. La coherencia de tokens entre máquinas virtuales de acceso puntual ayuda a simplificar la orquestación y simplifica el acceso a los recursos de carga de trabajo que tienen las máquinas virtuales de acceso puntual.
Si usa identidades administradas asignadas por el sistema, una nueva máquina virtual de acceso puntual podría obtener un token de acceso diferente del identificador de Microsoft Entra. Si necesita usar identidades administradas asignadas por el sistema, haga que las cargas de trabajo sean resistentes a 403 Forbidden Error
respuestas. La orquestación debe obtener tokens de Microsoft Entra ID con los permisos adecuados. Para obtener más información, consulte identidades administradas.
Escenario de ejemplo
En el escenario de ejemplo se implementa una aplicación de procesamiento de colas que se califica como una carga de trabajo interrumpible. Los scripts del escenario sirven como ejemplos. El escenario le guía a través de una inserción manual única para implementar recursos. Esta implementación no tiene una canalización de implementación. Sin embargo, una canalización de implementación es esencial para automatizar el proceso de orquestación. En el diagrama siguiente se muestra la arquitectura del escenario de ejemplo.
Descargar un archivo de Visio de esta arquitectura.
El siguiente flujo de trabajo corresponde al diagrama anterior:
definición de aplicación de máquina virtual: La definición de la aplicación de máquina virtual se crea en la galería de procesos de Azure. Define el nombre de la aplicación, la ubicación, el sistema operativo y los metadatos. La versión de la aplicación es una versión numerada de la definición de la aplicación de máquina virtual. La versión de la aplicación representa la aplicación de máquina virtual. Debe estar en la misma región que la máquina virtual de acceso puntual. La versión de la aplicación se vincula al paquete de aplicación de origen en la cuenta de almacenamiento.
cuenta de almacenamiento: La cuenta de almacenamiento almacena el paquete de aplicación de origen. En esta arquitectura, es un archivo tar comprimido denominado
worker-0.1.0.tar.gz
. Contiene dos archivos. Un archivo es el script de bashorchestrate.sh
que instala la aplicación de trabajo de .NET.máquina virtual de acceso puntual: implementa la máquina virtual de acceso puntual. Debe estar en la misma región que la versión de la aplicación. Descarga
worker-0.1.0.tar.gz
en la máquina virtual después de la implementación. La plantilla de bicep implementa una imagen de Ubuntu en una máquina virtual de familia estándar. Estas configuraciones satisfacen las necesidades de esta aplicación y no son recomendaciones generales para las aplicaciones.cola de Storage: El otro servicio que se ejecuta en el trabajo de .NET contiene lógica de cola de mensajes. El identificador de Microsoft Entra concede acceso de máquina virtual puntual a la cola de almacenamiento en Azure Queue Storage con una identidad asignada por el usuario mediante el control de acceso basado en rol.
aplicación de trabajo de .NET: El script de
orchestrate.sh
instala una aplicación de trabajo de .NET que ejecuta dos servicios en segundo plano. El primer servicio consulta el punto de conexión De eventos programados, busca la señal dePreempt
y envía esta señal al segundo servicio. El segundo servicio procesa los mensajes de la cola de almacenamiento y escucha la señal dePreempt
desde el primer servicio. Cuando el segundo servicio recibe la señal, interrumpe el procesamiento de la cola de almacenamiento y comienza a apagarse.punto de conexión de eventos programados de consulta: Se envía una solicitud de API a una dirección IP estática no enrutable
169.254.169.254
. La solicitud de API consulta el punto de conexión De eventos programados para las señales de mantenimiento de la infraestructura.Application Insights: La arquitectura usa Application Insights solo con fines de aprendizaje. No es un componente esencial de la orquestación de cargas de trabajo interrumpibles, pero permite validar la telemetría de la aplicación de trabajo de .NET. La aplicación de trabajo de .NET envía telemetría a Application Insights. Para obtener más información, consulte Habilitación de métricas dinámicas desde la aplicación .NET.
Implementación de este escenario
Hay un repositorio de GitHub denominado carga de trabajo interrumpible en puntual que tiene plantillas, scripts e instrucciones paso a paso para implementar esta arquitectura.