Bagikan melalui


Meningkatkan kluster Azure Service Fabric

Kluster Service Fabric adalah set komputer virtual atau fisik yang tersambung dengan jaringan tempat layanan mikro Anda disebarkan dan dikelola. Mesin atau VM yang merupakan bagian dari kluster disebut node. Kluster dapat berisi ribuan node yang berpotensi. Setelah membuat kluster Service Fabric, Anda dapat menskalakan kluster secara horizontal (mengubah jumlah node) atau secara vertikal (mengubah sumber daya node). Anda dapat menskalakan kluster kapan saja, bahkan ketika beban kerja berjalan pada kluster. Saat kluster diskalakan, aplikasi Anda juga secara otomatis diskalakan.

Mengapa skala kluster? Permintaan aplikasi berubah dari waktu ke waktu. Anda mungkin perlu meningkatkan sumber daya kluster untuk memenuhi peningkatan beban kerja aplikasi atau lalu lintas jaringan atau mengurangi sumber daya kluster saat permintaan turun.

Penskalaan masuk dan keluar, atau penskalaan horizontal

Mengubah jumlah node dalam kluster. Setelah node yang baru bergabung dengan kluster, Cluster Resource Manager memindahkan layanan ke node yang mengurangi beban pada node yang ada. Anda juga dapat mengurangi jumlah node jika sumber daya kluster tidak digunakan secara efisien. Saat node meninggalkan kluster, layanan akan memindahkan node tersebut dan peningkatan beban pada node yang tersisa. Mengurangi jumlah node dalam kluster yang berjalan di Azure dapat menghemat biaya, karena Anda membayar jumlah VM yang Anda gunakan dan bukan beban kerja pada VM tersebut.

  • Keuntungan: Skala tak terbatas, secara teori. Jika aplikasi Anda dirancang untuk skalabilitas, Anda dapat mengaktifkan pertumbuhan tanpa batas dengan menambahkan lebih banyak node. Alat di lingkungan cloud memudahkan untuk menambahkan atau menghapus node, sehingga mudah untuk menyesuaikan kapasitas dan Anda hanya membayar sumber daya yang Anda gunakan.
  • Kerugian: Aplikasi harus dirancang untuk skalabilitas. Database aplikasi dan persistensi mungkin memerlukan pekerjaan arsitektur tambahan untuk menskalakan juga. Namun, Reliable Collection dalam layanan stateful Service Fabric sangat memudahkan Anda untuk menskalakan data aplikasi.

Set skala komputer virtual adalah sumber daya komputasi Azure yang Anda gunakan untuk menyebarkan dan mengelola kumpulan komputer virtual sebagai satu set. Setiap jenis node yang ditentukan dalam kluster Azure diatur sebagai set skala terpisah. Setiap jenis node kemudian dapat ditingkatkan atau diturunkan skalanya secara terpisah, memiliki set port berbeda yang terbuka, dan dapat memiliki metrik kapasitas yang berbeda.

Saat menskalakan kluster tunggal, ingatlah pedoman berikut:

  • Jenis node primer yang menjalankan beban kerja produksi stateful harus selalu memiliki lima node atau lebih.
  • Jenis node nonprimer yang menjalankan beban kerja produksi stateful harus selalu memiliki lima node atau lebih.
  • Jenis node non-primer yang menjalankan beban kerja produksi stateless harus selalu memiliki dua node atau lebih.
  • Setiap jenis node tingkat durabilitas Gold atau Silver harus selalu memiliki lima node atau lebih.
  • Jangan hapus instans/node VM acak dari jenis node, selalu gunakan skala set skala komputer virtual yang diatur dalam fitur. Penghapusan instans VM acak dapat berdampak buruk pada kemampuan sistem untuk melakukan load balance dengan benar.
  • Jika menggunakan aturan penskalaan otomatis, tetapkan aturan sehingga penskalaan di (menghapus instans VM) dilakukan dengan satu node pada satu waktu. Penurunan skala lebih dari satu instans pada satu waktu tidak aman.

Karena jenis node Service Fabric di kluster Anda terdiri dari set skala komputer virtual di backend, Anda dapat mengatur aturan skala otomatis atau menskalakan setiap jenis node/set skala komputer virtual secara manual.

Penskalaan terprogram

Dalam banyak skenario, Penskalaan kluster secara manual atau dengan aturan skala otomatis adalah solusi yang baik. Namun, untuk skenario yang lebih maju, aturan tersebut mungkin tidak cocok. Potensi kelemahan pendekatan ini meliputi:

  • Penskalaan secara manual mengharuskan Anda untuk masuk dan secara eksplisit meminta operasi penskalaan. Jika operasi penskalaan sering diperlukan atau diperlukan pada waktu yang tidak dapat diprediksi, pendekatan ini mungkin bukan solusi yang baik.
  • Ketika aturan skala otomatis menghapus instans dari set skala komputer virtual, aturan tidak secara otomatis menghapus pengetahuan tentang node tersebut dari kluster Service Fabric terkait, kecuali jenis node memiliki tingkat durabilitas Silver atau Gold. Karena aturan skala otomatis bekerja pada tingkat skala yang ditetapkan (daripada di tingkat Service Fabric), aturan skala otomatis dapat menghapus node Service Fabric tanpa menonaktifkannya dengan lancar. Penghapusan node kasar ini akan meninggalkan status node Service Fabric 'ghost' setelah operasi penskalaan. Seseorang (atau layanan) harus secara berkala membersihkan status node yang dihapus di kluster Service Fabric.
  • Jenis node dengan tingkat durabilitas Gold atau Silver secara otomatis membersihkan node yang dihapus sehingga pembersihan tambahan tidak diperlukan.
  • Meskipun ada banyak metrik yang didukung oleh aturan skala otomatis, ini tetap merupakan set terbatas. Jika skenario Anda meminta penskalaan berdasarkan beberapa metrik yang tidak tercakup dalam set tersebut, aturan skala otomatis mungkin bukan pilihan yang baik.

Cara Anda melakukan penskalaan Service Fabric bergantung pada skenario Anda. Jika penskalaan tidak biasa, kemampuan untuk menambahkan atau menghapus node secara manual mungkin cukup. Untuk skenario yang lebih kompleks, aturan skala otomatis dan SDK yang mengekspos kemampuan untuk menskalakan secara terprogram menawarkan alternatif yang kuat.

Azure API tersedia, dan ini memungkinkan aplikasi untuk bekerja secara terprogram dengan set skala komputer virtual dan kluster Service Fabric. Jika opsi skala otomatis yang ada tidak berfungsi untuk skenario Anda, API ini memungkinkan penerapan logika penskalaan kustom.

Salah satu pendekatan untuk menerapkan fungsi skala otomatis 'buatan sendiri' ini adalah menambahkan layanan stateless baru ke aplikasi Service Fabric untuk mengelola operasi penskalaan. Membuat layanan penskalaan Anda sendiri memberikan tingkat kontrol dan penyesuaian tertinggi atas perilaku penskalaan aplikasi Anda. Ini dapat berguna untuk skenario yang membutuhkan kontrol yang tepat atas waktu atau cara aplikasi diskalakan masuk atau keluar. Namun, kontrol ini dilengkapi dengan tradeoff kompleksitas kode. Menggunakan pendekatan ini berarti Anda perlu memiliki kode penskalaan, dan ini bukanlah hal yang mudah. Dalam metode RunAsync layanan, serangkaian pemicu dapat menentukan apakah penskalaan diperlukan (termasuk memeriksa parameter seperti ukuran kluster maksimum dan cooldown penskalaan).

API yang digunakan untuk interaksi set skala komputer virtual (untuk memeriksa jumlah instans komputer virtual saat ini maupun memodifikasinya) adalah pustaka Azure Management Compute yang andal. Pustaka komputasi yang andal menyediakan API yang mudah digunakan untuk berinteraksi dengan set skala komputer virtual. Untuk berinteraksi dengan cluster Service Fabric itu sendiri, gunakan System.Fabric.FabricClient.

Kode penskalaan tidak perlu dijalankan sebagai layanan di kluster untuk diskalakan. IAzure dan FabricClient dapat tersambung ke sumber daya Azure terkait dari jarak jauh sehingga layanan penskalaan dapat dengan mudah menjadi aplikasi konsol atau layanan Windows yang dijalankan dari luar aplikasi Service Fabric.

Berdasarkan keterbatasan ini, Anda mungkin ingin menerapkan model penskalaan otomatis yang lebih disesuaikan.

Penskalaan atas dan bawah, atau penskalaan vertikal

Mengubah sumber daya (CPU, memori, atau penyimpanan) node dalam kluster.

  • Keuntungan: Arsitektur perangkat lunak dan aplikasi tetap sama.
  • Kerugian: Skala terbatas karena ada batasan jumlah peningkatan sumber daya pada node individu. Downtime, karena Anda harus mengambil komputer fisik atau virtual secara offline untuk menambah atau menghapus sumber daya.

Set skala komputer virtual adalah sumber daya komputasi Azure yang Anda gunakan untuk menyebarkan dan mengelola kumpulan komputer virtual sebagai satu set. Setiap jenis node yang ditentukan dalam kluster Azure diatur sebagai set skala terpisah. Setiap jenis node kemudian dapat dikelola secara terpisah. Penskalaan jenis node ke atas atau ke bawah melibatkan penambahan jenis node baru (dengan VM SKU yang diperbarui) dan penghapusan jenis node lama.

Saat menskalakan kluster Azure, ingatlah pedoman berikut:

Proses penskalaan jenis node ke atas atau ke bawah berbeda-beda, bergantung pada apakah itu adalah jenis node nonprimer atau primer.

Penskalaan Jenis node nonprimer

Buat jenis node baru dengan sumber daya yang Anda butuhkan. Perbarui batasan penempatan layanan yang berjalan untuk menyertakan jenis node baru. Secara bertahap (satu per satu), kurangi jumlah instans dari instans jenis node lama, hitung hingga nol sehingga keandalan kluster tidak terpengaruh. Layanan secara bertahap akan bermigrasi ke jenis node baru karena jenis node lama dinonaktifkan.

Penskalaan jenis node primer

Terapkan jenis node primer baru dengan SKU VM yang diperbarui, lalu nonaktifkan instans jenis node primer asli satu per satu sehingga layanan sistem bermigrasi ke set skala baru. Verifikasi bahwa kluster dan node baru sehat, lalu hapus set skala asli dan status node untuk node yang dihapus.

Jika tidak memungkinkan, Anda dapat membuat kluster baru dan memulihkan status aplikasi (jika berlaku) dari kluster lama Anda. Anda tidak perlu memulihkan status layanan sistem apa pun; aplikasi ini dibuat kembali saat Anda menyebarkan aplikasi ke kluster baru. Jika Anda hanya menjalankan aplikasi stateless pada kluster Anda, Anda hanya perlu menyebarkan aplikasi ke kluster baru, Anda tidak perlu memulihkan apa pun.

Langkah berikutnya