Fiabilidad en Azure VM Image Builder

Azure VM Image Builder es un servicio administrado que compila y personaliza imágenes de máquina virtual (VM) y, a continuación, distribuye las imágenes resultantes a destinos como Azure Compute Gallery o discos duros virtuales (VHD) en Azure Blob Storage. El servicio no requiere que mantenga la infraestructura de compilación de larga duración.

Cuando se usa Azure, la confiabilidad es una responsabilidad compartida. Microsoft proporciona una variedad de capacidades para apoyar la resiliencia y la recuperación. Es responsable de comprender cómo funcionan esas funcionalidades dentro de todos los servicios que usa y de seleccionar las funcionalidades que necesita para cumplir los objetivos empresariales y los objetivos de tiempo de actividad.

En este artículo se describe cómo hacer que Azure VM Image Builder sea resistente a varias posibles interrupciones y problemas, incluidos errores transitorios, errores de zona de disponibilidad, errores en toda la región y mantenimiento del servicio. También se describen las opciones de copia de seguridad y restauración, las soluciones de varias regiones personalizadas y la información clave sobre el contrato de nivel de servicio (SLA) de VM Image Builder de Azure.

Recomendaciones de implementación de producción

Tenga en cuenta las siguientes recomendaciones al diseñar una canalización de creación de imágenes de producción:

  • Defina las plantillas de imagen mediante la infraestructura como código, como Bicep o Terraform, y almacene las definiciones en el control de código fuente.

  • Distribuya imágenes preparadas a las regiones en las que se ejecutan las cargas de trabajo, como a través de la replicación de Azure Compute Gallery, para evitar dependencias innecesarias entre regiones durante la creación de máquinas virtuales, el escalado horizontal y las operaciones de regeneración de imagen.

  • Almacene scripts de personalización, paquetes y otras dependencias de compilación en el almacenamiento que tenga las características de redundancia que requiere la carga de trabajo.

Introducción a la arquitectura de confiabilidad

En esta sección se describen algunos de los aspectos importantes de cómo funciona el servicio que es más relevante desde una perspectiva de confiabilidad. En la sección se presenta la arquitectura lógica, que incluye algunos de los recursos y características que se implementan y usan. También se describe la arquitectura física, que proporciona detalles sobre cómo funciona el servicio en segundo plano.

Arquitectura lógica

Cuando se usa VM Image Builder, se implementa una plantilla de imagen en una sola región de Azure, que se convierte en la región principal de la plantilla.

Después de crear la plantilla, ejecuta una compilación, que ejecuta una serie de pasos para crear la imagen de la máquina virtual. Estos pasos pueden ejecutar scripts o incluir paquetes que quiera insertar en la imagen.

El servicio crea o usa un grupo de recursos de almacenamiento provisional e implementa la infraestructura de compilación en su suscripción. Después de la compilación, el servicio quita los recursos temporales, incluida la máquina virtual de compilación y los recursos de red asociados. El grupo de recursos de almacenamiento provisional y sus recursos de almacenamiento permanecen mientras exista el recurso de plantilla de imagen.

VM Image Builder distribuye la imagen finalizada a uno o varios destinos que usted especifique. Los objetivos comunes incluyen:

  • Azure Compute Gallery (anteriormente conocido como Shared Image Gallery): Azure Compute Gallery proporciona replicación multirregional de imágenes de máquina virtual. Por ejemplo, puede crear una imagen en una región y distribuir la versión resultante de la imagen de Azure Compute Gallery a varias regiones de destino.

  • Azure Blob Storage: el servicio puede almacenar el disco duro virtual en la cuenta de almacenamiento que vm Image Builder implementa o en una cuenta de almacenamiento y un contenedor de blobs que especifique.

    Si usa la cuenta de almacenamiento administrada por el servicio como destino de distribución de VHD, el servicio almacena el disco duro virtual en el grupo de recursos de almacenamiento provisional. Al eliminar la plantilla de imagen, el servicio también elimina el VHD. Para conservar el disco duro virtual independientemente de la plantilla de imagen, distribúyalo a una cuenta de almacenamiento personalizada o cópielo en otra ubicación antes de eliminar la plantilla.

Azure Compute Gallery y Blob Storage son servicios independientes de VM Image Builder. Puede distribuir imágenes a varios destinos, incluidos los destinos de diferentes regiones de Azure. Este modelo de distribución le ayuda a separar la región donde crea una imagen de las regiones donde se consume esa imagen.

Note

VM Image Builder también admite imágenes administradas, que son un destino de distribución heredado. En este artículo no se tratan las imágenes administradas. Para escenarios de producción, use Azure Compute Gallery.

Arquitectura física

VM Image Builder usa Isolated Image Builds para ejecutar el proceso principal de personalización y validación de imágenes. El servicio implementa un recurso dedicado de Azure Container Instances y una máquina virtual de compilación en el grupo de recursos de ensayo de la suscripción. El recurso Container Instances ejecuta HashiCorp Packer para personalizar y validar la imagen y VM Image Builder coordina la compilación.

Para ejecutar compilaciones de imágenes, registre el proveedor de recursos Microsoft.ContainerInstance y asegúrese de que la suscripción tiene cuota de Container Instances suficiente. Para más información sobre la arquitectura del servicio, las regiones admitidas y el proceso de compilación, consulte introducción a Azure VM Image Builder.

Servicios independientes de Azure, como Azure Compute Gallery y Blob Storage, almacenan imágenes finalizadas. Configure cada destino de distribución para que cumpla sus requisitos de resiliencia.

Resistencia a errores transitorios

Los errores transitorios son errores breves e intermitentes en los componentes. Se producen con frecuencia en un entorno distribuido como la nube y son una parte normal de las operaciones. Los errores transitorios se corrigen después de un breve período de tiempo. Es importante que las aplicaciones puedan controlar errores transitorios, normalmente mediante el reintento de solicitudes afectadas.

Todas las aplicaciones hospedadas en la nube deben seguir las instrucciones de control de errores transitorios de Azure cuando se comunican con cualquier API, bases de datos y otros componentes hospedados en la nube. Para más información, vea Recomendaciones para gestionar errores temporales.

Normalmente, se suele interactuar con Azure VM Image Builder mediante el portal de Azure, CLI de Azure, Azure PowerShell o infraestructura como código como Bicep. Su pipeline de compilación es responsable de gestionar fallos transitorios. Si Azure Resource Manager devuelve una respuesta de error transitorio, reintente la solicitud con un retroceso adecuado.

Si una compilación produce un error, inspeccione su lastRunStatus, los registros de personalización y validación y las salidas de la ejecución de distribución antes de volver a ejecutarla. Estos detalles le ayudan a determinar si una condición de error transitoria, un paso de personalización o una operación de distribución de imágenes provocó el fallo. Para más información, consulte Solución de problemas de errores de compilación de VM Image Builder.

Las operaciones de compilación también pueden depender de sistemas externos, como cuentas de almacenamiento, repositorios de paquetes, ubicaciones de imagen de origen y destinos de distribución. Diseñe los pasos de personalización y las canalizaciones para admitir reintentos después de un problema temporal de red, plataforma o dependencia.

Resistencia a errores de zona de disponibilidad

Las operaciones de compilación y las imágenes terminadas se comportan de forma distinta durante los errores de zona.

  • Compilaciones de imágenes: VM Image Builder no admite zonas de disponibilidad y no proporciona una garantía de resiliencia zonal para las plantillas de imagen ni para las operaciones de compilación. Si un fallo de zona afecta a los recursos que usa una compilación, es posible que la compilación no se inicie o se interrumpa. VM Image Builder no mueve automáticamente la compilación a otra zona.

    Si necesita ejecutar compilaciones de imágenes durante las interrupciones de zona, implemente las plantillas de imagen y los recursos auxiliares en varias regiones de Azure. Para obtener más información, consulte Soluciones de varias regiones personalizadas para la resistencia.

  • Imágenes: Las imágenes finalizadas permanecen disponibles si su almacenamiento es resistente a la zona.

    • Azure Compute Gallery: las versiones de imagen de Azure Compute Gallery pueden usar almacenamiento con redundancia de zona (ZRS) en las regiones de destino que admiten zonas de disponibilidad. Para cada región de destino, seleccione ZRS como tipo de replicación de la cuenta de almacenamiento. El valor predeterminado es el almacenamiento con redundancia local (LRS), que no es resiliente ante errores de zona. Para obtener más información, consulte alta disponibilidad de Azure Compute Gallery.

    • VHD en Azure Blob Storage: si no usa una cuenta de almacenamiento personalizada, VM Image Builder crea una cuenta de almacenamiento ZRS de forma predeterminada en regiones que admiten zonas de disponibilidad. Si usa una cuenta de almacenamiento personalizada, es responsable de configurar su redundancia para satisfacer sus requisitos. Use ZRS para almacenar copias del VHD en varias zonas de disponibilidad. Para obtener más información sobre cómo funciona ZRS, consulte Confiabilidad en Azure Blob Storage.

Resistencia a errores en toda la región

