Tek başına Service Fabric'te 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şebilir, yetkili durumu koruyabilir. Durum bilgisi olan bir hizmet uzun süre kullanım dışı kaldıysa veya olağanüstü durum nedeniyle bilgileri kaybederse, hizmet yeniden geldikten sonra hizmeti 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üğüme ç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, bir hizmetin aşağıdaki senaryolardan korunmak için verilerini yedeklemesi gerekebilir:

  • Service Fabric kümesinin tamamının kalıcı olarak kaybedilmesi.
  • Hizmet bölümünün çoğaltmalarının çoğunluğunun kalıcı kaybı
  • 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 bir 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. verileri oluşturan hizmetten ayrı olarak gerçekleşen iş zekası için verilerin çevrimdışı işlenmesi uygun olabilir.

Service Fabric, belirli bir noktaya yedekleme ve geri yükleme gerçekleştirmek için yerleşik bir API sağlar. Uygulama geliştiricileri hizmetin durumunu düzenli aralıklarla yedeklemek için bu API'leri kullanabilir. Buna ek olarak, hizmet yöneticileri belirli bir zamanda (örneğin uygulamayı yükseltmeden önce) hizmetin dışından bir yedekleme tetiklemesini isterse, geliştiricilerin yedeklemeyi (ve geri yüklemeyi) hizmetten bir API olarak kullanıma sunmaları gerekir. Yedeklemeleri korumak, 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.

Uygulama verilerinin düzenli aralıklarla yedeklenmesi, dağıtılmış bir uygulamayı yönetmek ve veri kaybına veya uzun süreli hizmet kullanılabilirliği kaybına karşı korunmak için temel bir gereksinimdir. Service Fabric, ek kod yazmak zorunda kalmadan durum bilgisi olan Reliable Services'ın (Actor Services dahil) düzenli 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 olarak 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 planlanmamış 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. Gerekli paketi indirme 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ı. Otomatik olarak imzalanan X.509 sertifikası alma veya oluşturma hakkında bilgi edinmek 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 derlenmelidir.

  • 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 herhangi bir yapılandırma isteğinde bulunmadan önce Kümenin Connect-SFCluster komutuyla bağlı olduğundan 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

Öncelikle kümenizde yedekleme ve geri yükleme hizmetini etkinleştirmeniz gerekir. Dağıtmak istediğiniz kümenin şablonunu alın. Örnek şablonları kullanabilirsiniz. Yedekleme ve geri yükleme hizmetini aşağıdaki adımlarla etkinleştirin:

  1. öğesinin apiversion küme yapılandırma dosyasında olarak ayarlanıp ayarlanmadığını 10-2017 denetleyin ve ayarlanmadıysa aşağıdaki kod parçacığında gösterildiği gibi güncelleştirin:

    {
        "apiVersion": "10-2017",
        "name": "SampleCluster",
        "clusterConfigurationVersion": "1.0.0",
        ...
    }
    
  2. Şimdi aşağıdaki kod parçacığında gösterildiği gibi bölümün altına properties aşağıdaki addonFeatures bölümü ekleyerek yedekleme ve geri yükleme hizmetini etkinleştirin:

        "properties": {
            ...
            "addonFeatures": ["BackupRestoreService"],
            "fabricSettings": [ ... ]
            ...
        }
    
    
  3. Kimlik bilgilerinin şifrelenmesini için X.509 sertifikasını yapılandırın. Bu, depolamaya bağlanmak için sağlanan kimlik bilgilerinin kalıcı hale gelmeden önce ş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ğıdaki BackupRestoreService 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] öğesinin şifreleme için kullanılacak geçerli sertifika parmak iziyle değiştirilmesi gerekiyor.

  4. Küme yapılandırma dosyanızı ö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'sini kullanır fabric:/System/BackupRestoreService ve hizmet, Service Fabric gezgininin sistem hizmeti bölümünde bulunabilir.

Reliable Stateful hizmeti ve Reliable Actors için düzenli yedeklemeyi etkinleştirme

Reliable Stateful hizmeti ve Reliable Actors için düzenli yedeklemeyi etkinleştirme adımlarını inceleyelim. Bu adımlarda

  • Küme, yedekleme ve geri yükleme service_ ile yapılandırılır.
  • Kümede Güvenilir Durum Bilgisi olan bir hizmet dağıtılır. Bu hızlı başlangıç kılavuzunun amacı doğrultusunda, uygulama Uri'sinin ve fabric:/SampleApp bu uygulamaya ait Olan Reliable Stateful hizmetinin Uri'sinin olması gerekir fabric:/SampleApp/MyStatefulService. Bu hizmet tek bir bölümle dağıtılır ve bölüm kimliği olur 23aebc1e-e9ea-4e16-9d5c-e91a614fefa7.

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ı yedeklemeyi açıklayan yedekleme ilkesi oluşturmaktır.

Yedekleme depolaması için dosya paylaşımı oluşturun ve tüm Service Fabric Node makineleri için bu dosya paylaşımına ReadWrite erişimi verin. Bu örnekte, adlı BackupStore paylaşımın üzerinde StorageServermevcut olduğu varsayılır.

Microsoft.ServiceFabric.PowerShell.Http Modülünü kullanarak PowerShell


New-SFBackupPolicy -Name 'BackupPolicy1' -AutoRestoreOnDataLoss $true -MaxIncrementalBackups 20 -FrequencyBased -Interval 00:15:00 -FileShare -Path '\\StorageServer\BackupStore' -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.

$ScheduleInfo = @{
    Interval = 'PT15M'
    ScheduleKind = 'FrequencyBased'
}   

$StorageInfo = @{
    Path = '\\StorageServer\BackupStore'
    StorageKind = 'FileShare'
}

$RetentionPolicy = @{ 
    RetentionPolicyType = 'Basic'
    RetentionDuration =  'P10D'
}

$BackupPolicy = @{
    Name = 'BackupPolicy1'
    MaxIncrementalBackups = 20
    Schedule = $ScheduleInfo
    Storage = $StorageInfo
    RetentionPolicy = $RetentionPolicy
}

$body = (ConvertTo-Json $BackupPolicy)
$url = "http://localhost:19080/BackupRestore/BackupPolicies/$/Create?api-version=6.4"

Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType 'application/json'

Service Fabric Explorer kullanma

  1. Service Fabric Explorer'da Yedeklemeler sekmesine gidin ve Eylemler > Yedekleme İlkesi Oluştur'u seçin.

    Yedekleme İlkesi Oluşturma

  2. Bilgileri doldurun. Tek başına kümeler için FileShare seçilmelidir.

    Yedekleme İlkesi Dosya Paylaşımı Oluşturma

Düzenli yedeklemeyi etkinleştirme

Uygulamanın veri koruma gereksinimlerini karşılamak için ilke 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 uygulama SampleAppile yukarıdaki adımda oluşturulan adla BackupPolicy1 ilişkilendirmek üzere 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 = "http://localhost:19080/Applications/SampleApp/$/EnableBackup?api-version=6.4"

Invoke-WebRequest -Uri $url -Method Post -Body $body -ContentType 'application/json'

Service Fabric Explorer kullanma

  1. Bir uygulama seçin ve eyleme geçin. Uygulama Yedeklemesini Etkinleştir/Güncelleştir'e tıklayın.

    Uygulama Yedeklemeyi Etkinleştir

  2. Son olarak, istediğiniz ilkeyi seçin ve Yedeklemeyi Etkinleştir'i seçin.

    İlke Seç

Düzenli yedeklemelerin çalıştığını doğrulayın

Uygulama için yedeklemeyi etkinleştirdikten sonra, uygulama 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.

Bölüm Destekli Sistem Durumu Olayı

Yedeklemeleri Listeleme

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. Gereksinime bağlı olarak, yedeklemeler 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 = "http://localhost:19080/Applications/SampleApp/$/GetBackups?api-version=6.4"

$response = Invoke-WebRequest -Uri $url -Method Get

$BackupPoints = (ConvertFrom-Json $response.Content)
$BackupPoints.Items

Yukarıdaki çalıştırma için örnek çıktı:

BackupId                : d7e4038e-2c46-47c6-9549-10698766e714
BackupChainId           : d7e4038e-2c46-47c6-9549-10698766e714
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=23aebc1e-e9ea-4e16-9d5c-e91a614fefa7}
BackupLocation          : SampleApp\MyStatefulService\23aebc1e-e9ea-4e16-9d5c-e91a614fefa7\2018-04-01 19.39.40.zip
BackupType              : Full
EpochOfLastBackupRecord : @{DataLossNumber=131670844862460432; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 2058
CreationTimeUtc         : 2018-04-01T19:39:40Z
FailureError            : 

BackupId                : 8c21398a-2141-4133-b4d7-e1a35f0d7aac
BackupChainId           : d7e4038e-2c46-47c6-9549-10698766e714
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=23aebc1e-e9ea-4e16-9d5c-e91a614fefa7}
BackupLocation          : SampleApp\MyStatefulService\23aebc1e-e9ea-4e16-9d5c-e91a614fefa7\2018-04-01 19.54.38.zip
BackupType              : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131670844862460432; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 2237
CreationTimeUtc         : 2018-04-01T19:54:38Z
FailureError            : 

BackupId                : fc75bd4c-798c-4c9a-beee-e725321f73b2
BackupChainId           : d7e4038e-2c46-47c6-9549-10698766e714
ApplicationName         : fabric:/SampleApp
ServiceName             : fabric:/SampleApp/MyStatefulService
PartitionInformation    : @{LowKey=-9223372036854775808; HighKey=9223372036854775807; ServicePartitionKind=Int64Range; Id=23aebc1e-e9ea-4e16-9d5c-e91a614fefa7}
BackupLocation          : SampleApp\MyStatefulService\23aebc1e-e9ea-4e16-9d5c-e91a614fefa7\2018-04-01 20.09.44.zip
BackupType              : Incremental
EpochOfLastBackupRecord : @{DataLossNumber=131670844862460432; ConfigurationNumber=8589934592}
LsnOfLastBackupRecord   : 2437
CreationTimeUtc         : 2018-04-01T20:09:44Z
FailureError            : 

Service Fabric Explorer kullanma

Service Fabric Explorer yedeklemeleri görüntülemek için bir bölüme gidin ve Yedeklemeler sekmesini seçin.

Yedeklemeleri Listeleme

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