Implementación de un clúster administrado de Service Fabric con tipos de nodo sin estado

Los tipos de nodo de Service Fabric vienen con una suposición inherente de que, en algún momento, se van a colocar servicios con estado en los nodos. Los tipos de nodo sin estado cambian esta suposición para un tipo de nodo. Esto permite que el tipo de nodo se beneficie de características como operaciones de escalabilidad horizontal más rápidas, compatibilidad con actualizaciones automáticas del sistema operativo, máquinas virtuales de acceso puntual y escalado horizontal a más de 100 nodos en un tipo de nodo.

  • Los tipos de nodo principales no se pueden configurar para que no tengan estado.
  • Los tipos de nodo sin estado requieren una versión de API 2021-05-01 o posterior.
  • La propiedad multipleplacementgroup se establecerá automáticamente en true. Puede obtener más información sobre esta propiedad aquí. Los requisitos y limitaciones subyacentes del conjunto de escalado de máquinas virtuales para habilitar esta propiedad se aplican a los conjuntos de clústeres administrados por Service Fabric.
  • Esto permite admitir hasta 1 000 nodos para el tipo de nodo especificado.
  • Los tipos de nodo sin estado pueden usar un disco temporal de SKU de máquina virtual.

Habilitación de tipos de nodos sin estado en un clúster gestionado por Service Fabric

Para establecer uno o más tipos de nodo como sin estado en un recurso de tipo de nodo, establezca la propiedad isStateless en true. Al implementar un clúster de Service Fabric con tipos de nodos sin estado, la configuración requiere al menos un tipo de nodo primario que no sea sin estado en el clúster.

Están disponibles plantillas de ejemplo: Plantilla de tipos de nodos sin estado de Service Fabric

  • El valor de apiVersion del recurso de clúster administrado de Service Fabric debe ser 2021-05-01 o posterior.
{
  "apiVersion": "[variables('sfApiVersion')]",
  "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
  "name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
  "location": "[resourcegroup().location]",
  "dependsOn": [
    "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
  ],
  "properties": {
    "isStateless": true,
    "isPrimary": false,
    "vmImagePublisher": "[parameters('vmImagePublisher')]",
    "vmImageOffer": "[parameters('vmImageOffer')]",
    "vmImageSku": "[parameters('vmImageSku')]",
    "vmImageVersion": "[parameters('vmImageVersion')]",
    "vmSize": "[parameters('nodeTypeSize')]",
    "vmInstanceCount": "[parameters('nodeTypeVmInstanceCount')]",
    "dataDiskSizeGB": "[parameters('nodeTypeDataDiskSizeGB')]"
  }
}

Habilitación de tipos de nodo sin estado mediante máquinas virtuales Spot en un clúster administrado en Service Fabric

Azure Spot Virtual Machines en conjuntos de escalado permite a los usuarios aprovechar las ventajas de la capacidad de proceso no utilizada con un importante ahorro en los costos. En cualquier momento en que Azure necesite volver a disponer de esa capacidad, la infraestructura de Azure desaloja estas instancias de máquina virtual de acceso puntual. Por lo tanto, los tipos de nodo Spot VM son excelentes para las cargas de trabajo que pueden manejar interrupciones y no necesitan completarse dentro de un marco de tiempo específico. Las cargas de trabajo recomendadas incluyen desarrollo, pruebas, trabajos de procesamiento por lotes, macrodatos u otros escenarios sin estado a gran escala.

Para configurar uno o varios tipos de nodo sin estado para usar Spot VM, establezca las propiedades isStateless e IsSpotVM en verdadero. Cuando se implementa un clúster de Service Fabric con tipos de nodos sin estado, es necesario tener al menos un tipo de nodo primario que no sea sin estado en el clúster. Los tipos de nodo sin estado configurados para usar máquinas virtuales de acceso puntual tienen la directiva de expulsión establecida en "Delete" de manera predeterminada. Los clientes pueden configurar "evictionPolicy" para establecerla en "Delete" o "Deallocate", pero esto solo se puede definir en el momento de la creación del tipo de nodo.

