Pembatasan Service Fabric Cluster Resource Manager

Bahkan jika Anda telah mengonfigurasi Cluster Resource Manager dengan benar, klaster bisa terganggu. Misalnya, mungkin ada kegagalan node dan domain kesalahan simultan - apa yang akan terjadi jika itu terjadi selama peningkatan? Cluster Resource Manager selalu mencoba memperbaiki semuanya, mengkonsumsi sumber daya klaster yang mencoba mengatur ulang dan memperbaiki klaster. Pembatasan membantu menyediakan backstop sehingga klaster dapat menggunakan sumber daya untuk menstabilkan - node kembali, partisi jaringan sembuh, bit yang dikoreksi disebarkan.

Untuk membantu situasi semacam ini, Service Fabric Cluster Resource Manager mencakup beberapa pembatasan. Pembatasan ini merupakan palu yang cukup besar. Umumnya mereka tidak boleh diubah tanpa perencanaan dan pengujian yang cermat.

Jika Anda mengubah pembatasan Cluster Resource Manger, Anda harus menyetelnya ke beban aktual yang diharapkan. Anda dapat menentukan bahwa Anda perlu memiliki beberapa pembatasan di tempat, bahkan jika itu berarti klaster membutuhkan waktu lebih lama untuk stabil dalam beberapa situasi. Pengujian diperlukan untuk menentukan nilai yang benar untuk pembatasan. Pembatasan harus cukup tinggi untuk memungkinkan klaster merespons perubahan dalam jumlah waktu yang wajar, dan cukup rendah untuk benar-benar mencegah terlalu banyak konsumsi sumber daya.

Seringkali kami telah melihat pelanggan menggunakan pembatasan karena mereka sudah berada di lingkungan sumber daya yang terbatas. Beberapa contoh akan dibatasi bandwidth jaringan untuk node individu, atau disk yang tidak dapat membangun banyak replika stateful secara paralel karena keterbatasan throughput. Tanpa pembatasan, operasi dapat membanjiri sumber daya ini, menyebabkan operasi gagal atau lambat. Dalam situasi ini pelanggan menggunakan pembatasan dan mengtahui bahwa mereka memperpanjang jumlah waktu yang dibutuhkan klaster untuk mencapai keadaan stabil. Pelanggan juga memahami bahwa mereka dapat berakhir pada keandalan keseluruhan yang lebih rendah saat mereka dibatasi.

Mengonfigurasi pembatasan

Service Fabric memiliki dua mekanisme untuk membatasi jumlah gerakan replika. Mekanisme default yang ada sebelum Service Fabric 5.7 menunjukkan pembatasan sebagai jumlah absolut gerakan yang diizinkan. Ini tidak berfungsi untuk klaster dari semua ukuran. Secara khusus, untuk klaster besar, nilai default bisa terlalu kecil, secara signifikan memperlambat penyeimbangan bahkan saat diperlukan, sementara tidak berpengaruh pada klaster yang lebih kecil. Mekanisme sebelumnya ini telah disamakan oleh pembatasan berbasis persentase, yang menskalakan lebih baik dengan klaster dinamis di mana jumlah layanan dan node berubah secara teratur.

Pembatasan didasarkan pada persentase jumlah replika dalam klaster. Pembatasan berbasis persentase memungkinkan pernyataan aturan: "jangan pindahkan lebih dari 10% replika dalam interval 10 menit", misalnya.