Las operaciones de compilación y las imágenes finalizadas se comportan de forma diferente durante los fallos en toda la región.

  • Builds: Azure VM Image Builder es un servicio de una sola región y no proporciona conmutación por error integrada entre varias regiones. Si la región que hospeda la plantilla de imagen deja de estar disponible, la plantilla de imagen y las operaciones de compilación de esa región tampoco están disponibles. El servicio no realiza automáticamente la conmutación por error a otra región.

    Si necesita ejecutar compilaciones de imágenes durante las interrupciones de la región, implemente las plantillas de imagen y los recursos auxiliares en varias regiones de Azure. Para obtener más información, consulte Soluciones de varias regiones personalizadas para la resistencia.

  • Imágenes: Las imágenes finalizadas permanecen disponibles si su almacenamiento es resistente a fallos a escala regional.

    • Azure Compute Gallery: puede configurar Azure Compute Gallery para replicar versiones de imagen en varias regiones. La replicación es asincrónica y puede usar una versión de imagen en una región de destino solo después de que finalice la replicación en esa región.

      Durante una interrupción en una región, las réplicas completadas siguen estando disponibles para las implementaciones de máquinas virtuales en regiones de destino en buen estado. Sin embargo, si la región que contiene el recurso de la galería no está disponible, no puede crear ni actualizar recursos de la galería. Si necesita seguir publicando versiones de imagen durante una interrupción de la región, mantenga galerías independientes en regiones de compilación independientes. Para obtener más información, consulte Replicación y procedimientos recomendados de Azure Compute Gallery.

    • VHD en Azure Blob Storage: el destino de VHD administrado por el servicio predeterminado no proporciona redundancia geográfica. En las regiones que admiten zonas de disponibilidad, usa ZRS, que no protege frente a un fallo que afecte a toda la región.

      En una región con una región emparejada, puede distribuir el VHD a una cuenta de almacenamiento personalizada que use almacenamiento con redundancia geográfica (GRS) o almacenamiento con redundancia geográfica de zona (GZRS). GRS de acceso de lectura (RA-GRS) y GZRS de acceso de lectura (RA-GZRS) proporcionan acceso de solo lectura a través de un punto de conexión secundario, pero no realizan la conmutación por error. Para restaurar el acceso normal de lectura y escritura en la región emparejada, inicie una conmutación por error administrada por el cliente o copie el VHD del punto de conexión secundario en una cuenta de almacenamiento independiente. La replicación geográfica es asincrónica, por lo que una conmutación por error no planeada podría perder datos que no se replicaron. Compruebe la propiedad Hora de la última sincronización de la cuenta de almacenamiento antes de la conmutación por error cuando sea posible.

      Para obtener más información sobre el comportamiento de conmutación por error de Blob Storage y enfoques alternativos para replicar datos entre regiones no emparejadas, consulte Confiabilidad en Azure Blob Storage.

Soluciones de varias regiones personalizadas para la resistencia

Si necesita mantener la compilación de imágenes durante una interrupción de la región, es responsable de implementar y operar entornos de compilación independientes en varias regiones.

Elija regiones que admitan VM Image Builder. En cada región de compilación, preimplemente una plantilla de imagen y sus dependencias específicas de la región, incluidas las identidades administradas y las asignaciones de roles, la configuración de red, los artefactos de personalización, una imagen de origen o una réplica de imagen y destinos de distribución.

Si necesita publicar imágenes si la región de una galería no está disponible, use un recurso independiente de Compute Gallery en cada región de compilación. La replicación de versiones de imagen desde una sola galería no hace que la galería sea un recurso totalmente multiregión.

Defina estos recursos mediante la infraestructura como código y trate esas definiciones como fuente de verdad. Mantenga sincronizados los entornos regionales cuando cambie la configuración y pruebe periódicamente que cada entorno puede compilar y distribuir una imagen.

Copias de seguridad y restauración

Azure VM Image Builder no reemplaza el proceso de copia de seguridad y recuperación. En la mayoría de los casos, el artefacto que importa para la recuperación es la imagen finalizada que se publica en Azure Compute Gallery o almacenamiento VHD.

Para mejorar la recuperación ante daños o una interrupción no planeada prolongada, siga estas recomendaciones:

  • Conservar las imágenes publicadas en Azure Compute Gallery u otros destinos de distribución según sus requisitos de retención.

  • Si crea un disco duro virtual y usa el destino de VHD predeterminado, copie el disco duro virtual en su propio almacenamiento duradero antes de eliminar la plantilla de imagen.

  • Use el control de código fuente para almacenar las definiciones de las plantillas de imagen y aplicar control de versiones.

  • Use el control de código fuente u otro tipo de almacenamiento duradero para almacenar los scripts y paquetes de personalización y aplicarles control de versiones.

  • Valide periódicamente que cada entorno de recuperación preimplementado pueda compilar y distribuir una imagen.

Resistencia al mantenimiento del servicio

Microsoft administra el mantenimiento de Azure VM Image Builder. VM Image Builder no atiende el tráfico de la aplicación en el entorno de ejecución, por lo que el mantenimiento no afecta a las máquinas virtuales que ya ha creado a partir de las imágenes publicadas. Si una compilación se retrasa o se interrumpe durante el mantenimiento u otro evento de servicio, inspeccione su estado y registros y vuelva a ejecutarla.

Use Azure Service Health para supervisar el mantenimiento planeado y los incidentes del servicio que puedan afectar a la región de compilación.

Acuerdo de nivel de servicio

Azure VM Image Builder no proporciona un contrato de nivel de servicio (SLA) de disponibilidad.

Cualquier Acuerdo de Nivel de Servicio que se aplique a un destino de distribución o servicio de almacenamiento se aplica por separado y no proporciona un compromiso de disponibilidad para la plantilla de VM Image Builder o las operaciones de compilación.