Introducción a MaintenanceControl en los clústeres administrados de Service Fabric

Los clústeres administrados de Service Fabric tienen varias operaciones en segundo plano necesarias para mantener actualizado todo el clúster, lo que garantiza la seguridad y la confiabilidad. Aunque estas operaciones son críticas, ejecutarlas en segundo plano puede dar lugar a que la réplica de servicio se mueva a un nodo diferente. Esta conmutación por error produce interrupciones innecesarias y no deseadas, si la operación de mantenimiento se ejecuta durante el horario comercial máximo. Con la compatibilidad con MaintenanceControl en clústeres administrados de Service Fabric, los clientes pueden definir una ventana de mantenimiento periódica (diaria, semanal, mensual) y personalizada para su recurso de clúster de SFMC, según sus necesidades. Todas las operaciones de mantenimiento en segundo plano solo se podrán ejecutar durante esta ventana de mantenimiento. MaintenanceControl es aplicable a estas operaciones en segundo plano:

  • Actualización automática del sistema operativo
  • Actualización automática de extensiones
  • Actualizaciones automáticas de la versión del entorno de ejecución de SF
  • Actualización automática de certificados de clúster

Requisitos:

  • La configuración de la ventana de mantenimiento solo debe definirse para el recurso de clúster administrado de Service Fabric
  • El tamaño mínimo admitido de la ventana es de 5 horas

¿Cómo funciona MaintenanceControl para SFMC?

  • Los clientes deben definir una configuración de mantenimiento que contenga la programación y la regla de periodicidad para la ventana de mantenimiento mediante la creación de un recurso de configuración de mantenimiento con el punto de retención de mantenimiento. Más detalles
  • Con esta configuración de mantenimiento, se crea un recurso de asignación para asignar la configuración de mantenimiento al recurso de clúster SFMC.
  • en la creación del recurso de asignación, el punto de retención de mantenimiento notifica al punto de retención de ServiceFabric sobre el vínculo y el control de mantenimiento se habilita en el clúster de SFMC. Todas las operaciones de mantenimiento en segundo plano se bloquean fuera de la ventana de mantenimiento.
  • Cada vez que la ventana de mantenimiento se activa según la programación de la configuración de mantenimiento, el punto de retención de mantenimiento notifica al punto de retención de ServiceFabric que activa la ventana de mantenimiento en el clúster de SFMC correspondiente. Todas las operaciones en segundo plano pueden ejecutarse durante esta ventana.

Implementación de ejemplo

El siguiente es un proceso paso a paso para configurar un clúster con control de mantenimiento. Descargue este ejemplo, que contiene todos los recursos necesarios. Ejemplo de clúster administrado de la SKU estándar de Service Fabric

  1. Crear un grupo de recursos en una región:

    Login-AzAccount
    Select-AzSubscription -SubscriptionId $subscriptionid
    New-AzResourceGroup -Name $myresourcegroup -Location $location
    
  2. Creación de un recurso de clúster:

    Ejecute este comando para implementar el recurso de clúster:

    $parameters = @{
    clusterName = $clusterName
    adminPassword = $VmAdminPassword
    clientCertificateThumbprint = $clientCertificateThumbprint
    }
    New-AzResourceGroupDeployment -Name "deploy_cluster" -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterObject $parameters -Verbose
    
  3. Configure el control de mantenimiento en el clúster mediante la siguiente configuración de mantenimiento:

Esta configuración de mantenimiento define una programación para que las actualizaciones se produzcan cada día desde 10PM PST durante 5 horas, a partir del 30-05-2023. Más detalles sobre la configuración de mantenimiento

    "resources": [
        {
            "type": "Microsoft.Maintenance/maintenanceConfigurations",
            "apiVersion": "2022-07-01-preview",
            "name": "mc1",
            "location": "[parameters('location')]",
            "properties": {
                "maintenanceScope": "Resource",
                "extensionProperties": {
                   "maintenanceSubScope": "SFMC"
                },
                "maintenanceWindow": {
                    "startDateTime": "2023-05-30 22:00",
                    "duration": "05:00",
                    "timeZone": "Pacific Standard Time",
                    "expirationDateTime": null,
                    "recurEvery": "1Day"
                }
            }
        }

Nota:

Como se describe en la configuración, la configuración de mantenimiento para el recurso del clúster de SFMC debe tener maintenanceScope: "Resource" y maintenanceSubScope: "SFMC".

Una vez creada la configuración de mantenimiento, debe asociarse al clúster de SFMC mediante el recurso de asignación. Más detalles sobre la asignación:

    "resources": [
        { 
           "type": "Microsoft.Resources/deployments",
            "apiVersion": "2022-09-01",
            "name": "ConfigurationAssignmentsName",
            "dependsOn": [
                "[concat('Microsoft.Maintenance/maintenanceConfigurations/', 'mc1')]",
                "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
            ],
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "http://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
                    "resources": [
                        {
                            "apiVersion": "2022-07-01-preview",
                            "type": "Microsoft.Maintenance/configurationAssignments",
                            "name": "mc1Assignment",
                            "location": "[parameters('location')]",
                            "scope": "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]",
                            "tags": {},
                            "properties": {
                                "maintenanceConfigurationId": "/subscriptions/<subId>/resourcegroups/<rgName>/providers/microsoft.maintenance/maintenanceconfigurations/mc1"
                            }
                        }
                    ]
                }
            },
            "subscriptionId": "<subId>",
            "resourceGroup": "<rgName>"
        }

Para comprobar el estado de la configuración de mantenimiento, use la acción Obtener ventana de mantenimiento.

$resourceGroupName = "testResourceGroup"
$clusterName = "testCluster"
Invoke-AzResourceAction -ResourceGroupName $resourceGroupName -ResourceName $clusterName -ResourceType Microsoft.ServiceFabric/managedclusters -Action getMaintenanceWindowStatus

Si faltan notificaciones y hay una actualización pendiente de tiempo crítica que se puede aplicar de forma segura, se puede aplicar manualmente una ventana de mantenimiento de 5 horas mediante la acción Aplicar estado de la ventana de mantenimiento.

$resourceGroupName = "testResourceGroup"
$clusterName = "testCluster"
Invoke-AzResourceAction -ResourceGroupName $resourceGroupName -ResourceName $clusterName -ResourceType Microsoft.ServiceFabric/managedclusters -Action applyMaintenanceWindow

Nota:

  • Para deshabilitar el control de mantenimiento en el clúster, desasigne o elimine la asignación del clúster.
  • Los recursos de mantenimiento y el recurso de clúster de SFMC se deben crear en la misma región de Azure y suscripción.

Nota:

Problemas conocidos:

  • Al eliminar solo el recurso de configuración de mantenimiento, no se deshabilitará MaintenanceControl. Para deshabilitar MaintenanceControl, primero debe eliminar la configAssignment del clúster antes de eliminar el recurso de configuración de mantenimiento.