Service Fabric マネージド クラスター上の MaintenanceControl の概要

Service Fabric マネージド クラスターには、すべてのクラスターを最新の状態に保って、セキュリティと信頼性を確保するために必要なバックグラウンド操作が複数あります。 これらの操作は重要ですが、バックグラウンドで実行すると、サービス レプリカが別のノードに移動する可能性があります。 メンテナンス操作がピーク営業時間中に実行される場合、このフェールオーバーにより望ましくない不要な中断が発生します。 Service Fabric マネージド クラスターの MaintenanceControl サポートを使用すると、SFMC クラスター リソースのメンテナンス期間を、お客様の必要に応じて定期的 (毎日、毎週、毎月) およびカスタムで定義できます。 すべてのバックグラウンド メンテナンス操作は、このメンテナンス期間中にのみ実行できます。 MaintenanceControl は、次のバックグラウンド操作に適用できます。

  • OS の自動アップグレード
  • 拡張機能の自動アップグレード
  • SF ランタイムの自動バージョン更新
  • クラスター証明書の自動更新

要件:

  • メンテナンス期間の構成は、Service Fabric マネージド クラスター リソースに対してのみ定義してください
  • サポートされている最短メンテナンス期間は 5 時間です

SFMC の MaintenanceControl のしくみ

  • お客様は、メンテナンス RP を使用してメンテナンス構成リソースを作成することにより、メンテナンス期間のスケジュールと繰り返しルールを含むメンテナンス構成を定義する必要があります。 [詳細]
  • このメンテナンス構成を使用して、SFMC クラスター リソースにメンテナンス構成を割り当てる割り当てリソースが作成されます。
  • 割り当てリソースが作成されると、メンテナンス RP によって ServiceFabric RP にこの割り当てが通知され、その後 SFMC クラスターでメンテナンス制御が有効になります。 すべてのバックグラウンド メンテナンス操作は、メンテナンス期間外にはブロックされます。
  • メンテナンス構成のスケジュールに従ってメンテナンス期間がアクティブになるたびに、メンテナンス RP は ServiceFabric RP に通知し、 ServiceFabric RP が対応する SFMC クラスターのメンテナンス期間をアクティブにします。 このメンテナンス期間では、すべてのバックグラウンド操作を実行できます。

デプロイ例

メンテナンス制御を使用してクラスターを設定する手順を次に示します。 このサンプルをダウンロードします。これには、必要なリソースがすべて含まれています。 Standard SKU Service Fabric マネージド クラスターのサンプル

  1. リージョンにリソース グループを作成します。

    Login-AzAccount
    Select-AzSubscription -SubscriptionId $subscriptionid
    New-AzResourceGroup -Name $myresourcegroup -Location $location
    
  2. クラスター リソースを作成します。

    次のコマンドを実行してクラスター リソースをデプロイします。

    $parameters = @{
    clusterName = $clusterName
    adminPassword = $VmAdminPassword
    clientCertificateThumbprint = $clientCertificateThumbprint
    }
    New-AzResourceGroupDeployment -Name "deploy_cluster" -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterObject $parameters -Verbose
    
  3. 次のメンテナンス構成を使用して、クラスターのメンテナンス制御を構成します。

このメンテナンス構成では、2023 年 5 月 30 日から毎日、午後 10 時 (PST) から 5 時間更新を行うスケジュールを定義します。 メンテナンス構成の詳細についてはこちらを参照してください。

    "resources": [
        {
            "type": "Microsoft.Maintenance/maintenanceConfigurations",
            "apiVersion": "2022-07-01-preview",
            "name": "mc1",
            "location": "[parameters('location')]",
            "properties": {
                "maintenanceScope": "Resource",
                "extensionProperties": {
                   "maintenanceSubScope": "SFMC"
                },
                "maintenanceWindow": {
                    "startDateTime": "2023-05-30 22:00",
                    "duration": "05:00",
                    "timeZone": "Pacific Standard Time",
                    "expirationDateTime": null,
                    "recurEvery": "1Day"
                }
            }
        }

Note

構成で説明されているように、SFMC クラスター リソースのメンテナンス構成には、maintenanceScope: 'Resource' および maintenanceSubScope: 'SFMC' が必要です。

作成したメンテナンス構成は、割り当てリソースを使用して SFMC クラスターにアタッチする必要があります。 割り当ての詳細についてはこちらを参照してください。:

    "resources": [
        { 
           "type": "Microsoft.Resources/deployments",
            "apiVersion": "2022-09-01",
            "name": "ConfigurationAssignmentsName",
            "dependsOn": [
                "[concat('Microsoft.Maintenance/maintenanceConfigurations/', 'mc1')]",
                "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
            ],
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "http://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
                    "resources": [
                        {
                            "apiVersion": "2022-07-01-preview",
                            "type": "Microsoft.Maintenance/configurationAssignments",
                            "name": "mc1Assignment",
                            "location": "[parameters('location')]",
                            "scope": "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]",
                            "tags": {},
                            "properties": {
                                "maintenanceConfigurationId": "/subscriptions/<subId>/resourcegroups/<rgName>/providers/microsoft.maintenance/maintenanceconfigurations/mc1"
                            }
                        }
                    ]
                }
            },
            "subscriptionId": "<subId>",
            "resourceGroup": "<rgName>"
        }

Note

  • クラスターのメンテナンス制御を無効にするには、クラスターの割り当てを削除します。
  • メンテナンス リソースと SFMC クラスター リソースは、同じリージョンに作成する必要があります。

Note

既知の問題:

  • Service Fabric マネージド クラスターに割り当てられるメンテナンス構成リソースは最大 1 つです。 複数のメンテナンス構成を割り当てられないようにする作業が進行中です。それまでは、ユーザーが同じクラスターに対して複数の構成を割り当てないようする必要があります。
  • メンテナンス構成リソースのみを削除しても MaintenanceControl は無効になりません。 MaintenanceControl を無効にするには、メンテナンス構成リソースを削除する前に、まず最初にクラスターの configAssignment を削除する必要があります。
  • SFMC のメンテナンス制御に関する Azure portal エクスペリエンスの開発は現在も進行中のため、ユーザーはポータルだけで作業するべきではありません。 SFMC クラスターが仮想マシン リソースとして表示され、ポータルから SFMC クラスターの検索も割り当てもできないなど、メンテナンス リソースに関する既知の問題があります。