Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sebelum Anda membuat kluster Azure Service Fabric atau menskalakan sumber daya komputasi yang menghosting kluster Anda, penting untuk merencanakan kapasitas. Untuk informasi selengkapnya tentang perencanaan kapasitas, lihat Merencanakan kapasitas kluster Service Fabric. Untuk panduan praktik terbaik selengkapnya untuk skalabilitas kluster, lihat pertimbangan skalabilitas Service Fabric.
Selain mempertimbangkan jenis node dan karakteristik kluster, Anda harus mengharapkan operasi penskalaan memakan waktu lebih dari satu jam untuk menyelesaikan lingkungan produksi. Pertimbangan ini berlaku terlepas dari jumlah VM yang Anda tambahkan.
Penyesuaian Otomatis
Anda harus melakukan operasi penskalaan melalui templat Azure Resource Manager, karena ini adalah praktik terbaik untuk memperlakukan konfigurasi sumber daya sebagai kode.
Menggunakan penskalaan otomatis melalui set skala komputer virtual akan membuat templat Resource Manager versi Anda secara tidak akurat menentukan jumlah instans Anda untuk set skala komputer virtual. Definisi yang tidak akurat meningkatkan risiko bahwa penyebaran di masa depan akan menyebabkan operasi penskalaan yang tidak diinginkan. Secara umum, Anda harus menggunakan autoscaling jika:
Menyebarkan templat Resource Manager Anda dengan kapasitas yang dinyatakan sesuai tidak cocok untuk kasus penggunaan Anda.
Selain penskalaan manual, Anda dapat mengonfigurasi integrasi Berkelanjutan dan saluran pengiriman di Layanan Azure DevOps dengan menggunakan proyek penyebaran grup sumber daya Azure. Alur ini umumnya dipicu oleh aplikasi logika yang menggunakan metrik performa komputer virtual yang dikueri dari Azure Monitor REST API. Alur secara efektif mengotomatiskan berdasarkan metrik apa pun yang Anda inginkan, sambil mengoptimalkan templat Resource Manager.
Anda perlu melakukan penskalaan horizontal pada satu node di set skala mesin virtual pada satu waktu.
Untuk memperluas skala tiga node atau lebih sekaligus, Anda harus menskalakan kluster Service Fabric dengan menambahkan set skala komputer virtual. Paling aman untuk menambah dan mengurangi skala set skala mesin virtual secara horizontal, satu node dalam satu waktu.
Anda memiliki keandalan Silver atau lebih tinggi untuk kluster Service Fabric Anda, dan ketahanan Silver atau lebih tinggi pada skala apa pun di mana Anda mengonfigurasi aturan autoscaling.
Kapasitas minimal untuk aturan autoscaling harus sama dengan atau lebih besar dari lima instans komputer virtual. Ini juga harus sama dengan atau lebih besar dari minimal Tingkat Keandalan Anda untuk jenis node utama Anda.
Nota
Service Fabric stateful service fabric:/System/InfrastructureService/<NODE_TYPE_NAME> berjalan pada setiap jenis node yang memiliki durabilitas Silver atau lebih tinggi. Ini adalah satu-satunya layanan sistem yang didukung untuk berjalan di Azure pada salah satu jenis node kluster Anda.
Penting
Dukungan autoscaling Service Fabric Default dan NewestVM set skala mesin virtual konfigurasi penskalaan ke dalam.
Pertimbangan penskalaan vertikal
Penskalaan vertikal jenis node di Azure Service Fabric memerlukan sejumlah langkah dan pertimbangan. Contohnya:
- Kluster harus sehat sebelum penskalaan. Jika tidak, Anda akan mengacaukan kluster lebih jauh.
- Tingkat durabilitas silver atau lebih tinggi diperlukan untuk semua jenis node kluster Service Fabric yang menghosting layanan stateful.
Nota
Tipe node utama Anda yang menyelenggarakan layanan sistem Service Fabric yang stateful harus memiliki tingkat ketahanan Silver atau lebih tinggi. Setelah Anda mengaktifkan ketahanan Silver, operasi kluster seperti peningkatan, penambahan atau penghapusan node, dan sebagainya akan lebih lambat karena sistem mengoptimalkan keamanan data daripada kecepatan operasi.
Menskalakan vertikal satu set skala mesin virtual dengan hanya mengubah SKU sumber dayanya adalah operasi yang merusak, karena mem-format ulang host Anda sehingga menghapus semua status lokal yang disimpan. Sebagai gantinya, Anda akan ingin menskalakan kluster secara horizontal dengan menambahkan set skala baru dengan SKU yang diinginkan lalu memigrasikan layanan Anda ke skala baru yang diatur untuk menyelesaikan operasi penskalaan vertikal yang aman.
Kluster Anda menggunakan properti node Service Fabric dan batasan penempatan untuk memutuskan di mana harus meng-host layanan aplikasi Anda. Saat meningkatkan kapasitas jenis node utama secara vertikal, Anda akan menerapkan jenis node utama kedua dan kemudian mengatur ("isPrimary": false) pada jenis node primer asli dan melanjutkan untuk menonaktifkan nodenya serta menghapus set skala node dan sumber daya terkaitnya. Untuk detailnya, lihat Meningkatkan skala jenis node primer kluster Service Fabric.
Nota
Selalu validasi operasi di lingkungan pengujian sebelum Anda mencoba perubahan pada lingkungan produksi. Secara default, layanan sistem kluster Service Fabric memiliki batasan penempatan hanya untuk jenis node primer target.
Dengan properti node dan batasan penempatan yang dinyatakan, lakukan langkah-langkah berikut satu instans VM pada satu waktu. Ini memungkinkan layanan sistem (dan layanan berstatus Anda) ditutup dengan mulus pada instans VM yang sedang Anda hapus ketika replika baru dibuat di tempat lain.
- Dari PowerShell, jalankan
Disable-ServiceFabricNodedengan niatRemoveNodeuntuk menonaktifkan node yang akan Anda hapus. Hapus jenis node yang memiliki angka tertinggi. Misalnya, jika Anda memiliki kluster enam node, hapus instans komputer virtual "MyNodeType_5". - Jalankan
Get-ServiceFabricNodeuntuk memastikan bahwa node telah bertransisi ke dinonaktifkan. Jika tidak, tunggu sampai node dinonaktifkan. Ini mungkin perlu waktu beberapa jam untuk setiap node. Jangan lanjutkan sampai node telah bertransisi ke dinonaktifkan. - Kurangi jumlah VM satu per satu dalam jenis node tersebut. Instans VM tertinggi sekarang akan dihapus.
- Ulangi langkah 1 sampai 3 sesuai kebutuhan, tetapi jangan pernah mengurangi jumlah instans dalam jenis node utama kurang dari apa yang dijamin oleh tingkat keandalan. Lihat Merencanakan kapasitas kluster Service Fabric untuk daftar instans yang disarankan.
- Setelah semua VM hilang (diwakili sebagai "Down") fabric:/System/InfrastructureService/[node name] akan menampilkan status Error. Kemudian, Anda dapat memperbarui sumber daya kluster untuk menghapus jenis node. Anda dapat menggunakan penyebaran templat ARM, atau mengedit sumber daya kluster melalui Azure resource manager. Ini akan memulai peningkatan kluster yang akan menghapus layanan fabric:/System/InfrastructureService/[node type] yang dalam keadaan error.
- Setelah itu Anda dapat secara opsional menghapus VMScaleSet, Anda masih akan melihat node sebagai "Down" dari tampilan Service Fabric Explorer sekalipun. Langkah terakhir adalah menghapusnya dengan perintah
Remove-ServiceFabricNodeState.
Penskalaan horizontal
Anda dapat melakukan penskalaan horizontal baik secara manual atau terprogram.
Nota
Jika Anda menskalakan jenis node yang memiliki daya tahan Silver atau Gold, penskalaan akan lambat.
Menambah skala
Perluas skala kluster Service Fabric dengan meningkatkan jumlah instans untuk set skala komputer virtual tertentu. Anda dapat memperluas skala secara terprogram dengan menggunakan AzureClient dan ID untuk skala yang diinginkan guna meningkatkan kapasitas.
var scaleSet = AzureClient.VirtualMachineScaleSets.GetById(ScaleSetId);
var newCapacity = (int)Math.Min(MaximumNodeCount, scaleSet.Capacity + 1);
scaleSet.Update().WithCapacity(newCapacity).Apply();
Untuk memperluas skala secara manual, perbarui kapasitas di properti SKU dari sumber daya set skala komputer virtual yang diinginkan.
"sku": {
"name": "[parameters('vmNodeType0Size')]",
"capacity": "[parameters('nt0InstanceCount')]",
"tier": "Standard"
}
Memperbesar skala
Menskalakan ke dalam membutuhkan lebih banyak pertimbangan daripada menskalakan ke luar. Misalnya:
- Layanan sistem Service Fabric berjalan dalam jenis node utama di kluster Anda. Jangan pernah mematikan atau mempersempit skala jumlah instans untuk jenis node tersebut sehingga Anda memiliki lebih sedikit instans daripada apa yang dijamin tingkat keandalan.
- Untuk layanan stateful, Anda memerlukan sejumlah node yang selalu aktif untuk mempertahankan ketersediaan dan menjaga keadaan layanan Anda. Minimal, Anda memerlukan sejumlah node yang sama dengan jumlah replika target dari partisi atau layanan.
Untuk menskalakan secara manual, ikuti langkah-langkah berikut:
- Dari PowerShell, jalankan
Disable-ServiceFabricNodedengan niatRemoveNodeuntuk menonaktifkan node yang akan Anda hapus. Hapus jenis node yang memiliki angka tertinggi. Misalnya, jika Anda memiliki kluster enam node, hapus instans komputer virtual "MyNodeType_5". - Jalankan
Get-ServiceFabricNodeuntuk memastikan bahwa node telah bertransisi ke dinonaktifkan. Jika tidak, tunggu sampai node dinonaktifkan. Ini mungkin perlu waktu beberapa jam untuk setiap node. Jangan lanjutkan sampai node telah bertransisi ke dinonaktifkan. - Kurangi jumlah VM satu per satu dalam jenis node tersebut. Instans VM tertinggi sekarang akan dihapus.
- Ulangi langkah 1 sampai 3 sesuai kebutuhan hingga Anda menyediakan kapasitas yang Anda inginkan. Jangan mengurangi skala jumlah instans dalam tipe node utama menjadi kurang dari yang diizinkan oleh tingkat keandalan. Lihat Merencanakan kapasitas kluster Service Fabric untuk daftar instans yang disarankan.
Untuk mempersempit skala secara manual, perbarui kapasitas di properti SKU dari sumber daya set skala komputer virtual yang diinginkan.
"sku": {
"name": "[parameters('vmNodeType0Size')]",
"capacity": "[parameters('nt0InstanceCount')]",
"tier": "Standard"
}
Anda harus menyiapkan node untuk mematikan guna mengurangi skala secara programatis. Temukan node yang akan dihapus (node instans tertinggi). Contohnya:
using (var client = new FabricClient())
{
var mostRecentLiveNode = (await client.QueryManager.GetNodeListAsync())
.Where(n => n.NodeType.Equals(NodeTypeToScale, StringComparison.OrdinalIgnoreCase))
.Where(n => n.NodeStatus == System.Fabric.Query.NodeStatus.Up)
.OrderByDescending(n =>
{
var instanceIdIndex = n.NodeName.LastIndexOf("_");
var instanceIdString = n.NodeName.Substring(instanceIdIndex + 1);
return int.Parse(instanceIdString);
})
.FirstOrDefault();
Nonaktifkan dan hapus node dengan menggunakan instans yang sama FabricClient (client dalam hal ini) dan node instans (instanceIdString dalam hal ini) yang Anda gunakan dalam kode sebelumnya:
var scaleSet = AzureClient.VirtualMachineScaleSets.GetById(ScaleSetId);
// Remove the node from the Service Fabric cluster
ServiceEventSource.Current.ServiceMessage(Context, $"Disabling node {mostRecentLiveNode.NodeName}");
await client.ClusterManager.DeactivateNodeAsync(mostRecentLiveNode.NodeName, NodeDeactivationIntent.RemoveNode);
// Wait (up to a timeout) for the node to gracefully shut down
var timeout = TimeSpan.FromMinutes(5);
var waitStart = DateTime.Now;
while ((mostRecentLiveNode.NodeStatus == System.Fabric.Query.NodeStatus.Up || mostRecentLiveNode.NodeStatus == System.Fabric.Query.NodeStatus.Disabling) &&
DateTime.Now - waitStart < timeout)
{
mostRecentLiveNode = (await client.QueryManager.GetNodeListAsync()).FirstOrDefault(n => n.NodeName == mostRecentLiveNode.NodeName);
await Task.Delay(10 * 1000);
}
// Decrement virtual machine scale set capacity
var newCapacity = (int)Math.Max(MinimumNodeCount, scaleSet.Capacity - 1); // Check min count
scaleSet.Update().WithCapacity(newCapacity).Apply();
Nota
Saat Anda mempersempit skala dalam kluster, Anda akan melihat instans node/VM yang dihapus ditampilkan dalam keadaan tidak sehat di Service Fabric Explorer. Untuk penjelasan tentang perilaku ini, lihat Perilaku yang dapat Anda amati di Service Fabric Explorer. Kamu bisa:
- Jalankan perintah Remove-ServiceFabricNodeState dengan nama node yang sesuai.
- Terapkan aplikasi pembantu autoscale Service Fabric pada kluster Anda. Aplikasi ini memastikan bahwa node yang di-scale down dihapus dari Service Fabric Explorer.
Tingkat keandalan
Tingkat keandalan adalah milik sumber daya kluster Service Fabric Anda. Ini tidak dapat dikonfigurasi secara berbeda untuk jenis node individual. Ini mengontrol faktor replikasi layanan sistem untuk kluster, dan merupakan pengaturan pada tingkat sumber daya kluster.
Tingkat keandalan akan menentukan jumlah minimal node yang harus dimiliki oleh jenis node utama Anda. Tingkat keandalan dapat mengambil nilai berikut:
- Platinum: Menjalankan layanan sistem dengan target jumlah set replika sebanyak tujuh dan sembilan node seed.
- Gold: Menjalankan layanan sistem dengan set replika target sebanyak tujuh dan tujuh simpul benih.
- Silver: Menjalankan layanan sistem dengan target jumlah set replika sebanyak lima dan lima node-node benih.
- Bronze: Menjalankan layanan sistem dengan jumlah replika target dari tiga dan tiga node seed.
Tingkat keandalan minimal yang disarankan adalah Silver.
Tingkat keandalan diatur di bagian properti sumber daya Microsoft.ServiceFabric/clusters,seperti ini:
"properties":{
"reliabilityLevel": "Silver"
}
Tingkat ketahanan
Peringatan
Jenis node yang berjalan dengan daya tahan Bronze tidak memperoleh hak istimewa. Pekerjaan infrastruktur yang mempengaruhi beban kerja tanpa status Anda tidak akan dihentikan atau ditunda, yang dapat memengaruhi beban kerja Anda.
Gunakan ketahanan Bronze hanya untuk jenis node yang menjalankan beban kerja stateless. Untuk beban kerja produksi, jalankan Silver atau yang lebih tinggi untuk memastikan konsistensi keadaan. Pilih keandalan yang tepat berdasarkan panduan dalam dokumentasi perencanaan kapasitas.
Tingkat ketahanan harus ditetapkan dalam dua sumber daya. Salah satunya adalah profil ekstensi dari sumber daya set skala komputer virtual:
"extensionProfile": {
"extensions": {
"name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
"properties": {
"settings": {
"durabilityLevel": "Bronze"
}
}
}
}
Sumber daya lainnya berada di nodeTypes bawah sumber daya Microsoft.ServiceFabric/clusters:
"nodeTypes": [
{
"name": "[variables('vmNodeType0Name')]",
"durabilityLevel": "Bronze"
}
]
Langkah berikutnya
- Membuat kluster di VM atau komputer yang menjalankan Windows Server: Pembuatan kluster Service Fabric untuk Windows Server.
- Membuat kluster di VM atau komputer yang menjalankan Linux: Buat kluster Linux.
- Pelajari tentang opsi dukungan Service Fabric.