Compartir vía


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 asunción inherente de que, en algún momento, se van a colocar servicios con estado en los nodos. Los tipos de nodo sin estado canbian esta asunció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.

Habilitar tipos de nodo sin estado en un clúster administrado de 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 de acceso puntual en un clúster administrado en Service Fabric

Azure Spot Virtual Machines en conjuntos de escalado permite a los usuarios aprovechar las ventajas de nuestra 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 de máquina virtual de acceso puntual son excelentes para las cargas de trabajo que pueden controlar las interrupciones y no es necesario que se completen en un período 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 establecer uno o varios tipos de nodo sin estado para usar la máquina virtual de acceso puntual, establezca las propiedades isStateless e IsSpotVM en true. 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 forma 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')]"
  }
}

Habilitación de máquinas virtuales de acceso puntual con intento de restauración

Esta configuración permite que la plataforma intente restaurar automáticamente las máquinas virtuales de acceso puntual expulsadas. Consulte el documento del conjunto de escalado de máquinas virtuales para obtener 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 resistencia de zona

Para 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 resistencia zonal debe establecerse en el nivel de clúster, y no se puede cambiar en su ubicación.

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 como 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
  }
}

Migración para 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: