Bagikan melalui


Pencadangan dan pemulihan berkala dalam klaster Azure Service Fabric

Service Fabric adalah platform sistem terdistribusi yang memudahkan untuk mengembangkan dan mengelola aplikasi cloud berbasis layanan mikro yang terdistribusi dan andal. Ini memungkinkan menjalankan layanan mikro stateful dan stateless. Layanan stateful dapat mempertahankan status otoritatif yang dapat diubah di luar permintaan dan respons atau transaksi lengkap. Jika layanan Stateful tidak berfungsi untuk waktu yang lama atau kehilangan informasi karena bencana, itu mungkin perlu dipulihkan ke beberapa cadangan terbaru dari statusnya untuk terus memberikan layanan setelah muncul kembali.

Service Fabric mereplikasi status di beberapa node untuk memastikan bahwa layanan ini sangat tersedia. Bahkan jika satu node dalam klaster gagal, layanan terus tersedia. Namun, dalam kasus tertentu, masih diinginkan data layanan untuk dapat diandalkan terhadap kegagalan yang lebih luas.

Contohnya, layanan mungkin ingin mencadangkan datanya untuk terlindung dari skenario berikut:

  • Jika terjadi kehilangan permanen seluruh klaster Service Fabric.
  • Kehilangan sebagian besar replika partisi layanan secara permanen
  • Kesalahan administratif di mana status secara tidak sengaja dihapus atau rusak. Contohnya, administrator dengan hak istimewa yang memadai keliru menghapus layanan.
  • Bug dalam layanan yang menyebabkan kerusakan data. Contohnya, ini mungkin terjadi ketika peningkatan kode layanan mulai menulis data yang salah ke Reliable Collection. Dalam kasus seperti itu, Anda mungkin harus memulihkan kode dan data ke status sebelumnya.
  • Pemrosesan data offline. Mungkin lebih mudah untuk memiliki pemrosesan data offline untuk kecerdasan bisnis yang terjadi secara terpisah dari layanan yang menghasilkan data.

Service Fabric menyediakan API bawaan untuk melakukan pencadangan dan pemulihan titik waktu tertentu. Pengembang aplikasi dapat menggunakan API ini untuk mencadangkan status layanan secara berkala. Selain itu, jika administrator layanan ingin memicu pencadangan dari luar layanan pada waktu tertentu, seperti sebelum meningkatkan aplikasi, pengembang perlu mengekspos cadangan (dan memulihkan) sebagai API dari layanan. Mempertahankan cadangan adalah biaya tambahan di atas ini. Contohnya, Anda mungkin ingin mengambil lima cadangan bertahap setiap setengah jam, diikuti dengan pencadangan penuh. Setelah pencadangan penuh, Anda dapat menghapus cadangan bertahap sebelumnya. Pendekatan ini memerlukan kode tambahan yang mengarah ke biaya tambahan selama pengembangan aplikasi.

Layanan Pencadangan dan Pemulihan di Service Fabric memungkinkan pencadangan informasi yang mudah dan otomatis yang disimpan dalam layanan stateful. Mencadangkan data aplikasi secara berkala sangat penting untuk menjaga dari kehilangan data dan tidak tersedianya layanan. Service Fabric menyediakan layanan pencadangan dan pemulihan opsional, yang memungkinkan Anda mengonfigurasi pencadangan berkala Reliable Services yang stateful (termasuk Actor Services) tanpa harus menulis kode tambahan apa pun. Ini juga memfasilitasi pemulihan cadangan yang diambil sebelumnya.

Service Fabric menyediakan seperangkat API untuk mencapai fungsionalitas berikut yang terkait dengan fitur pencadangan dan pemulihan berkala:

  • Jadwalkan pencadangan berkala layanan Reliable Stateful dan Reliable Actors dengan dukungan untuk mengunggah cadangan ke lokasi penyimpanan (eksternal). Lokasi penyimpanan yang didukung
    • Azure Storage
    • File Share (lokal)
  • Menghitung pencadangan
  • Memicu cadangan ad hoc dari partisi
  • Memulihkan partisi menggunakan cadangan sebelumnya
  • Menangguhkan pencadangan untuk sementara waktu
  • Manajemen retensi cadangan (yang akan datang)

Prasyarat

  • Klaster Service Fabric dengan Fabric versi 6.4 atau lebih tinggi. Lihat artikel ini untuk langkah-langkah membuat klaster Service Fabric menggunakan templat sumber daya Azure.
  • Sertifikat X.509 untuk enkripsi rahasia yang diperlukan untuk tersambung ke penyimpanan untuk menyimpan cadangan. Lihat artikel untuk mengetahui cara mendapatkan atau membuat sertifikat X.509.
  • Aplikasi Service Fabric Reliable Stateful yang dibangun menggunakan Service Fabric SDK versi 3.0 atau lebih tinggi. Untuk aplikasi yang menargetkan .NET Core 2.0, aplikasi harus dibangun menggunakan Service Fabric SDK versi 3.1 atau lebih tinggi.
  • Buat akun Azure Storage untuk menyimpan cadangan aplikasi.
  • Instal Modul Microsoft.ServiceFabric.Powershell.Http (Pratinjau) untuk melakukan panggilan konfigurasi.
    Install-Module -Name Microsoft.ServiceFabric.Powershell.Http -AllowPrerelease

Catatan

Jika versi PowerShellGet Anda lebih lama dari 1.6.0, Anda harus memperbarui untuk menambahkan dukungan untuk bendera -AllowPrerelease:

Install-Module -Name PowerShellGet -Force

  • Pastikan Klaster tersambung menggunakan perintah Connect-SFCluster sebelum membuat permintaan konfigurasi apa pun menggunakan Modul Microsoft.ServiceFabric.Powershell.Http.

    Connect-SFCluster -ConnectionEndpoint 'https://mysfcluster.southcentralus.cloudapp.azure.com:19080'   -X509Credential -FindType FindByThumbprint -FindValue '1b7ebe2174649c45474a4819dafae956712c31d3' -StoreLocation 'CurrentUser' -StoreName 'My' -ServerCertThumbprint '1b7ebe2174649c45474a4819dafae956712c31d3'

Mengaktifkan layanan pencadangan dan pemulihan

Menggunakan portal Azure

Aktifkan kotak centang Include backup restore service di bawah+ Show optional settings di tab Cluster Configuration.

Aktifkan Backup Restore Service dengan Portal

Menggunakan templat Azure Resource Manager

Pertama, Anda perlu mengaktifkan layanan pencadangan dan pemulihan di klaster Anda. Dapatkan templat untuk klaster yang ingin Anda sebarkan. Anda dapat menggunakan templat sampel atau membuat templat Resource Manager. Aktifkan layanan pencadangan dan pemulihan dengan langkah-langkah berikut:

  1. Periksa apakah apiversion diatur ke 2018-02-01 untuk sumber daya Microsoft.ServiceFabric/clusters, dan jika tidak, perbarui seperti yang diperlihatkan dalam cuplikan berikut:

    {
        "apiVersion": "2018-02-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        ...
    }
    
  2. Sekarang aktifkan layanan pencadangan dan pemulihan dengan menambahkan bagian addonFeatures berikut di bawah bagian properties seperti yang diperlihatkan dalam cuplikan berikut:

        "properties": {
            ...
            "addonFeatures":  ["BackupRestoreService"],
            "fabricSettings": [ ... ]
            ...
        }
    
    
  3. Mengonfigurasi sertifikat X.509 untuk enkripsi info masuk. Ini penting untuk memastikan bahwa info masuk yang disediakan untuk tersambung ke penyimpanan dienkripsi sebelum bertahan. Konfigurasikan sertifikat enkripsi dengan menambahkan bagian BackupRestoreService berikut di bawah bagian fabricSettings seperti yang diperlihatkan dalam cuplikan berikut:

    "properties": {
        ...
        "addonFeatures": ["BackupRestoreService"],
        "fabricSettings": [{
            "name": "BackupRestoreService",
            "parameters":  [{
                "name": "SecretEncryptionCertThumbprint",
                "value": "[Thumbprint]"
            },{
                "name": "SecretEncryptionCertX509StoreName",
                "value": "My"
            }]
        }
        ...
    }
    

    Catatan

    [Thumbprint] perlu diganti dengan thumbprint sertifikat yang valid untuk digunakan untuk enkripsi.

  4. Setelah Anda memperbarui template kluster Anda dengan perubahan sebelumnya, terapkan dan biarkan penyebaran/pembaruan selesai. Setelah selesai, layanan pencadangan dan pemulihan mulai berjalan di klaster Anda. Uri dari layanan ini adalah fabric:/System/BackupRestoreService dan layanan dapat terletak di bawah bagian layanan sistem di penjelajah Service Fabric.

Mengaktifkan pencadangan berkala untuk layanan Reliable Stateful dan Reliable Actors

Mari kita telusuri langkah-langkah untuk mengaktifkan pencadangan berkala untuk layanan Reliable Stateful dan Reliable Actors. Langkah-langkah ini mengasumsikan

  • Bahwa klaster diatur menggunakan keamanan X.509 dengan layanan pencadangan dan pemulihan.
  • Layanan Reliable Stateful diterapkan pada klaster. Untuk tujuan panduan mulsi cepat ini, Uri aplikasi adalah fabric:/SampleApp dan Uri untuk layanan Reliable Stateful milik aplikasi ini adalah fabric:/SampleApp/MyStatefulService. Layanan ini disebarkan dengan partisi tunggal, dan ID partisi adalah 974bd92a-b395-4631-8a7f-53bd4ae9cf22.
  • Sertifikat klien dengan peran administrator diinstal di Nama toko ku (Pribadi) dari lokasi penyimpanan sertifikat CurrentUser pada mesin tempat skrip di bawah ini akan dipanggil. Contoh ini menggunakan 1b7ebe2174649c45474a4819dafae956712c31d3 sebagai thumbprint sertifikat ini. Untuk informasi selengkapnya tentang sertifikat klien, lihat Kontrol akses berbasis peran untuk klien Service Fabric.

Buat kebijakan pencadangan

Langkah pertama adalah membuat kebijakan pencadangan yang menjelaskan jadwal pencadangan, penyimpanan target untuk data cadangan, nama kebijakan, pencadangan bertahap maksimum yang diizinkan sebelum memicu kebijakan pencadangan dan penyimpanan penuh untuk penyimpanan cadangan.

Untuk penyimpanan cadangan, gunakan akun Azure Storage yang dibuat di atas. Kontainer backup-container dikonfigurasi untuk menyimpan cadangan. Kontainer dengan nama ini dibuat, jika belum ada, selama pengunggahan cadangan. Isi ConnectionString dengan string koneksi yang valid untuk akun Azure Storage, ganti account-name dengan nama akun penyimpanan Anda, dan account-key dengan kunci akun penyimpanan Anda.

Powershell menggunakan Modul Microsoft.ServiceFabric.Powershell.Http

Eksekusi cmdlet PowerShell berikut untuk membuat kebijakan pencadangan baru. Ganti account-name dengan nama akun penyimpanan Anda, dan account-key dengan kunci akun penyimpanan Anda.


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'

Rest Call menggunakan Powershell

Jalankan skrip PowerShell berikut untuk memanggil REST API yang diperlukan untuk membuat kebijakan baru. Ganti account-name dengan nama akun penyimpanan Anda, dan account-key dengan kunci akun penyimpanan Anda.

$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'

Menggunakan Service Fabric Explorer

  1. Di Service Fabric Explorer, buka tab Pencadangan dan pilih Tindakan > Buat Kebijakan Pencadangan.

    Buat Kebijakan Pencadangan

  2. Isi informasinya. Untuk informasi mendetail tentang cara menentukan interval berbasis frekuensi, lihat properti TimeGrain. Untuk klaster Azure, AzureBlobStore harus dipilih.

    Buat Kebijakan Pencadangan Azure Blob Storage

Fungsikan pencadangan berkala

Setelah menentukan kebijakan pencadangan untuk memenuhi persyaratan perlindungan data aplikasi, kebijakan pencadangan harus dikaitkan dengan aplikasi. Tergantung pada persyaratan, kebijakan pencadangan dapat dikaitkan dengan aplikasi, layanan, atau partisi.

Powershell menggunakan Modul Microsoft.ServiceFabric.Powershell.Http


Enable-SFApplicationBackup -ApplicationId 'SampleApp' -BackupPolicyName 'BackupPolicy1'

Rest Call menggunakan Powershell

Jalankan skrip PowerShell berikut untuk memanggil REST API yang diperlukan untuk mengaitkan kebijakan pencadangan dengan nama BackupPolicy1 yang dibuat di langkah di atas dengan aplikasi SampleApp.

$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'

Menggunakan Service Fabric Explorer

Pastikan mode tingkat lanjut untuk Service Fabric Explorer diaktifkan

  1. Klik gigi di kanan atas Jendela SF Explorer.

  2. Centang kotak untuk "Mode tingkat lanjut" dan refresh halaman SF Explorer.

  3. Pilih aplikasi dan mulai bertindak. Klik Aktifkan/Perbarui Pencadangan Aplikasi.

    Aktifkan Pencadangan Aplikasi

  4. Terakhir, pilih kebijakan yang diinginkan dan klik Aktifkan Pencadangan.

    Pilih Kebijakan

Verifikasi bahwa pencadangan berkala berfungsi

Setelah mengaktifkan pencadangan di tingkat aplikasi, semua partisi milik Reliable Stateful services dan Reliable Actors di bawah aplikasi akan mulai dicadangkan secara berkala sesuai kebijakan pencadangan terkait.

Partition BackedUp Health Event

Cantumkan Pencadangan

Pencadangan yang terkait dengan semua partisi milik Reliable Stateful services dan Reliable Actors aplikasi dapat dijumlahkan menggunakan API GetBackups. Cadangan dapat dijumlahkan untuk aplikasi, layanan, atau partisi.

Powershell menggunakan Modul Microsoft.ServiceFabric.Powershell.Http


Get-SFApplicationBackupList -ApplicationId WordCount

Rest Call menggunakan Powershell

Jalankan skrip PowerShell berikut untuk memanggil API HTTP untuk menghitung cadangan yang dibuat untuk semua partisi di dalam SampleApp aplikasi.

$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

Sampel output untuk eksekusi di atas:

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            :

Menggunakan Service Fabric Explorer

Untuk melihat cadangan di Service Fabric Explorer, navigasi ke partisi dan pilih tab Cadangan.

Menghitung Cadangan

Batasan/ peringatan

  • Cmdlet Service Fabric PowerShell berada dalam mode pratinjau.
  • Tidak ada dukungan untuk klaster Service Fabric di Linux.

Langkah berikutnya