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
.
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:
Periksa apakah
apiversion
diatur ke2018-02-01
untuk sumber dayaMicrosoft.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')]", ... }
Sekarang aktifkan layanan pencadangan dan pemulihan dengan menambahkan bagian
addonFeatures
berikut di bawah bagianproperties
seperti yang diperlihatkan dalam cuplikan berikut:"properties": { ... "addonFeatures": ["BackupRestoreService"], "fabricSettings": [ ... ] ... }
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 bagianfabricSettings
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.
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 adalahfabric:/SampleApp/MyStatefulService
. Layanan ini disebarkan dengan partisi tunggal, dan ID partisi adalah974bd92a-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
Di Service Fabric Explorer, buka tab Pencadangan dan pilih Tindakan > Buat Kebijakan Pencadangan.
Isi informasinya. Untuk informasi mendetail tentang cara menentukan interval berbasis frekuensi, lihat properti TimeGrain. Untuk klaster Azure, AzureBlobStore harus dipilih.
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
Klik gigi di kanan atas Jendela SF Explorer.
Centang kotak untuk "Mode tingkat lanjut" dan refresh halaman SF Explorer.
Pilih aplikasi dan mulai bertindak. Klik Aktifkan/Perbarui Pencadangan Aplikasi.
Terakhir, pilih kebijakan yang diinginkan dan klik Aktifkan Pencadangan.
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.
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.
Batasan/ peringatan
- Cmdlet Service Fabric PowerShell berada dalam mode pratinjau.
- Tidak ada dukungan untuk klaster Service Fabric di Linux.
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk