ステートレス ノード タイプを使用した Service Fabric マネージド クラスターのデプロイ

Service Fabric ノード タイプには、ある時点でステートフル サービスがノードに配置されるという固有の前提があります。 ステートレス ノード タイプでは、ノード タイプのこの前提が変わります。 これにより、このノード タイプでは、スケールアウト操作の高速化、OS の自動アップグレードのサポート、スポット VM、1 つのノード タイプでの 100 を超えるノードへのスケールアウトといった機能を利用できます。

  • プライマリ ノード タイプをステートレスに構成することはできません。
  • ステートレス ノード タイプには 2021-05-01 以降の API バージョンが必要です。
  • これにより multipleplacementgroup プロパティが自動的に true に設定されます。詳細についてはこちらを参照してください。
  • これにより、指定のノード タイプに対して最大 1,000 ノードのサポートが可能になります。
  • ステートレス ノード タイプは、VM SKU の一時ディスクを利用できます。

Service Fabric マネージド クラスターでステートレス ノード タイプを有効にする

ノード タイプ リソースで 1 つまたは複数のノード タイプをステートレスとして設定するには、isStateless プロパティを true に設定します。 ステートレス ノード タイプを使用して Service Fabric クラスターをデプロイする場合、クラスター内でステートレスではないプライマリ ノード タイプが少なくとも 1 つ必要になります。

サンプル テンプレートを使用できます。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 Spot Virtual Machines を使用すると、ユーザーは大幅にコストを削減して未使用のコンピューティング容量を利用できます。 Azure で容量の回復が必要になると、Azure インフラストラクチャによってそれらの Azure Spot Virtual Machine インスタンスが削除されます。 そのため、スポット VM ノード タイプは、中断に対応でき、特定の期間内に完了する必要のないワークロードに適しています。 お勧めするワークロードとして、開発、テスト、バッチ処理ジョブ、ビッグ データ、またはその他の大規模なステートレス シナリオが含まれます。

スポット VM を使用するように 1 つ以上のステートレス ノードタイプを設定するには、isStatelessIsSpotVM の両方のプロパティを true に設定します。 ステートレス ノード タイプを使用して Service Fabric クラスターをデプロイする場合、クラスター内でステートレスではないプライマリ ノード タイプが少なくとも 1 つ必要になります。 スポット VM を使用するように構成されたステートレス ノード タイプでは、削除ポリシーは、既定では "Delete" に設定されます。 お客様は、"evictionPolicy" が "Delete" または "Deallocate" になるように構成できますが、これは、ノード タイプの作成時にのみ定義できます。

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 (値が 30 から 2880 分の ISO 8601 形式の期間) を指定して、新しいスポット ノードタイプに対してのみ有効にできます。 プラットフォームは、VM が削除された後、この期間 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')]"
  }
}

ゾーンの回復性用にステートレス ノード タイプを構成する

ゾーンの回復性用にステートレス ノード タイプを構成するには、クラスター レベルでマネージド クラスター ゾーン スパニングを構成する必要があります。

Note

ゾーン回復性プロパティはクラスターレベルで設定する必要があり、このプロパティはインプレースでは変更できません。

一時ディスクのサポート

ステートレス ノード タイプは、マネージド ディスクではなく、一時ディスクをデータ ディスクとして使用するように構成できます。 一時ディスクを使用すると、ステートレス ワークロードのコストを削減できます。 一時ディスクを使用するようにステートレスなノードの種類を構成するには、 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 マネージド クラスターについて詳しくは、以下の記事をご覧ください。