Meningkatkan aplikasi Service Fabric
Skrip sampel ini meningkatkan instans aplikasi Service Fabric yang berjalan ke versi 1.3.0. Skrip menyalin paket aplikasi baru ke penyimpanan gambar kluster, mendaftarkan jenis aplikasi, dan menghapus paket aplikasi yang tidak perlu. Skrip memulai pemutakhiran yang dipantau dan terus memeriksa status pemutakhiran hingga pemutakhiran selesai atau kembali bergulir. Sesuaikan parameter sesuai kebutuhan.
Jika diperlukan, instal modul Service Fabric PowerShell dengan SDK Service Fabric.
Sampel skrip
## Variables
$ApplicationPackagePath = "C:\Users\sfuser\documents\visual studio 2017\Projects\Voting\Voting\pkg\Debug"
$ApplicationName = "fabric:/Voting"
$ApplicationTypeName = "VotingType"
$ApplicationTypeVersion = "1.3.0"
$imageStoreConnectionString = "fabric:ImageStore"
$CopyPackageTimeoutSec = 600
$CompressPackage = $false
## Check existence of the application
$oldApplication = Get-ServiceFabricApplication -ApplicationName $ApplicationName
if (!$oldApplication)
{
$errMsg = "Application '$ApplicationName' doesn't exist in cluster."
throw $errMsg
}
else
{
## Check upgrade status
$upgradeStatus = Get-ServiceFabricApplicationUpgrade -ApplicationName $ApplicationName
if ($upgradeStatus.UpgradeState -ne "RollingBackCompleted" -and $upgradeStatus.UpgradeState -ne "RollingForwardCompleted" -and $upgradeStatus.UpgradeState -ne "Failed")
{
$errMsg = "An upgrade for the application '$ApplicationTypeName' is already in progress."
throw $errMsg
}
$reg = Get-ServiceFabricApplicationType -ApplicationTypeName $ApplicationTypeName | Where-Object { $_.ApplicationTypeVersion -eq $ApplicationTypeVersion }
if ($reg)
{
Write-Host 'Application Type '$ApplicationTypeName' and Version '$ApplicationTypeVersion' was already registered with Cluster, unregistering it...'
$reg | Unregister-ServiceFabricApplicationType -Force
}
## Copy application package to image store
$applicationPackagePathInImageStore = $ApplicationTypeName
Write-Host "Copying application package to image store..."
Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $ApplicationPackagePath -ImageStoreConnectionString $imageStoreConnectionString -ApplicationPackagePathInImageStore $applicationPackagePathInImageStore -TimeOutSec $CopyPackageTimeoutSec -CompressPackage:$CompressPackage
if(!$?)
{
throw "Copying of application package to image store failed. Cannot continue with registering the application."
}
## Register application type
Write-Host "Registering application type..."
Register-ServiceFabricApplicationType -ApplicationPathInImageStore $applicationPackagePathInImageStore
if(!$?)
{
throw "Registration of application type failed."
}
# Remove the application package to free system resources.
Remove-ServiceFabricApplicationPackage -ImageStoreConnectionString $imageStoreConnectionString -ApplicationPackagePathInImageStore $applicationPackagePathInImageStore
if(!$?)
{
Write-Host "Removing the application package failed."
}
## Start monitored application upgrade
try
{
Write-Host "Start upgrading application..."
Start-ServiceFabricApplicationUpgrade -ApplicationName $ApplicationName -ApplicationTypeVersion $ApplicationTypeVersion -HealthCheckStableDurationSec 60 -UpgradeDomainTimeoutSec 1200 -UpgradeTimeout 3000 -FailureAction Rollback -Monitored
}
catch
{
Write-Host ("Error starting upgrade. " + $_)
Write-Host "Unregister application type '$ApplicationTypeName' and version '$ApplicationTypeVersion' ..."
Unregister-ServiceFabricApplicationType -ApplicationTypeName $ApplicationTypeName -ApplicationTypeVersion $ApplicationTypeVersion -Force
throw
}
do
{
Write-Host "Waiting for upgrade..."
Start-Sleep -Seconds 3
$upgradeStatus = Get-ServiceFabricApplicationUpgrade -ApplicationName $ApplicationName
} while ($upgradeStatus.UpgradeState -ne "RollingBackCompleted" -and $upgradeStatus.UpgradeState -ne "RollingForwardCompleted" -and $upgradeStatus.UpgradeState -ne "Failed")
if($upgradeStatus.UpgradeState -eq "RollingForwardCompleted")
{
Write-Host "Upgrade completed successfully."
}
elseif($upgradeStatus.UpgradeState -eq "RollingBackCompleted")
{
Write-Error "Upgrade was Rolled back."
}
elseif($upgradeStatus.UpgradeState -eq "Failed")
{
Write-Error "Upgrade Failed."
}
}
Penjelasan skrip
Skrip ini menggunakan perintah berikut. Setiap perintah dalam tabel ditautkan ke dokumentasi spesifik perintah.
Perintah | Catatan |
---|---|
Dapatkan-ServiceFabric Aplikasi | Mendapatkan semua aplikasi di kluster Service Fabric atau aplikasi tertentu. |
Dapatkan-ServiceFabricApplicationUpgrade | Mendapatkan status peningkatan aplikasi Service Fabric. |
Dapatkan-ServiceFabricApplicationType | Mendapatkan jenis aplikasi Service Fabric yang terdaftar pada kluster Service Fabric. |
Batalkan pendaftaran-ServiceFabricApplicationType | Membatalkan pendaftaran jenis aplikasi Service Fabric. |
Salin-ServiceFabricApplicationPackage | Menyalin paket Service Fabric ke penyimpanan gambar. |
Dapatkan-ServiceFabricApplicationType | Mendaftarkan jenis aplikasi Service Fabric. |
Mulai-ServiceFabricApplicationUpgrade | Meningkatkan aplikasi Service Fabric ke versi jenis aplikasi yang ditentukan. |
Hapus-ServiceFabricApplicationPackage | Menghapus paket aplikasi Service Fabric dari penyimpanan gambar. |
Langkah berikutnya
Untuk informasi selengkapnya tentang modul Service Fabric PowerShell, lihat dokumentasi Azure PowerShell.
Sampel Powershell tambahan untuk Azure Service Fabric dapat ditemukan di sampel Azure PowerShell.