Instalación y actualización de aplicaciones en Virtual Machine Scale Sets

Completado

Al implementar una aplicación en un conjunto de escalado, necesita un mecanismo que actualice la aplicación de forma coherente, en todas las instancias del conjunto de escalado. Para conseguir esto, use una extensión de script personalizado.

En el escenario de la empresa de transportes, necesita una forma rápida de implementar las actualizaciones en la aplicación, a la vez que se minimiza la interrupción del servicio para los usuarios finales. Una extensión de script personalizado es una solución ideal.

En esta unidad, obtendrá información sobre cómo usar una extensión de script personalizado para actualizar una aplicación que se ejecuta en un conjunto de escalado.

¿Qué es una extensión de script personalizado de Azure?

Una extensión de script personalizado de Azure descarga y ejecuta un script en una máquina virtual de Azure. Puede automatizar las mismas tareas en todas las máquinas virtuales de un conjunto de escalado.

Almacene los scripts personalizados en Azure Storage o en GitHub. Para agregar uno a una máquina virtual, puede usar Azure Portal. Para ejecutar scripts personalizados como parte de una implementación con plantilla, combine una extensión de script personalizado con plantillas de Azure Resource Manager.

Instalación de una aplicación en un conjunto de escalado mediante una extensión de script personalizado

Para usar una extensión de script personalizado con la CLI de Azure, cree un archivo de configuración que defina los archivos que se van a obtener y los comandos que se van a ejecutar. El archivo está en formato JSON.

En el ejemplo siguiente, se muestra una configuración de script personalizado que descarga una aplicación desde un repositorio de GitHub y lo instala en una instancia de host mediante la ejecución de un script denominado custom_application_v1.sh:

# yourConfigV1.json 
{
  "fileUris": ["https://raw.githubusercontent.com/yourrepo/master/custom_application_v1.sh"],
  "commandToExecute": "./custom_application_v1.sh"
}

Para implementar esta configuración en el conjunto de escalado, usará una extensión de script personalizado. En el código siguiente, se muestra cómo crear una extensión de script personalizado para un conjunto de escalado de máquinas virtuales mediante la CLI de Azure. Este comando instala la nueva aplicación en las máquinas virtuales de todo el conjunto de escalado:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name yourScaleSet \
  --settings @yourConfigV1.json

Actualización de una aplicación en un conjunto de escalado mediante una extensión de script personalizado

Puede usar una extensión de script personalizado para actualizar una aplicación existente en un conjunto de escalado de máquinas virtuales. Haga referencia a un script de implementación actualizado y, después, vuelva a aplicar la extensión al conjunto de escalado. Por ejemplo, en el código JSON siguiente se muestra una configuración en la que se obtiene una nueva versión de una aplicación y se instala:

# yourConfigV2.json
{
  "fileUris": ["https://raw.githubusercontent.com/yourrepo/master/custom_application_v2.sh"],
  "commandToExecute": "./custom_application_v2.sh"
}

Después, use el mismo comando az vmss extension set que se ha mostrado anteriormente para implementar la aplicación actualizada; pero, esta vez, haga referencia al nuevo archivo de configuración:

az vmss extension set \
    --publisher Microsoft.Azure.Extensions \
    --version 2.0 \
    --name CustomScript \
    --resource-group yourResourceGroup \
    --vmss-name yourScaleSet \
    --settings @yourConfigV2.json

Las máquinas virtuales se actualizan según la directiva de actualización del conjunto de escalado. Especifique esta directiva al crear el primer conjunto de escalado. La directiva de actualización puede tener uno de los tres modos siguientes:

  • Automática: el conjunto de escalado no define cuándo se actualizan las máquinas virtuales. Todas se podrían actualizar al mismo tiempo, lo que causaría una interrupción del servicio.
  • Implementación: el conjunto de escalado implementa la actualización en lotes entre las máquinas virtuales del conjunto de escalado. Una pausa opcional puede minimizar o eliminar una interrupción del servicio. En este modo, es posible que las máquinas del conjunto de escalado ejecuten otras versiones de la aplicación durante un breve período de tiempo. En este modo es necesario que agregue un sondeo de mantenimiento al conjunto de escalado, o bien que le aplique la extensión de estado de la aplicación.
  • Manual: las máquinas virtuales existentes en el conjunto de escalado no se actualizan. Todos los cambios se deben realizar de forma manual. Este modo es el predeterminado.

Para especificar el modo de la directiva de actualización al aprovisionar un conjunto de escalado de máquinas virtuales, puede usar la opción upgrade-policy-mode. En el ejemplo de código siguiente se usa la CLI de Azure:

az vmss create \
  --resource-group MyResourceGroup \
  --name MyScaleSet \
  --image Ubuntu2204 \
  --upgrade-policy-mode automatic \
  --admin-username azureuser \
  --generate-ssh-keys