Start-​Service​Fabric​Cluster​Upgrade

Upgrades a Service Fabric cluster.

Syntax

Start-ServiceFabricClusterUpgrade
     [-Code]
     [-CodePackageVersion] <String>
     [-ForceRestart]
     [[-UpgradeReplicaSetCheckTimeoutSec] <UInt32>]
     [-ApplicationHealthPolicyMap <ApplicationHealthPolicyMap>]
     [-ApplicationTypeHealthPolicyMap <ApplicationTypeHealthPolicyMap>]
     [-ConsiderWarningAsError <Boolean>]
     [-EnableDeltaHealthEvaluation]
     -FailureAction <UpgradeFailureAction>
     [-Force]
     [-HealthCheckRetryTimeoutSec <UInt32>]
     [-HealthCheckStableDurationSec <UInt32>]
     [-HealthCheckWaitDurationSec <UInt32>]
     [-MaxPercentDeltaUnhealthyNodes <Byte>]
     [-MaxPercentUnhealthyApplications <Byte>]
     [-MaxPercentUnhealthyNodes <Byte>]
     [-MaxPercentUpgradeDomainDeltaUnhealthyNodes <Byte>]
     [-Monitored]
     [-ReplicaQuorumTimeoutSec <UInt32>]
     [-RestartProcess]
     [-TimeoutSec <Int32>]
     [-UpgradeDomainTimeoutSec <UInt32>]
     [-UpgradeTimeoutSec <UInt32>]
     [-Confirm]
     [-WhatIf]
     [<CommonParameters>]
Start-ServiceFabricClusterUpgrade
     [-Config]
     [-ClusterManifestVersion] <String>
     [-ForceRestart]
     [[-UpgradeReplicaSetCheckTimeoutSec] <UInt32>]
     [-ApplicationHealthPolicyMap <ApplicationHealthPolicyMap>]
     [-ApplicationTypeHealthPolicyMap <ApplicationTypeHealthPolicyMap>]
     [-ConsiderWarningAsError <Boolean>]
     [-EnableDeltaHealthEvaluation]
     -FailureAction <UpgradeFailureAction>
     [-Force]
     [-HealthCheckRetryTimeoutSec <UInt32>]
     [-HealthCheckStableDurationSec <UInt32>]
     [-HealthCheckWaitDurationSec <UInt32>]
     [-MaxPercentDeltaUnhealthyNodes <Byte>]
     [-MaxPercentUnhealthyApplications <Byte>]
     [-MaxPercentUnhealthyNodes <Byte>]
     [-MaxPercentUpgradeDomainDeltaUnhealthyNodes <Byte>]
     [-Monitored]
     [-ReplicaQuorumTimeoutSec <UInt32>]
     [-RestartProcess]
     [-TimeoutSec <Int32>]
     [-UpgradeDomainTimeoutSec <UInt32>]
     [-UpgradeTimeoutSec <UInt32>]
     [-Confirm]
     [-WhatIf]
     [<CommonParameters>]
Start-ServiceFabricClusterUpgrade
     [-CodePackageVersion] <String>
     [-ClusterManifestVersion] <String>
     [-ForceRestart]
     [[-UpgradeReplicaSetCheckTimeoutSec] <UInt32>]
     [-ApplicationHealthPolicyMap <ApplicationHealthPolicyMap>]
     [-ApplicationTypeHealthPolicyMap <ApplicationTypeHealthPolicyMap>]
     [-ConsiderWarningAsError <Boolean>]
     [-EnableDeltaHealthEvaluation]
     -FailureAction <UpgradeFailureAction>
     [-Force]
     [-HealthCheckRetryTimeoutSec <UInt32>]
     [-HealthCheckStableDurationSec <UInt32>]
     [-HealthCheckWaitDurationSec <UInt32>]
     [-MaxPercentDeltaUnhealthyNodes <Byte>]
     [-MaxPercentUnhealthyApplications <Byte>]
     [-MaxPercentUnhealthyNodes <Byte>]
     [-MaxPercentUpgradeDomainDeltaUnhealthyNodes <Byte>]
     [-Monitored]
     [-ReplicaQuorumTimeoutSec <UInt32>]
     [-RestartProcess]
     [-TimeoutSec <Int32>]
     [-UpgradeDomainTimeoutSec <UInt32>]
     [-UpgradeTimeoutSec <UInt32>]
     [-Confirm]
     [-WhatIf]
     [<CommonParameters>]
Start-ServiceFabricClusterUpgrade
     [-CodePackageVersion] <String>
     [-ClusterManifestVersion] <String>
     [-ForceRestart]
     [[-UpgradeReplicaSetCheckTimeoutSec] <UInt32>]
     [-Force]
     [-ReplicaQuorumTimeoutSec <UInt32>]
     [-RestartProcess]
     [-TimeoutSec <Int32>]
     [-UnmonitoredAuto]
     [-Confirm]
     [-WhatIf]
     [<CommonParameters>]
Start-ServiceFabricClusterUpgrade
     [-Config]
     [-ClusterManifestVersion] <String>
     [-ForceRestart]
     [[-UpgradeReplicaSetCheckTimeoutSec] <UInt32>]
     [-Force]
     [-ReplicaQuorumTimeoutSec <UInt32>]
     [-RestartProcess]
     [-TimeoutSec <Int32>]
     [-UnmonitoredAuto]
     [-Confirm]
     [-WhatIf]
     [<CommonParameters>]
Start-ServiceFabricClusterUpgrade
     [-Config]
     [-ClusterManifestVersion] <String>
     [-ForceRestart]
     [[-UpgradeReplicaSetCheckTimeoutSec] <UInt32>]
     [-Force]
     [-ReplicaQuorumTimeoutSec <UInt32>]
     [-RestartProcess]
     [-TimeoutSec <Int32>]
     [-UnmonitoredManual]
     [-Confirm]
     [-WhatIf]
     [<CommonParameters>]
Start-ServiceFabricClusterUpgrade
     [-CodePackageVersion] <String>
     [-ClusterManifestVersion] <String>
     [-ForceRestart]
     [[-UpgradeReplicaSetCheckTimeoutSec] <UInt32>]
     [-Force]
     [-ReplicaQuorumTimeoutSec <UInt32>]
     [-RestartProcess]
     [-TimeoutSec <Int32>]
     [-UnmonitoredManual]
     [-Confirm]
     [-WhatIf]
     [<CommonParameters>]
Start-ServiceFabricClusterUpgrade
     [-Code]
     [-CodePackageVersion] <String>
     [-ForceRestart]
     [[-UpgradeReplicaSetCheckTimeoutSec] <UInt32>]
     [-Force]
     [-ReplicaQuorumTimeoutSec <UInt32>]
     [-RestartProcess]
     [-TimeoutSec <Int32>]
     [-UnmonitoredAuto]
     [-Confirm]
     [-WhatIf]
     [<CommonParameters>]
Start-ServiceFabricClusterUpgrade
     [-Code]
     [-CodePackageVersion] <String>
     [-ForceRestart]
     [[-UpgradeReplicaSetCheckTimeoutSec] <UInt32>]
     [-Force]
     [-ReplicaQuorumTimeoutSec <UInt32>]
     [-RestartProcess]
     [-TimeoutSec <Int32>]
     [-UnmonitoredManual]
     [-Confirm]
     [-WhatIf]
     [<CommonParameters>]

Description

The Start-ServiceFabricClusterUpgrade cmdlet upgrades a Service Fabric cluster. You can upgrade Service Fabric code, configuration, or both code and configuration.

To manage Service Fabric clusters, start Windows PowerShell by using the Run as administrator option. Before you perform any operation on a Service Fabric cluster, establish a connection to the cluster by using the Connect-ServiceFabricCluster cmdlet.

Examples

Example 1: Start unmonitored manual upgrade

PS C:\> Start-ServiceFabricClusterUpgrade -CodePackageVersion "2.0.59.0" -ClusterManifestVersion "v2" -UnmonitoredManual

This command starts the unmonitored manual upgrade for the specified code package and configuration.

Example 2: Start upgrade for code only

PS C:\> Start-ServiceFabricClusterUpgrade -Code -CodePackageVersion "2.0.59.0" -UnmonitoredAuto

This command starts the unmonitored automatic upgrade for the specified code package. There is no configuration upgrade.

Example 3: Start config only upgrade

Start-ServiceFabricClusterUpgrade -ClusterManifestVersion "v2" -Config -FailureAction Rollback -Monitored

This command starts the monitored config only upgrade for the specified cluster manifest version. The upgrade uses default health policies and the failure action is specified as Rollback.

Example 4: Start upgrade with a custom health policy

PS C:\> $AppTypeHealthPolicyMap = New-Object -TypeName "System.Fabric.Health.ApplicationTypeHealthPolicyMap"
PS C:\> $AppTypeHealthPolicyMap.Add("CriticalAppType", 0)

PS C:\> $svcType = New-Object -TypeName System.Fabric.Health.ServiceTypeHealthPolicy
PS C:\> $svcType.MaxPercentUnhealthyPartitionsPerService = 20
PS C:\> $svcType.MaxPercentUnhealthyReplicasPerPartition = 20
PS C:\> $warningAsErrorPolicy = New-Object -TypeName System.Fabric.Health.ApplicationHealthPolicy
PS C:\> $warningAsErrorPolicy.ConsiderWarningAsError = $true
PS C:\> $warningAsErrorPolicy.DefaultServiceTypeHealthPolicy = $svcType

PS C:\> $appHealthPolicyMap = New-Object -TypeName System.Fabric.Health.ApplicationHealthPolicyMap
PS C:\> $appHealthPolicyMap.Add("fabric:/System", $warningAsErrorPolicy)

PS C:\> Start-ServiceFabricClusterUpgrade -CodePackageVersion "4.2.83.9493" -ClusterManifestVersion "ScaleMin-1.0" -Monitored -FailureAction Rollback -ApplicationTypeHealthPolicyMap $AppTypeHealthPolicyMap -Force -MaxPercentUnhealthyNodes 20 -MaxPercentUnhealthyApplications 20 -ApplicationHealthPolicyMap $appHealthPolicyMap

This command starts the monitored upgrade for the specified code package and configuration and passes custom health policies. It specifies a custom cluster health policy, defines a different MaxPercentUnhealthyApplications for a critical application type and a custom application health policy for the cluster System application.

Required Parameters

-ClusterManifestVersion

Specifies the version stored in a Service Fabric cluster manifest.

Type:String
Position:2
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Code

Indicates that the package includes only a Service Fabric .msi file.

Type:SwitchParameter
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-CodePackageVersion

Specifies the version of the Service Fabric .msi file.

Type:String
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Config

Indicates that the package is a Service Fabric cluster manifest.

Type:SwitchParameter
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-FailureAction

Specifies the action to take if the monitored upgrade fails. The acceptable values for this parameter are:

  • Rollback
  • Manual
Type:UpgradeFailureAction
Parameter Sets:Invalid, Rollback, Manual
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Monitored

Indicates that the upgrade mode is monitored. This means that health checks are performed after upgrade finishes for an upgrade domain. If the health of the upgrade domain and the cluster meet the specified health policies, Service Fabric starts upgrade of the next upgrade domain. If the upgrade domain or cluster fails to meet health policies, the upgrade fails and Service Fabric rolls back the upgrade or switches to unmonitored manual mode, depending on the specified FailureAction.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-UnmonitoredAuto

Indicates that the upgrade mode is unmonitored automatic. No health checks are performed and after Service Fabric upgrades an upgrade domain, Service Fabric starts the upgrade of the next upgrade domain irrespective of the cluster health state. This mode is not recommended for production use.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-UnmonitoredManual

Indicates that the upgrade mode is unmonitored manual. After Service Fabric upgrades an upgrade domain, it waits for the Resume-ServiceFabricClusterUpgrade cmdlet to explicitly start the upgrade of the next upgrade domain.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

Optional Parameters

-ApplicationHealthPolicyMap

Specifies a System.Fabric.Health.ApplicationHealthPolicyMap object that includes custom health policies for some or all of the applications. If you do not specify this parameter, or if you don't include an entry in the map for an application, that application is evaluated with the application health policy defined in the application manifest if it exists, or the default health policy otherwise.

Type:ApplicationHealthPolicyMap
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-ApplicationTypeHealthPolicyMap

Specifies the map that defines the maximum percentage of unhealthy applications that are allowed per application type. Application types in this map are evaluated using specific percentages rather than the global percentage specified in the MaxPercentUnhealthyApplications parameter.

For example, if some applications of a type are critical, the cluster administrator can add an entry to the map for that application type and assign it a value of 0% (that is, do not tolerate any failures). All other applications can be evaluated with the MaxPercentUnhealthyApplications parameter set to 20% to tolerate some failures out of the thousands of application instances.

The application type health policy map is used only if the cluster manifest enables application type health evaluation using the configuration entry for HealthManager/EnableApplicationTypeHealthEvaluation.

Type:ApplicationTypeHealthPolicyMap
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Confirm

Prompts for confirmation before running the cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-ConsiderWarningAsError

Indicates whether to treat a warning health event as an error event during health evaluation of the cluster entity and of the Nodes entities. Applications are evaluated using per application health policy settings.

Type:Boolean
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-EnableDeltaHealthEvaluation

Indicates that delta health evaluation is used to determine if the Service Fabric cluster is healthy.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Force

Indicates that this cmdlet skips the warning message and forces the upgrade.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-ForceRestart

Indicates that the service host restarts even if the upgrade is a configuration-only change.

Type:SwitchParameter
Position:3
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-HealthCheckRetryTimeoutSec

Specifies the duration, in seconds, after which Service Fabric retries the health check if the previous health check fails.

Type:UInt32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-HealthCheckStableDurationSec

Specifies the duration, in seconds, that Service Fabric waits in order to verify that the cluster is stable before moving to the next upgrade domain or completing the upgrade. This wait duration prevents undetected changes of health right after the health check is performed.

Type:UInt32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-HealthCheckWaitDurationSec

Specifies the duration, in seconds, that Service Fabric waits before it performs the initial health check after it finishes the upgrade on the upgrade domain.

Type:UInt32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-MaxPercentDeltaUnhealthyNodes

Specifies the maximum percentage of delta unhealthy nodes that can have aggregated health states of error. If the current unhealthy nodes do not respect the percentage relative to the state at the beginning of the upgrade, the cluster is considered unhealthy.

Type:Byte
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-MaxPercentUnhealthyApplications

Specifies the maximum percentage of applications that can have aggregated health states of error. If the currently unhealthy applications do not respect this amount, the cluster is considered unhealthy.

Type:Byte
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-MaxPercentUnhealthyNodes

Specifies the maximum percentage of nodes that can have aggregated health states of error. If the current unhealthy applications do not respect this percentage, the cluster is considered unhealthy.

Type:Byte
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-MaxPercentUpgradeDomainDeltaUnhealthyNodes

Specifies the maximum percentage of upgrade domain delta unhealthy nodes that can have aggregated health states of error. If there is any upgrade domain where the current unhealthy nodes do not respect the percentage relative to the state at the beginning of the upgrade, the cluster is considered unhealthy.

Type:Byte
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-ReplicaQuorumTimeoutSec

Specifies the time-out period, in seconds, to check whether the replica set has quorum. After the time out period, the upgrade proceeds.

This parameter has been deprecated. Specify the UpgradeReplicaSetCheckTimeoutSec parameter instead.

Type:UInt32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-RestartProcess

Indicates that the service host restarts as part of the upgrade.

This parameter has been deprecated. Specify the ForceRestart parameter instead.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-TimeoutSec

Specifies the time-out period, in seconds, for the operation.

Type:Int32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-UpgradeDomainTimeoutSec

Specifies the maximum time, in seconds, that Service Fabric can take to upgrade a single upgrade domain. After this period, the upgrade fails.

Type:UInt32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-UpgradeReplicaSetCheckTimeoutSec

Specifies the maximum time that Service Fabric waits for a partition to be in a safe state, if not already in a safe state. Once safety checks pass for all partitions on a node, Service Fabric proceeds with the upgrade on that node.

Type:UInt32
Position:4
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-UpgradeTimeoutSec

Specifies the maximum time, in seconds, that Service Fabric takes for the entire upgrade. After this period, the upgrade fails.

Type:UInt32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-WhatIf

Shows what would happen if the cmdlet runs. The cmdlet is not run.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Inputs

None

You cannot pipe input to this cmdlet.

Outputs

System.Object

This cmdlet returns a System.Fabric.Description.FabricUpgradeDescription for a Service Fabric cluster upgrade.