Hay disponibles plantillas de ejemplo: Plantilla de tipos de nodos de acceso puntual de Service Fabric.

  • El valor de apiVersion del recurso de clúster administrado de Service Fabric debe ser 2022-06-01-preview o posterior.
{
  "apiVersion": "[variables('sfApiVersion')]",
  "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
  "name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
  "location": "[resourcegroup().location]",
  "dependsOn": [
    "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
  ],
  "properties": {
    "isStateless": true,
    "isPrimary": false,
    "IsSpotVM": true,
    "vmImagePublisher": "[parameters('vmImagePublisher')]",
    "vmImageOffer": "[parameters('vmImageOffer')]",
    "vmImageSku": "[parameters('vmImageSku')]",
    "vmImageVersion": "[parameters('vmImageVersion')]",
    "vmSize": "[parameters('nodeTypeSize')]",
    "vmInstanceCount": "[parameters('nodeTypeVmInstanceCount')]",
    "dataDiskSizeGB": "[parameters('nodeTypeDataDiskSizeGB')]"
  }
}

Activación de máquinas virtuales de Spot con Try & Restore

Esta configuración permite que la plataforma intente restaurar automáticamente las máquinas virtuales de acceso puntual expulsadas. Consulte la documentación del conjunto de escalado de máquinas virtuales para más información. Esta configuración solo se puede habilitar en nuevos tipos de nodo de acceso puntual al especificar spotRestoreTimeout, que indica una duración de tiempo ISO 8601 con un valor comprendido entre 30 y 2880 minutos. La plataforma intentará restaurar las máquinas virtuales durante este intervalo de tiempo, después de la expulsión.

{
  "apiVersion": "[variables('sfApiVersion')]",
  "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
  "name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
  "location": "[resourcegroup().location]",
  "dependsOn": [
    "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
  ],
  "properties": {
    "isStateless": true,
    "isPrimary": false,
    "IsSpotVM": true,
    "evictionPolicy": "deallocate",
    "spotRestoreTimeout": "PT30M",
    "vmImagePublisher": "[parameters('vmImagePublisher')]",
    "vmImageOffer": "[parameters('vmImageOffer')]",
    "vmImageSku": "[parameters('vmImageSku')]",
    "vmImageVersion": "[parameters('vmImageVersion')]",
    "vmSize": "[parameters('nodeTypeSize')]",
    "vmInstanceCount": "[parameters('nodeTypeVmInstanceCount')]",
    "dataDiskSizeGB": "[parameters('nodeTypeDataDiskSizeGB')]"
  }
}

Configuración de tipos de nodo sin estado para la resiliencia de la zona

A fin de configurar un tipo de nodo sin estado para la resistencia de zona, debe configurar el intervalo de zona de clúster administrado a nivel de clúster.

Nota:

La propiedad de resiliencia de zona debe establecerse a nivel de clúster y esta propiedad no se puede modificar posteriormente.

Compatibilidad con discos temporales

Los tipos de nodo sin estado se pueden configurar para usar el disco temporal como disco de datos en lugar de un disco administrado. El uso de un disco temporal puede reducir los costos de las cargas de trabajo sin estado. Para configurar un tipo de nodo sin estado para usar el disco temporal, establezca la propiedad useTempDataDisk en true.

  • El tamaño del disco temporal debe ser de 32 GB o más. El tamaño del disco temporal depende del tamaño de la máquina virtual.
  • El cifrado del lado servidor no cifra el disco temporal, a menos que habilite el cifrado en el host.
  • El valor de apiVersion del recurso de clúster administrado de Service Fabric debe ser 2022-01-01 o posterior.
{
  "apiVersion": "[variables('sfApiVersion')]",
  "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
  "name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
  "location": "[resourcegroup().location]",
  "dependsOn": [
    "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
  ],
  "properties": {
    "isStateless": true,
    "isPrimary": false,
    "vmImagePublisher": "[parameters('vmImagePublisher')]",
    "vmImageOffer": "[parameters('vmImageOffer')]",
    "vmImageSku": "[parameters('vmImageSku')]",
    "vmImageVersion": "[parameters('vmImageVersion')]",
    "vmSize": "[parameters('nodeTypeSize')]",
    "vmInstanceCount": "[parameters('nodeTypeVmInstanceCount')]",
    "useTempDataDisk": true
  }
}

Migrar a usar tipos de nodo sin estado en un clúster

En todos los escenarios de migración es necesario agregar un nuevo tipo de nodo sin estado. Un tipo de nodo existente no se puede migrar para que sea sin estado. Puede agregar un nuevo tipo de nodo sin estado a un clúster administrado de Service Fabric existente y quitar los tipos de nodo originales del clúster.

Pasos siguientes

Para más información acerca de los clústeres administrados de Service Fabric, consulte: