你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

通过无状态节点类型部署 Service Fabric 托管群集

关于 Service Fabric 节点类型,存在一种固有假设,即在某个时间点,有状态服务可能会被放置到节点上。 无状态节点类型更改了节点类型的这一假设。 这样,节点类型就可以受益于更快的横向扩展操作、自动 OS 升级支持、现成 VM 以及将一个节点类型横向扩展到超过 100 个节点等功能。

  • 主节点类型不能配置为无状态。
  • 无状态节点类型需使用 2021-05-01 或更高版本的 API。
  • 这样会自动将 multipleplacementgroup 属性设置为 true,可在此处了解相关详细信息。 启用此属性的基础虚拟机规模集要求和限制适用于 Service Fabric 托管群集。
  • 这样,给定节点类型将最多支持 1000 个节点。
  • 无状态节点类型可以利用 VM SKU 临时磁盘。

在 Service Fabric 托管群集中启用无状态节点类型

若要在节点类型资源中将一个或多个节点类型设置为无状态,请将“isStateless”属性设置为“true” 。 部署具有无状态节点类型的 Service Fabric 群集时,设置需至少具有一种在群集中不是无状态的主节点类型。

现提供示例模板:Service Fabric 无状态节点类型模板

  • Service Fabric 托管群集资源 apiVersion 应为 2021-05-01 或更高版本。
{
  "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')]"
  }
}

使用 Service Fabric 托管群集中的现成 VM 启用无状态节点类型

规模集上的 Azure 现成虚拟机支持用户利用未使用的计算容量,同时大幅降低成本。 每当 Azure 需要回收容量时,Azure 基础结构就会逐出这些 Azure 现成虚拟机实例。 因此,现成 VM 节点类型非常适合于可以处理中断、且不需要在特定时间范围内完成的工作负载。 建议的工作负载包括开发、测试、批处理作业、大数据或其他大规模无状态场景。

若要将一种或多种无状态节点类型设置为使用现成 VM,请将 isStateless 和 IsSpotVM 属性设置为 true。 部署具有无状态节点类型的 Service Fabric 群集时,需至少具有一种在群集中不是无状态的主节点类型。 配置为使用现成 VM 的无状态节点类型默认将“逐出策略”设置为“删除”。 客户可以将“evictionPolicy”配置为“删除”或“解除分配”,但这只能在创建节点类型时定义。

现提供示例模板:Service Fabric 现成节点类型模板

  • Service Fabric 托管群集资源 apiVersion 应为 2022-06-01-preview 或更高版本。
{
  "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')]"
  }
}

通过“尝试与还原”启用现成 VM

此配置使平台能够自动尝试还原已逐出的现成 VM。 有关详细信息,请参阅虚拟机规模集文档。 只能通过指定 spotRestoreTimeout(这是一个 ISO 8601 持续时间,其值介于 30 和 2880 分钟之间)在新的现成节点类型上启用此配置。 在逐出后,平台将尝试在这段时间内还原 VM。

{
  "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')]"
  }
}

为区域复原能力配置无状态节点类型

若要为区域复原能力配置无状态节点类型,必须在群集级别配置托管群集区域跨越

注意

必须在群集级别设置区域复原能力属性,并且不能就地更改该属性。

临时磁盘支持

可以将无状态节点类型配置为使用临时磁盘作为数据磁盘,而不是托管磁盘。 使用临时磁盘可以降低无状态工作负载的成本。 若要将无状态节点类型配置为使用临时磁盘,将 useTempDataDisk 属性设置为 true

  • 临时磁盘大小必须为 32 GB 或更多。 临时磁盘的大小取决于 VM 大小。
  • 服务器端加密不会加密临时磁盘,除非你在主机上启用加密。
  • Service Fabric 托管群集资源 apiVersion 应为 2022-01-01 或更高版本。
{
  "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
  }
}

迁移为在群集中使用无状态节点类型

对于所有迁移场景,都需要添加一个新的无状态节点类型。 现有节点类型不能迁移为无状态。 可以向现有 Service Fabric 托管群集添加新的无状态节点类型,并从该群集中删除所有初始节点类型。

后续步骤

若要详细了解 Service Fabric 托管群集,请参阅: