Azure Service Fabric kümesinde düzenli yedekleme ve geri yükleme
Service Fabric, güvenilir, dağıtılmış, mikro hizmet tabanlı bulut uygulamaları geliştirmeyi ve yönetmeyi kolaylaştıran bir dağıtılmış sistemler platformudur. Hem durum bilgisi olmayan hem de durum bilgisi olan mikro hizmetlerin çalıştırılmasına olanak tanır. Durum bilgisi olan hizmetler, isteğin ve yanıtın veya tam bir işlemin ötesinde değiştirilebilir, yetkili durumu koruyabilir. Durum bilgisi olan bir hizmet uzun süre kapalı kalırsa veya olağanüstü durum nedeniyle bilgileri kaybederse, hizmet yeniden geldikten sonra hizmet sağlamaya devam etmek için durumunun son yedeklemesine geri yüklenmesi gerekebilir.
Service Fabric, hizmetin yüksek oranda kullanılabilir olduğundan emin olmak için durumu birden çok düğüm arasında çoğaltır. Kümedeki bir düğüm başarısız olsa bile hizmet kullanılabilir olmaya devam eder. Ancak bazı durumlarda hizmet verilerinin daha geniş çaplı hatalara karşı güvenilir olması yine de tercih edilir.
Örneğin, hizmet aşağıdaki senaryolardan korunmak için verilerini yedeklemek isteyebilir:
- Service Fabric kümesinin tamamının kalıcı olarak kaybedilmesi durumunda.
- Hizmet bölümünün çoğaltmalarının çoğunluğunun kalıcı olarak kaybedilmesi
- Durumun yanlışlıkla silindiği veya bozulduğu yönetim hataları. Örneğin, yeterli ayrıcalığı olan bir yönetici yanlışlıkla hizmeti siler.
- Hizmette veri bozulmasına neden olan hatalar. Örneğin, bir hizmet kodu yükseltmesi Güvenilir Koleksiyona hatalı veri yazmaya başladığında bu durum oluşabilir. Böyle bir durumda hem kodun hem de verilerin önceki bir duruma geri döndürülmesi gerekebilir.
- Çevrimdışı veri işleme. İş zekası için verileri oluşturan hizmetten ayrı olarak gerçekleşen verilerin çevrimdışı işlenmesi uygun olabilir.
Service Fabric, belirli bir noktaya yedekleme ve geri yükleme yapmak için yerleşik bir API sağlar. Uygulama geliştiricileri, hizmetin durumunu düzenli aralıklarla yedeklemek için bu API'leri kullanabilir. Ayrıca, hizmet yöneticileri uygulamayı yükseltmeden önce olduğu gibi belirli bir zamanda hizmetin dışından bir yedekleme tetiklemek isterse, geliştiricilerin yedeklemeyi (ve geri yüklemeyi) hizmetten api olarak kullanıma sunmaları gerekir. Yedeklemelerin bakımını yapmak, bunun üzerinde ek bir maliyettir. Örneğin, yarım saatte bir beş artımlı yedekleme ve ardından tam yedekleme almak isteyebilirsiniz. Tam yedeklemeden sonra önceki artımlı yedeklemeleri silebilirsiniz. Bu yaklaşım, uygulama geliştirme sırasında ek maliyete yol açan ek kod gerektirir.
Service Fabric'teki Yedekleme ve Geri Yükleme hizmeti, durum bilgisi olan hizmetlerde depolanan bilgilerin kolay ve otomatik olarak yedeklenip yedeklanabilmesini sağlar. Uygulama verilerini düzenli aralıklar temelinde yedeklemek, veri kaybına ve hizmetin kullanılamama durumuyla mücadele için temeldir. Service Fabric, durum bilgisi olan Reliable Services'ın (Aktör Hizmetleri dahil) herhangi bir ek kod yazmak zorunda kalmadan düzenli olarak yedeklemesini yapılandırmanıza olanak tanıyan isteğe bağlı bir yedekleme ve geri yükleme hizmeti sağlar. Ayrıca daha önce alınan yedeklemelerin geri yüklenmesini de kolaylaştırır.
Service Fabric, düzenli aralıklarla yedekleme ve geri yükleme özelliğiyle ilgili aşağıdaki işlevleri elde etmek için bir dizi API sağlar:
- Yedeklemeyi (dış) depolama konumlarına yükleme desteğiyle Reliable Stateful hizmetlerinin ve Reliable Actors'ın düzenli yedeklemesini zamanlayın. Desteklenen depolama konumları
- Azure Depolama
- Dosya Paylaşımı (şirket içi)
- Yedeklemeleri listeleme
- Bir bölümün geçici yedeklemesini tetikleme
- Önceki yedeklemeyi kullanarak bölümü geri yükleme
- Yedeklemeleri geçici olarak askıya alma
- Yedeklemelerin bekletme yönetimi (yaklaşan)
Önkoşullar
- Doku sürümü 6.4 veya üzeri olan Service Fabric kümesi. Azure kaynak şablonunu kullanarak Service Fabric kümesi oluşturma adımları için bu makaleye bakın.
- Yedeklemeleri depolamak için depolamaya bağlanmak için gereken gizli dizilerin şifrelenmesini sağlayan X.509 Sertifikası. X.509 sertifikasının nasıl alınacağını veya oluşturulacağını öğrenmek için makaleye bakın.
- Service Fabric SDK sürüm 3.0 veya üzeri kullanılarak oluşturulan Service Fabric Reliable Stateful uygulaması. .NET Core 2.0'ı hedefleyen uygulamalar için, uygulama Service Fabric SDK sürüm 3.1 veya üzeri kullanılarak oluşturulmalıdır.
- Uygulama yedeklemelerini depolamak için Azure Depolama hesabı oluşturun.
- Yapılandırma çağrıları yapmak için Microsoft.ServiceFabric.Powershell.Http Modülünü (Önizleme) yükleyin.
Install-Module -Name Microsoft.ServiceFabric.Powershell.Http -AllowPrerelease
Not
PowerShellGet sürümünüz 1.6.0'dan küçükse - AllowPrerelease bayrağı için destek eklemek için güncelleştirmeniz gerekir:
Install-Module -Name PowerShellGet -Force
- Microsoft.ServiceFabric.Powershell.Http Modülünü kullanarak yapılandırma isteğinde bulunmadan önce Küme'nin
Connect-SFCluster
komutuyla bağlandığından emin olun.
Connect-SFCluster -ConnectionEndpoint 'https://mysfcluster.southcentralus.cloudapp.azure.com:19080' -X509Credential -FindType FindByThumbprint -FindValue '1b7ebe2174649c45474a4819dafae956712c31d3' -StoreLocation 'CurrentUser' -StoreName 'My' -ServerCertThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'
Yedekleme ve geri yükleme hizmetini etkinleştirme
Azure portalını kullanma
Sekmenin Cluster Configuration
altındaki + Show optional settings
Etkinleştir Include backup restore service
onay kutusu.
Azure Resource Manager Şablonu Kullanma
Öncelikle kümenizde yedekleme ve geri yükleme hizmetini etkinleştirmeniz gerekir. Dağıtmak istediğiniz kümenin şablonunu alın. Örnek şablonları kullanabilir veya Resource Manager şablonu oluşturabilirsiniz. Yedekleme ve geri yükleme hizmetini aşağıdaki adımlarla etkinleştirin:
öğesinin kaynak için olarak ayarlanıp
apiversion
ayarlanmadığınıMicrosoft.ServiceFabric/clusters
denetleyin ve ayarlanmadıysa2018-02-01
aşağıdaki kod parçacığında gösterildiği gibi güncelleştirin:{ "apiVersion": "2018-02-01", "type": "Microsoft.ServiceFabric/clusters", "name": "[parameters('clusterName')]", "location": "[parameters('clusterLocation')]", ... }
Şimdi aşağıdaki kod parçacığında gösterildiği gibi bölümün altına
properties
aşağıdakiaddonFeatures
bölümü ekleyerek yedekleme ve geri yükleme hizmetini etkinleştirin:"properties": { ... "addonFeatures": ["BackupRestoreService"], "fabricSettings": [ ... ] ... }
Kimlik bilgilerinin şifrelenmesini için X.509 sertifikasını yapılandırın. Bu, kalıcı hale gelmeden önce depolamaya bağlanmak için sağlanan kimlik bilgilerinin şifrelendiğinden emin olmak için önemlidir. Aşağıdaki kod parçacığında gösterildiği gibi bölümün altına
fabricSettings
aşağıdakiBackupRestoreService
bölümü ekleyerek şifreleme sertifikasını yapılandırın:"properties": { ... "addonFeatures": ["BackupRestoreService"], "fabricSettings": [{ "name": "BackupRestoreService", "parameters": [{ "name": "SecretEncryptionCertThumbprint", "value": "[Thumbprint]" },{ "name": "SecretEncryptionCertX509StoreName", "value": "My" }] } ... }
Not
[Parmak izi] şifreleme için kullanılacak geçerli sertifika parmak iziyle değiştirilmelidir.
Küme şablonunuzu önceki değişikliklerle güncelleştirdikten sonra bunları uygulayın ve dağıtımın/yükseltmenin tamamlanmasını sağlayın. İşlem tamamlandıktan sonra , yedekleme ve geri yükleme hizmeti kümenizde çalışmaya başlar. Bu hizmetin Uri'sidir
fabric:/System/BackupRestoreService
ve hizmet Service Fabric gezginindeki sistem hizmeti bölümünde bulunabilir.
Reliable Stateful hizmeti ve Reliable Actors için düzenli aralıklarla yedeklemeyi etkinleştirme
Reliable Stateful hizmeti ve Reliable Actors için düzenli yedeklemeyi etkinleştirme adımlarını inceleyelim. Bu adımlarda
- Kümenin yedekleme ve geri yükleme hizmetiyle X.509 güvenliği kullanılarak ayarlandığını.
- Kümede Durum Bilgisi Olan Güvenilir bir hizmet dağıtılır. Bu hızlı başlangıç kılavuzunun amacı için uygulama Uri'sinin ve
fabric:/SampleApp
bu uygulamaya ait Olan Reliable Stateful hizmetinin Uri'sinin olması gerekirfabric:/SampleApp/MyStatefulService
. Bu hizmet tek bir bölümle dağıtılır ve bölüm kimliği olur974bd92a-b395-4631-8a7f-53bd4ae9cf22
. - Yönetici rolüne sahip istemci sertifikası, aşağıdaki betiklerin çağrılacağı makinedeki CurrentUser sertifika deposu konumunun My (Personal) depo adına yüklenir. Bu örnek, bu sertifikanın parmak izi olarak kullanır
1b7ebe2174649c45474a4819dafae956712c31d3
. İstemci sertifikaları hakkında daha fazla bilgi için bkz. Service Fabric istemcileri için rol tabanlı erişim denetimi.
Yedekleme ilkesi oluşturma
İlk adım yedekleme zamanlamasını, yedekleme verileri için hedef depolamayı, ilke adını, yedekleme depolaması için tam yedekleme ve bekletme ilkesini tetiklemeden önce izin verilen maksimum artımlı yedeklemeleri açıklayan yedekleme ilkesi oluşturmaktır.
Yedekleme depolaması için yukarıda oluşturulan Azure Depolama hesabını kullanın. Kapsayıcı backup-container
, yedeklemeleri depolamak için yapılandırılmıştır. Yedekleme karşıya yükleme sırasında bu ada sahip bir kapsayıcı (henüz yoksa) oluşturulur. ConnectionString
yerine depolama hesabınızın adını ve account-name
account-key
depolama hesabı anahtarınızı kullanarak Azure Depolama hesabı için geçerli bir bağlantı dizesi girin.
Microsoft.ServiceFabric.Powershell.Http Modülünü kullanarak PowerShell
Yeni yedekleme ilkesi oluşturmak için aşağıdaki PowerShell cmdlet'lerini yürütür. değerini depolama hesabı adınız ve account-key
depolama hesabı anahtarınız ile değiştirinaccount-name
.
New-SFBackupPolicy -Name 'BackupPolicy1' -AutoRestoreOnDataLoss $true -MaxIncrementalBackups 20 -FrequencyBased -Interval 00:15:00 -AzureBlobStore -ConnectionString 'DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net' -ContainerName 'backup-container' -Basic -RetentionDuration '10.00:00:00'
PowerShell kullanarak Rest Call
Yeni ilke oluşturmak için gerekli REST API'yi çağırmak için aşağıdaki PowerShell betiğini yürütün. değerini depolama hesabı adınız ve account-key
depolama hesabı anahtarınız ile değiştirinaccount-name
.
$StorageInfo = @{
ConnectionString = 'DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net'
ContainerName = 'backup-container'
StorageKind = 'AzureBlobStore'
}
$ScheduleInfo = @{
Interval = 'PT15M'
ScheduleKind = 'FrequencyBased'
}
$RetentionPolicy = @{
RetentionPolicyType = 'Basic'
RetentionDuration = 'P10D'
}
$BackupPolicy = @{
Name = 'BackupPolicy1'
MaxIncrementalBackups = 20
Schedule = $ScheduleInfo
Storage = $StorageInfo
RetentionPolicy = $RetentionPolicy
}
$body = (ConvertTo-Json $BackupPolicy)
$url = "https://mysfcluster.southcentralus.cloudapp.azure.com:19080/BackupRestore/BackupPolicies/$/Create?api-version=6.4"
Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType 'application/json' -CertificateThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'
Service Fabric Explorer kullanma
Service Fabric Explorer'da Yedeklemeler sekmesine gidin ve Eylemler > Yedekleme İlkesi Oluştur'u seçin.
Bilgileri doldurun. Sıklık tabanlı aralık belirtme hakkında ayrıntılı bilgi için bkz. TimeGrain özelliği. Azure kümeleri için AzureBlobStore seçilmelidir.
Düzenli yedeklemeyi etkinleştirme
Uygulamanın veri koruma gereksinimlerini karşılamak için yedekleme ilkesi tanımladıktan sonra yedekleme ilkesi uygulamayla ilişkilendirilmelidir. Gereksinime bağlı olarak, yedekleme ilkesi bir uygulama, hizmet veya bölümle ilişkilendirilebilir.
Microsoft.ServiceFabric.Powershell.Http Modülünü kullanarak PowerShell
Enable-SFApplicationBackup -ApplicationId 'SampleApp' -BackupPolicyName 'BackupPolicy1'
PowerShell kullanarak Rest Call
Yedekleme ilkesini uygulamayla SampleApp
yukarıdaki adımda oluşturulan adla BackupPolicy1
ilişkilendirmek için gerekli REST API'yi çağırmak için aşağıdaki PowerShell betiğini yürütün.
$BackupPolicyReference = @{
BackupPolicyName = 'BackupPolicy1'
}
$body = (ConvertTo-Json $BackupPolicyReference)
$url = "https://mysfcluster.southcentralus.cloudapp.azure.com:19080/Applications/SampleApp/$/EnableBackup?api-version=6.4"
Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType 'application/json' -CertificateThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'
Service Fabric Explorer kullanma
Service Fabric Explorer için gelişmiş modun etkinleştirildiğinden emin olun
SF Explorer Penceresinin sağ üst kısmındaki dişliye tıklayın.
"Gelişmiş mod" kutusunu işaretleyin ve SF Gezgini sayfasını yenileyin.
Bir uygulama seçin ve eyleme geçin. Uygulama Yedeklemesini Etkinleştir/Güncelleştir'e tıklayın.
Son olarak, istediğiniz ilkeyi seçin ve Yedeklemeyi Etkinleştir'e tıklayın.
Düzenli yedeklemelerin çalıştığını doğrulayın
Uygulama düzeyinde yedekleme etkinleştirildikten sonra, uygulamanın altındaki Reliable Stateful hizmetlerine ve Reliable Actors'a ait tüm bölümler, ilişkili yedekleme ilkesine göre düzenli aralıklarla yedeklenmeye başlar.
Yedeklemeleri Listele
Uygulamanın Reliable Stateful hizmetlerine ve Reliable Actors'a ait tüm bölümlerle ilişkili yedeklemeler GetBackups API'sini kullanarak numaralandırılabilir. Yedeklemeler bir uygulama, hizmet veya bölüm için numaralandırılabilir.
Microsoft.ServiceFabric.Powershell.Http Modülünü kullanarak PowerShell
Get-SFApplicationBackupList -ApplicationId WordCount
PowerShell kullanarak Rest Call
Uygulama içindeki tüm bölümler için oluşturulan yedeklemeleri listelemek üzere HTTP API'sini çağırmak üzere aşağıdaki PowerShell betiğini yürütür SampleApp
.
$url = "https://mysfcluster.southcentralus.cloudapp.azure.com:19080/Applications/SampleApp/$/GetBackups?api-version=6.4"
$response = Invoke-WebRequest -Uri $url -Method Get -CertificateThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'
$BackupPoints = (ConvertFrom-Json $response.Content)
$BackupPoints.Items
Yukarıdaki çalıştırma için örnek çıktı:
BackupId : b9577400-1131-4f88-b309-2bb1e943322c
BackupChainId : b9577400-1131-4f88-b309-2bb1e943322c
ApplicationName : fabric:/SampleApp
ServiceName : fabric:/SampleApp/MyStatefulService
PartitionInformation : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=974bd92a-b395-4631-8a7f-53bd4ae9cf22}
BackupLocation : SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 20.55.16.zip
BackupType : Full
EpochOfLastBackupRecord : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord : 3334
CreationTimeUtc : 2018-04-06T20:55:16Z
FailureError :
BackupId : b0035075-b327-41a5-a58f-3ea94b68faa4
BackupChainId : b9577400-1131-4f88-b309-2bb1e943322c
ApplicationName : fabric:/SampleApp
ServiceName : fabric:/SampleApp/MyStatefulService
PartitionInformation : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=974bd92a-b395-4631-8a7f-53bd4ae9cf22}
BackupLocation : SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.10.27.zip
BackupType : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord : 3552
CreationTimeUtc : 2018-04-06T21:10:27Z
FailureError :
BackupId : 69436834-c810-4163-9386-a7a800f78359
BackupChainId : b9577400-1131-4f88-b309-2bb1e943322c
ApplicationName : fabric:/SampleApp
ServiceName : fabric:/SampleApp/MyStatefulService
PartitionInformation : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=974bd92a-b395-4631-8a7f-53bd4ae9cf22}
BackupLocation : SampleApp\MyStatefulService\974bd92a-b395-4631-8a7f-53bd4ae9cf22\2018-04-06 21.25.36.zip
BackupType : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131675205859825409; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord : 3764
CreationTimeUtc : 2018-04-06T21:25:36Z
FailureError :
Service Fabric Explorer kullanma
yedeklemeleri Service Fabric Explorer görüntülemek için bir bölüme gidin ve Yedeklemeler sekmesini seçin.
Sınırlamalar/ uyarılar
- Service Fabric PowerShell cmdlet'leri önizleme modundadır.
- Linux'ta Service Fabric kümeleri için destek yoktur.
Sonraki adımlar
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin