Instalación y actualización de aplicaciones en Virtual Machine Scale Sets
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, aprenderá a usar una extensión de script personalizada 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 (VM) 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 personalizada con la CLI de Azure, cree un archivo de configuración que defina los archivos para 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 personalizada que descarga una aplicación de un repositorio en GitHub e la 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, use una extensión de script personalizada. 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. Consulte un script de implementación actualizado y 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"
}
Puede usar el mismo comando az vmss extension set
mostrado anteriormente para implementar la aplicación actualizada, pero esta vez, consulte el 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. Esta directiva cuando se crea por primera vez el 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