Aracılığıyla paylaş


Azure Service Fabric kümesinde düzenli yedekleme ve geri yükleme

Service Fabric, güvenilir, dağıtılmış bulut uygulamaları geliştirmeye ve yönetmeye yönelik bir platformdur. Hem durum bilgisi olmayan hem de durum bilgisi olan mikro hizmetleri destekler. Durum bilgisi olan hizmetler, önemli verileri tek bir isteğin veya işlemin ötesinde tutabilir. Durum bilgisi olan bir hizmet devre dışı kalırsa veya verileri kaybederse düzgün çalışmaya devam etmek için son yedeklemeden 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 kaybolması 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. 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 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 tetiklemesini istiyorsa, 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.

Service Fabric'teki Yedekleme ve Geri Yükleme hizmeti, durum bilgisi olan hizmetlerde depolanan bilgilerin kolay ve otomatik olarak yedekleneceğine olanak tanır. Uygulama verilerini düzenli aralıklara göre yedeklemek, veri kaybına ve hizmetin kullanım dışı olmasına karşı koruma için temeldir. Service Fabric, ek kod yazmak zorunda kalmadan durum bilgisi olan Reliable Services'ın (Aktör Hizmetleri 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 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
  • 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 derlenmelidir.
  • 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ü 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ümenin 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ı kullanarak

Sekme altındaki + Show optional settings Cluster Configuration Etkinleştir Include backup restore service onay kutusu.

Portal ile Yedekleme Geri Yükleme Hizmetini Etkinleştirme

Azure Resource Manager Şablonunu 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 bir Resource Manager şablonu oluşturabilirsiniz. Aşağıdaki adımlarla yedekleme ve geri yükleme hizmetini etkinleştirin:

  1. öğesinin apiversion kaynak için olarak ayarlanıp ayarlanmadığını 2018-02-01 Microsoft.ServiceFabric/clusters denetleyin ve ayarlanmadıysa 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')]",
        ...
    }
    
  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, 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ğı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], şifreleme için kullanılacak geçerli sertifika parmak iziyle değiştirilmelidir.

  4. 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. Tamamlandıktan sonra, yedekleme ve geri yükleme hizmeti kümenizde çalışmaya başlar. Bu hizmetin Uri'sine sahiptir 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 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 hizmetiyle X.509 güvenliği kullanılarak ayarlanır.
  • Kümede Durum Bilgisi Olan Güvenilir bir hizmet dağıtılır. Bu hızlı başlangıç kılavuzu için 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 974bd92a-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 bir yedekleme ilkesi oluşturmaktır. Bu ilke yedekleme zamanlamasını, yedekleme verileri için hedef depolamayı, ilke adını, tam yedekleme tetiklenmeden önce izin verilen maksimum artımlı yedekleme sayısını ve yedekleme depolaması için bekletme ilkesini içermelidir.

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. Azure Depolama hesabı URL'sini depolama hesabınızın adıyla değiştirerek account-name doldurun BlobServiceUri ve kaynağınıza atanmış birden çok yönetilen kimlik varsa, isteğe bağlı parametreyi ManagedIdentityClientId Kullanıcı Tarafından Atanan Yönetilen Kimlik İstemci Kimliği ile doldurun.

Azure kaynağında yönetilen kimlik ataması için adımları izleyin:

  1. Sanal makine ölçek kümesinde yönetilen kimlikleri yapılandırma Sanal Makine Ölçek Kümeleri sistem tarafından atanan veya Kullanıcı tarafından atanan yönetilen kimliği etkinleştirme

  2. Depolama hesabına Sanal Makine Ölçek Kümeleri yönetilen kimliğine rol atama Azure portalını kullanarak Azure rolleri atama - Azure RBAC

    1. Depolama Blobu Veri Katkıda Bulunanı Rolü en azından

Yönetilen Kimlik hakkında daha fazla bilgi için

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ınızın adıyla değiştirin account-name .


    New-SFBackupPolicy -Name 'BackupPolicy1' -AutoRestoreOnDataLoss $false -MaxIncrementalBackups 20 -FrequencyBased -Interval "<hh:mm>" -ManagedIdentityAzureBlobStore -FriendlyName "AzureMI_storagesample" -BlobServiceUri 'https://<account-name>.blob.core.windows.net' -ContainerName 'backup-container' -ManagedIdentityType "VMSS" -ManagedIdentityClientId "<Client-Id of User-Assigned MI>" -Basic -RetentionDuration '10.00:00:00'

    # Use Optional parameter `ManagedIdentityClientId` with Client-Id of User-Assigned Managed Identity in case of multiple User-Assigned Managed Identities assigned to your resource, or both SAMI & UAMI assigned and we need to use UAMI as the default, else no need of this paramter.

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ütebilirsiniz. değerini depolama hesabınızın adıyla değiştirin account-name .

$StorageInfo = @{
    StorageKind = "ManagedIdentityAzureBlobStore"
    FriendlyName = "AzureMI_storagesample"
    BlobServiceUri = "https://<account-name>.blob.core.windows.net"
    ContainerName = "backup-container"
    ManagedIdentityType = "VMSS"
    ManagedIdentityClientId = "<Client-Id of User-Assigned MI>" # Use Optional parameter `ManagedIdentityClientId` with Client-Id of User-Assigned Managed Identity in case of multiple User-Assigned Managed Identities assigned to your resource, or both SAMI & UAMI assigned and we need to use UAMI as the default, else no need of this paramter.
}

$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

  1. Service Fabric Explorer'da sol taraftaki panelde Küme'ye tıklayın, Yedeklemeler sekmesine gidin ve Eylemler > Yedekleme İlkesi Oluştur'u seçin.

    Yedekleme İlkesi Oluşturma

  2. 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 ManagedIdentityAzureBlobStore seçilmelidir.

    Yedekleme İlkesi Yönetilen Kimliği oluşturma Azure Blob Depolama

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 yukarıdaki adımda oluşturulan adla BackupPolicy1 uygulamayla SampleAppilişkilendirmek için gerekli REST API'sini çağırmak için aşağıdaki PowerShell betiğini yürütebilirsiniz.

$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

BackupRestoreService'in kümede etkinleştirildiğinden emin olun.

  1. Service Fabric Explorer'ı açın.

  2. Bir uygulama seçin ve Yedekleme bölümüne gidin. Yedekleme Eylemi'ne tıklayın.

  3. Uygulama Yedeklemesini Etkinleştir/Güncelleştir'e tıklayın.

    Uygulama Yedeklemeyi Etkinleştir

  4. Son olarak, istediğiniz ilkeyi seçin ve Yedeklemeyi Etkinleştir'e tıklayın.

    İlke Seç

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

Uygulama düzeyinde 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 Listele

Güvenilir Durum Bilgisi olan hizmetlere ve uygulamanın Reliable Actors'larına ait tüm bölümlerle ilişkili yedeklemeler GetBackups API'siyle 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 için 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

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

Yedeklemeleri Numaralandırma

Sınırlamalar/ uyarılar

  • Service Fabric PowerShell cmdlet'leri önizleme modundadır.
  • Linux'ta Service Fabric kümeleri için destek yok.

Sonraki adımlar