Service Fabric のマネージド クラスターのノード タイプ
仮想マシン スケール セットは、Service Fabric マネージド クラスター内の各ノード タイプをサポートします。 マネージド クラスターでは、Service Fabric マネージド クラスター リソースプロバイダーを使用して必要な変更を行います。 クラスターの基礎となるすべてのリソースは、ユーザーに代わってマネージド クラスター プロバイダーが作成と抽象化を行います。 リソースの管理をリソース プロバイダーに任せると、クラスター ノード タイプのデプロイと管理が簡略化されます。 管理により、シード ノードの削除などの操作エラーを防ぐことができます。また、仮想マシン (VM) SKU を安全に使用できるかどうかの検証など、ベスト プラクティスの適用に役立ちます。
このドキュメントの残りの部分では、次のようなさまざまな設定を調整する方法について説明します。
- ノード タイプを作成する
- ノード タイプのインスタンス数を調整する
- OS イメージの自動アップグレードを有効にする
- OS イメージを変更する
- 配置プロパティを構成する
- コンピューター名のプレフィックスを設定する
このドキュメントでは、Azure portal と Azure Resource Manager テンプレートを使用して変更を加えることに焦点を当てています。
重要
現時点では、Service Fabric マネージド クラスターはカスタム OS イメージをサポートしていません。
Note
変更の進行中はノード タイプを変更できません。 要求された変更を完了してから別の変更を行うことをお勧めします。
ノード タイプの追加
ポータル、Azure Resource Manager テンプレート、または PowerShell を使って、Service Fabric マネージド クラスターにノード タイプを追加できます。
ポータルで追加する
Note
ポータルを使って追加できるのは、セカンダリ ノード タイプのみです
Azure ポータル にサインインします
クラスター リソースの [概要] ページに移動します。
Settings
セクションのNode types
を選びます上部の
Add
を選び、必要な情報を入力して、下部の [追加] を選ぶだけで完了です。新しいノード タイプの追加が終わるまで待ちます
ARM テンプレートで追加する
必要な値を持使用して別のリソースの種類 Microsoft.ServiceFabric/managedclusters/nodetypes
を追加し、設定を有効にするためにクラスターの展開を実行します。
- Service Fabric マネージド クラスター リソースの apiVersion は、2021-05-01 以降である必要があります。
- 既存のプライマリ ノード タイプを置き換える場合は、
isPrimary
をtrue
に設定してください。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeType2Name'))]",
"location": "[resourcegroup().location]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
],
"properties": {
"isPrimary": false,
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
"vmSize": "[parameters('nodeType2VmSize')]",
"vmInstanceCount": "[parameters('nodeType2VmInstanceCount')]",
"dataDiskSizeGB": "[parameters('nodeType2DataDiskSizeGB')]",
"dataDiskType": "[parameters('nodeType2managedDataDiskType')]"
}
}
2 つのノード タイプの構成例については、2 つのノード タイプの ARM テンプレートのサンプルを参照してください。
PowerShell を使用して追加
新しいノード タイプを作成するには、次のプロパティを定義する必要があります。
- リソース グループ: クラスターが含まれるリソース グループ
- クラスター名: マネージド クラスターの名前
- ノード タイプ名:クラスター内のどの既存のノード タイプにもない名前。
- インスタンス数:新しいノード タイプの初期ノード数。
- [VM サイズ] :ノードの VM SKU。 指定されていない場合は、既定値の Standard_D2 が使用されます。
Note
プライマリ ノード タイプを追加する場合は、-Primary
プロパティを使う必要があります。
$resourceGroup = "myResourceGroup"
$clusterName = "mysfcluster"
$nodeTypeName = "nt2"
$vmSize = "Standard_D2_v2"
New-AzServiceFabricManagedNodeType -ResourceGroupName $resourceGroup -ClusterName $clusterName -Name $nodeTypeName -InstanceCount 3 -vmSize $vmSize
ノード タイプを削除する
ポータルまたは PowerShell を使って、Service Fabric マネージド クラスターのノード タイプを削除できます。
Note
Service Fabric マネージド クラスターからプライマリ ノード タイプを削除するには PowerShell を使う必要があり、使用できるプライマリ ノード タイプが複数存在している必要があります。
ポータルで削除する
Azure ポータル にサインインします
クラスター リソースの [概要] ページに移動します。
Settings
セクションのNode types
を選びます削除する
Node Type
を選び、上部のDelete
を選びます。
PowerShell で削除する
Note
SKU のアップグレードなどのシナリオでプライマリ ノード タイプを削除する場合は、何時間もかかり、SFX を使って進行状況を監視できます。 シード ノードの場合、アップグレード ドメイン (UD) ウォークごとに一度に 1 つのノードが移行されます。
ノード タイプを削除するには、次のプロパティを定義する必要があります。
- リソース グループ: クラスターが含まれるリソース グループ
- クラスター名: マネージド クラスターの名前
- ノード タイプ名:クラスター内のどの既存のノード タイプにもない名前。
$resourceGroup = "myResourceGroup"
$clusterName = "myCluster"
$nodeTypeName = "nt2"
Remove-AzServiceFabricManagedNodeType -ResourceGroupName $resourceGroup -ClusterName $clusterName -Name $nodeTypeName
ノード タイプをスケーリングする
ポータル、ARM テンプレート、または PowerShell を使って、Service Fabric マネージド クラスターのノード タイプをスケーリングできます。 完全に自動化されたソリューションが必要な場合は、セカンダリ ノード タイプの自動スケーリングを構成することもできます。
Note
- プライマリ ノード タイプは、自動スケーリングに設定することはできず、手動スケーリングにのみ設定できます。
- プライマリ ノード タイプの場合、ノード数を 3 未満 (Basic SKU クラスターの場合) や 5 未満 (Standard SKU クラスターの場合) にすることはできません。
ポータルを使用してスケーリングする
このチュートリアルでは、ポータルを使用してノード タイプのノード数を変更する方法について説明します。
Azure ポータル にサインインします
クラスター リソースの [概要] ページに移動します。
Settings
セクションでNode Types
を選択します変更したい
Node type name
を選択します必要に応じてノード タイプ プロパティを確認し、更新します。
Manage node type scaling
を選択してスケーリング設定を構成し、カスタム自動スケーリング オプションと手動スケーリング オプションのどちらかを選択します。 自動スケーリングは組み込みの機能であり、需要が変化した場合にアプリケーションが最適な操作を実行できるようにします。 リソースをスケーリングする方法として、特定のインスタンス数に合わせて手動で行うか、メトリックのしきい値に基づいてスケーリングするカスタムの自動スケーリング ポリシーを使用するかを選択できます。 指定した時間枠内にスケーリングするインスタンス数をスケジュールすることもできます。 Azure 自動スケーリングの詳細を確認するか、ハウツー ビデオを視聴します。[カスタム自動スケーリング]: 適切な
scale mode
を選択して、カスタム自動スケーリング ポリシー (Scale to a specific instance count
またはScale based on a metric
) を定義します。 後者は、CPU 使用率が 70% を超えたらインスタンス数を 1 増やすといったメトリック トリガー ルールに基づいています。 ポリシーを定義したら、上部のSave
を選択します。[手動スケーリング]:
Node count
を目的の新しい値に調整し、上部にあるSave
を選択します。 このスクリーンショットでは、3
であった値が5
に調整されています。
下部にある
Apply
を選択して、これらの保存された設定をノード タイプに対して構成します。完了するまで、
Provisioning state
にはUpdating
の状態が表示されます。 完了すると、再びSucceeded
と表示されます。
テンプレートを使用してノード タイプをスケーリングする
ARM テンプレートを使用してノード タイプのノード数を調整するには、vmInstanceCount
プロパティを新しい値で調整し、設定を有効にするためにクラスターの展開を実行します。 クラスターにより、アップグレードが自動的に開始されます。 完了すると、追加のノードが表示されます。
- Service Fabric マネージド クラスター リソースの apiVersion は、2021-05-01 以降である必要があります。
Note
スケーリング要求が必須の最小値に違反する場合、マネージド クラスター プロバイダーではスケール調整がブロックされます。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
...
"vmInstanceCount": "[parameters('nodeTypeVmInstanceCount')]",
...
}
}
PowerShell でノード タイプをスケーリングする
スケーリングしたいノード タイプのノード数を増減させるには、インスタンス数を変更します。 ノード タイプの名前は、クラスター デプロイの Azure Resource Manager テンプレート (ARM テンプレート) または Service Fabric Explorer で確認できます。
$resourceGroup = "myResourceGroup"
$clusterName = "mysfcluster"
$nodeTypeName = "FE"
$instanceCount = "7"
Set-AzServiceFabricManagedNodeType -ResourceGroupName $resourceGroup -ClusterName $clusterName -name $nodeTypeName -InstanceCount $instanceCount -Verbose
クラスターにより、アップグレードが自動的に開始されます。 完了すると、追加のノードが表示されます。
OS の自動アップグレードを有効にする
マネージド クラスター ノードが実行されている仮想マシンに対して、OS イメージの自動アップグレードを有効にすることができます。 仮想マシン スケール セットのリソースは、ユーザーに代わって Service Fabric マネージド クラスターによって管理されますが、クラスター ノードに対して OS イメージの自動アップグレードを有効にするかどうかはユーザーが選択できます。 従来の Service Fabric クラスターと同様に、クラスターに対する意図しない中断を防ぐために、マネージド クラスター ノードは既定ではアップグレードされません。
Note
OS イメージの自動アップグレードは、マーケットプレースとカスタム イメージの両方でサポートされています。
OS の自動アップグレードを有効にするには、次のようにします。
- apiVersion
2021-05-01
(またはそれ以降の) バージョンのMicrosoft.ServiceFabric/managedclustersリソースとMicrosoft.ServiceFabric/managedclusters/nodetypesリソースを使用する - クラスターのプロパティ
enableAutoOSUpgrade
を true に設定する - クラスターの nodeTypes のリソースのプロパティ
vmImageVersion
を latest に設定する
次に例を示します。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters",
...
"properties": {
...
"enableAutoOSUpgrade": true
},
},
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
...
"properties": {
...
"vmImageVersion": "latest",
...
}
}
}
有効にすると、Service Fabric によってマネージド クラスター内で OS イメージのバージョンの照会と追跡が開始されます。 新しい OS バージョンが利用可能な場合、クラスター ノードの種類 (仮想マシン スケール セット) が一度に 1 つずつアップグレードされます。 Service Fabric ランタイムのアップグレードは、クラスター ノードの OS イメージのアップグレードが進行中でないことを確認した後にのみ実行されます。
アップグレードが失敗した場合、Service Fabric によって 24 時間後に再試行され、最大で 3 回再試行されます。 従来の (アンマネージド) Service Fabric のアップグレードと同様に、異常なアプリやノードによって OS イメージのアップグレードがブロックされることがあります。
イメージのアップグレードの詳細については、「Azure 仮想マシン スケール セットを使用した OS イメージの自動アップグレード」を参照してください。
ノード タイプの OS SKU を変更する
Service Fabric マネージド クラスターでは、ノード タイプの OS SKU をインプレースで変更できます。 このプロセスは、Windows 2019 から Windows 2022 への移行などのシナリオや、サーバー (コア) SKU とデスクトップ エクスペリエンス SKU を使用するサーバーを切り替える場合に役立ちます。
ポータルで OS SKU を変更する
このチュートリアルでは、ポータルを使用してノード タイプの OS イメージを変更する方法について説明します。
Azure ポータル にサインインします
クラスター リソースの [概要] ページに移動します。
Settings
セクションでNode Types
を選択します変更したい
Node type name
を選択しますOS Image
を目的の新しい値に調整し、下部にあるApply
を選択します。 ![OS イメージの変更を示すサンプル][change-os-image]Provisioning state
にはUpdating
の状態が表示され、一度に 1 つのアップグレード ドメインが実行されます。 完了すると、再びSucceeded
と表示されます。
テンプレートで OS SKU を変更する
ARM テンプレートを使用してノード タイプに使用される OS イメージを変更するには、vmImageSku
プロパティを新しい値で調整し、設定を有効にするためにクラスターの展開を実行します。 マネージド クラスター プロバイダーでは、アップグレード ドメインごとに各インスタンスが再イメージ化されます。
- Service Fabric マネージド クラスター リソースの apiVersion は、2021-05-01 以降である必要があります。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
...
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
...
}
}
ノードの種類の配置プロパティを構成する
特定のワークロードがクラスター内の特定のノード タイプだけで実行されるようにするには、配置プロパティを使います。 Service Fabric マネージド クラスターでは、ポータル、ARM テンプレート、または PowerShell を使ってこれらのプロパティを構成できます。
ポータルで配置プロパティを構成する
このチュートリアルでは、ポータルを使用してノード タイプの配置プロパティを変更する方法について説明します。
Azure ポータル にサインインします
クラスター リソースの [概要] ページに移動します。
Settings
セクションでNode Types
を選択します変更したい
Node type name
を選択しますPlacement properties
セクションで、必要な名前と値を追加し、下部にあるApply
を選びます。 このスクリーンショットでは、Name
SSD_Premium
が使用され、Value
はtrue
になっています。完了するまで、
Provisioning state
にはUpdating
の状態が表示されます。 完了すると、再びSucceeded
と表示されます。
テンプレートで配置プロパティを構成する
ARM テンプレートを使用してノード タイプの配置プロパティを調整するには、placementProperties
プロパティを 1 つ以上の新しい値で調整し、設定を有効にするためにクラスターの展開を実行します。 次のサンプルは、ノード タイプに対して 3 つの値が設定されていることを示しています。
- Service Fabric マネージド クラスター リソースの apiVersion は、2021-05-01 以降である必要があります。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
"placementProperties": {
"PremiumSSD": "true",
"NodeColor": "green",
"SomeProperty": "5"
}
}
}
PowerShell で配置プロパティを構成する
次の例では、特定のノード タイプの配置プロパティを更新し、既存のものを上書きします。
$rgName = "testRG"
$clusterName = "testCluster"
$NodeTypeName = "nt1"
Set-AzServiceFabricManagedNodeType -ResourceGroupName $rgName -ClusterName $clusterName -name $NodeTypeName -PlacementProperty @{NodeColor="Red";SomeProperty="6";} -Verbose
ノード タイプの VM SKU を変更する
ARM テンプレートを使用してノード タイプに使用される VM SKU サイズを変更するには、vmSize
プロパティを新しい値に調整し、設定を有効にするためにクラスターをデプロイします。 マネージド クラスター プロバイダーでは、アップグレード ドメインごとに各インスタンスが再イメージ化されます。 SKU オプションの一覧については、VM サイズ ‐ Azure の仮想マシン | Microsoft Learn のページを参照してください。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
...
"vmSize": "[parameters('vmImageVersion')]",
...
}
}
複数のマネージド ディスクを構成する
Service Fabric のマネージド クラスターでは、既定では、1 つのマネージド ディスクが構成されます。 次のオプションのプロパティと値を構成することにより、クラスター内のノードの種類にマネージド ディスクを追加できます。 ドライブ文字、ディスクの種類、ディスクごとのサイズを指定できます。
次に示すように、Resource Manager テンプレートで additionalDataDisks
プロパティと必要なパラメーターを宣言してマネージド ディスクを構成します。
機能の要件
- LUN はディスクごとに一意である必要があり、予約済みの LUN 0 または 1 を使用することはできません。
- ディスク文字には、予約済みの文字である C または D を使用できません。また、作成後に変更することはできません。 指定しない場合は、既定で S が使用されます。
- サポートされているディスクの種類を指定する必要があります
- Service Fabric マネージド クラスター リソースの apiVersion は、2022-01-01以降である必要があります。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
"additionalDataDisks": {
"lun": "2",
"diskSizeGB": "50",
"diskType": "Standard_LRS",
"diskLetter": "S"
}
}
}
使用可能なパラメーターの完全なリストを参照してください。
Service Fabric データ ディスクのドライブ文字を構成する
Service Fabric のマネージド クラスターでは、既定で Service Fabric データ ディスクが構成され、ノードの種類のすべてのノードでドライブ文字が自動的に構成されます。 この省略可能なプロパティと値を構成することにより、ドライブ文字のマッピングに特定の要件がある場合に、Service Fabric データ ディスクの文字を指定して取得できます。
機能の要件
- ディスク文字には、予約済みの文字である C または D を使用できません。また、作成後に変更することはできません。 指定しない場合は、既定で S が使用されます。
- Service Fabric マネージド クラスター リソースの apiVersion は、2022-01-01 以降である必要があります。
{
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
"dataDiskLetter": "S"
}
}
}
コンピューター名のプレフィックスを設定する
より詳細な説明のためにノード タイプに長い名前を必要とするお客様には、コンピューター名のプレフィックスが役立ちます。
Note
コンピューター名のプレフィックスは、Service Fabric API バージョン 2024-04-01 or later
の場合にのみ機能します。
コンピューター名のプレフィックスを設定するには、次の ARM テンプレートの変更を実装します。
{
"apiVersion": "2024-04-01",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', 'BE-testResourceGroup-testRegion-test')]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
],
"properties": {
"isPrimary": false,
"dataDiskSizeGB": "[parameters('dataDiskSizeGB')]",
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
"vmSize": "[parameters('vmSize')]",
"vmInstanceCount": "[parameters('vmInstanceCount')]",
"computerNamePrefix": "computerNamePrefix"
}
}