Pengaturan konfigurasi untuk pembatsan berbasis persentase adalah:

  • GlobalMovementThrottleThresholdPercentage - Jumlah maksimum gerakan yang diizinkan dalam klaster kapan saja, dinyatakan sebagai persentase dari jumlah total replika dalam klaster. 0 menunjukkan tidak ada batasan. Nilai default adalah 0. Jika pengaturan ini dan GlobalMovementThrottleThreshold ditentukan, maka batas yang lebih konservatif digunakan.
  • GlobalMovementThrottleThresholdPercentageForPlacement - Jumlah maksimum pergerakan yang diizinkan selama fase penempatan, dinyatakan sebagai persentase dari jumlah total replika dalam klaster. 0 menunjukkan tidak ada batasan. Nilai default adalah 0. Jika pengaturan ini dan GlobalMovementThrottleThresholdForPlacement ditentukan, maka batas yang lebih konservatif digunakan.
  • GlobalMovementThrottleThresholdPercentageForBalancing - Jumlah maksimum gerakan yang diizinkan selama fase penyeimbangan, dinyatakan sebagai persentase dari jumlah total replika dalam klaster. 0 menunjukkan tidak ada batasan. Nilai default adalah 0. Jika pengaturan ini dan GlobalMovementThrottleThresholdForBalancing ditentukan, maka batas yang lebih konservatif digunakan.

Saat menentukan persentase pembatasan, Anda akan menentukan 5% sebagai 0,05. Interval di mana pembatasan ini diatur adalah GlobalMovementThrottleCountingInterval, yang ditentukan dalam hitungan detik.

<Section Name="PlacementAndLoadBalancing">
     <Parameter Name="GlobalMovementThrottleThresholdPercentage" Value="0" />
     <Parameter Name="GlobalMovementThrottleThresholdPercentageForPlacement" Value="0" />
     <Parameter Name="GlobalMovementThrottleThresholdPercentageForBalancing" Value="0" />
     <Parameter Name="GlobalMovementThrottleCountingInterval" Value="600" />
</Section>

melalui ClusterConfig.json untuk penyebaran Mandiri atau Template.json untuk klaster yang dihosting Azure:

"fabricSettings": [
  {
    "name": "PlacementAndLoadBalancing",
    "parameters": [
      {
          "name": "GlobalMovementThrottleThresholdPercentage",
          "value": "0.0"
      },
      {
          "name": "GlobalMovementThrottleThresholdPercentageForPlacement",
          "value": "0.0"
      },
      {
          "name": "GlobalMovementThrottleThresholdPercentageForBalancing",
          "value": "0.0"
      },
      {
          "name": "GlobalMovementThrottleCountingInterval",
          "value": "600"
      }
    ]
  }
]

Pembatsan berbasis hitungan default

Informasi ini disediakan jika Anda memiliki klaster yang lebih lama atau masih mempertahankan konfigurasi ini dalam klaster yang telah ditingkatkan. Secara umum, disarankan agar konfigurasi ini diganti dengan pembatsan berbasis persentase di atas. Karena pembatsan berbasis persentase dinonaktifkan secara default, pembatasan ini tetap menjadi pembatasan default untuk klaster hingga dinonaktifkan dan diganti dengan pembatasan berbasis persentase.

  • GlobalMovementThrottleThreshold – pengaturan ini mengontrol jumlah total pergerakan dalam klaster selama beberapa waktu. Jumlah waktu ditentukan dalam detik sebagai GlobalMovementThrottleCountingInterval. Nilai default untuk GlobalMovementThrottleThreshold adalah 1000 dan nilai default untuk GlobalMovementThrottleCountingInterval adalah 600.
  • MovementPerPartitionThrottleThreshold – pengaturan ini mengontrol jumlah total pergerakan untuk setiap partisi layanan selama beberapa waktu. Jumlah waktu ditentukan dalam detik sebagai MovementPerPartitionThrottleCountingInterval. Nilai default untuk MovementPerPartitionThrottleThreshold adalah 50 dan nilai default untuk MovementPerPartitionThrottleCountingInterval adalah 600.

Konfigurasi untuk pembatasan ini mengikuti pola yang sama dengan pembatasan berbasis persentase.

Langkah berikutnya

  • Untuk mengetahui tentang bagaimana Cluster Resource Manager mengelola dan menyeimbangkan beban dalam klaster, lihat artikel tentang menyeimbangkan beban
  • Cluster Resource Manager memiliki banyak opsi untuk menjelaskan klaster. Untuk mengetahui lebih lanjut, lihat artikel ini tentang menjelaskan klaster Service Fabric