Defragmentasi metrik dan beban dalam Service Fabric

Strategi default Service Fabric Cluster Resource Manager untuk mengelola metrik beban dalam kluster adalah dengan mendistribusikan beban. Memastikan bahwa simpul digunakan secara merata menghindari titik panas dan dingin yang mengarah pada pertikaian dan sumber daya yang terbuang sia-sia. Mendistribusikan beban kerja dalam kluster juga merupakan yang paling aman dalam hal kegagalan yang masih hidup karena memastikan bahwa kegagalan tidak mengeluarkan persentase besar dari beban kerja yang diberikan.

Service Fabric Cluster Resource Manager memang mendukung strategi yang berbeda untuk mengelola beban, yaitu defragmentasi. Defragmentasi berarti bahwa sebagai ganti mencoba mendistribusikan pemanfaatan metrik di seluruh kluster, metrik tersebut dikonsolidasikan. Konsolidasi hanyalah inversi dari strategi penyeimbangan default – sebagai ganti meminimalkan simpangan baku rata-rata beban metrik, Cluster Resource Manager mencoba meningkatkannya.

Waktu menggunakan defragmentasi

Mendistribusikan beban dalam kluster menggunakan beberapa sumber daya pada setiap simpul. Beberapa beban kerja menciptakan layanan yang sangat besar dan menggunakan sebagian besar atau semua simpul. Dalam kasus ini, ada kemungkinan bahwa ketika ada beban kerja besar yang dibuat bahwa tidak ada cukup ruang pada simpul apa pun untuk menjalankannya. Beban kerja yang besar tidak menjadi masalah dalam Service Fabric; dalam kasus ini Cluster Resource Manager menentukan bahwa perlu mengatur ulang kluster untuk memberikan ruang bagi beban kerja besar ini. Namun, sementara beban kerja harus menunggu untuk dijadwalkan dalam kluster.

Jika ada banyak layanan dan keadaan untuk bergerak, maka itu bisa memakan waktu lama untuk beban kerja besar ditempatkan di kluster. Hal ini lebih mungkin jika beban kerja lain dalam kluster juga besar dan jadi butuh waktu lebih lama untuk diatur ulang. Tim Service Fabric mengukur waktu pembuatan dalam simulasi skenario ini. Kami menemukan bahwa menciptakan layanan besar membutuhkan waktu lebih lama segera setelah pemanfaatan kluster di atas antara 30% dan 50%. Untuk menangani skenario ini, kami memperkenalkan defragmentasi sebagai strategi penyeimbangan. Kami menemukan bahwa untuk beban kerja yang besar, terutama yang di mana waktu pembuatan penting, defragmentasi benar-benar membantu beban kerja baru tersebut terjadwal dalam kluster.

Anda dapat mengonfigurasi metrik defragmentasi agar Cluster Resource Manager secara proaktif mencoba memadatkan beban layanan menjadi lebih sedikit simpul. Hal ini membantu memastikan bahwa hampir selalu ada ruang untuk layanan besar tanpa mengatur ulang kluster. Tidak harus mengatur ulang kluster memungkinkan pembuatan beban kerja besar dengan cepat.

Sebagian besar pengguna tidak perlu defragmentasi. Layanan biasanya kecil, jadi tidak sulit untuk menemukan ruang bagi layanan tersebut di kluster. Ketika reorganisasi dimungkinkan, itu berjalan cepat, sekali lagi karena sebagian besar layanan kecil dan dapat dipindahkan dengan cepat dan secara paralel. Namun, jika Anda memiliki layanan besar dan membutuhkannya dibuat dengan cepat maka strategi defragmentasi adalah untuk Anda. Selanjutnya, kita akan membahas tradeoff menggunakan defragmentasi.

Tradeoff defragmentasi

Defragmentasi dapat meningkatkan dampak kegagalan, karena lebih banyak layanan berjalan pada simpul yang gagal. Defragmentasi juga dapat meningkatkan biaya, karena sumber daya dalam kluster harus diadakan sebagai cadangan, menunggu penciptaan beban kerja yang besar.

Diagram berikut memberikan representasi visual dari dua kluster, satu yang didefragmentasi dan satu lagi yang tidak.

Membandingkan Kluster Seimbang dan Defragmentasi

Dalam kasus yang seimbang, pertimbangkan jumlah gerakan yang diperlukan untuk menempatkan salah satu objek layanan terbesar. Dalam kluster yang didefragmentasi, beban kerja yang besar dapat ditempatkan pada simpul empat atau lima tanpa harus menunggu layanan lain untuk dipindahkan.

Keuntungan dan kerugian defragmentasi

Jadi, apa yag dimaksud dengan tradeoff konseptual lainnya? Berikut adalah tabel cepat hal-hal yang harus dipikirkan:

Keuntungan defragmentasi Kerugian defragmentasi
Memungkinkan pembuatan layanan besar yang lebih cepat Konsentrat memuat ke lebih sedikit simpul, sehingga meningkatkan ketidaksesuaian
Memungkinkan pergerakan data yang lebih rendah selama pembuatan Kegagalan dapat memengaruhi lebih banyak layanan dan menyebabkan lebih banyak churn
Memungkinkan deskripsi persyaratan dan reklamasi ruang yang beragam Konfigurasi Manajemen Sumber Daya keseluruhan yang lebih kompleks

Anda dapat mencampur metrik yang didefragmentasi dan normal dalam kluster yang sama. Cluster Resource Manager mencoba mengkonsolidasikan metrik defragmentasi sebanyak mungkin sambil menyebarkan yang lain. Hasil perpaduan strategi defragmentasi dan penyeimbangan bergantung pada beberapa faktor, termasuk:

  • jumlah metrik penyeimbangan vs. jumlah metrik defragmentasi
  • Apakah ada layanan yang menggunakan kedua jenis metrik
  • Bobot metrik
  • beban metrik saat ini

Eksperimen diperlukan untuk menentukan konfigurasi yang tepat yang diperlukan. Sebaiknya pengukuran beban kerja secara menyeluruh sebelum Anda mengaktifkan metrik defragmentasi dalam produksi. Hal ini terutama berlaku ketika mencampur defragmentasi dan metrik seimbang dalam layanan yang sama.

Mengonfigurasi metrik defragmentasi

Mengonfigurasi metrik defragmentasi adalah keputusan global dalam kluster, dan metrik individual dapat dipilih untuk defragmentasi. Cuplikan konfigurasi berikut menunjukkan cara mengonfigurasi metrik untuk defragmentasi. Dalam hal ini, "Metric1" dikonfigurasi sebagai metrik defragmentasi, sementara "Metric2" akan terus seimbang secara normal.

ClusterManifest.xml:

<Section Name="DefragmentationMetrics">
    <Parameter Name="Metric1" Value="true" />
    <Parameter Name="Metric2" Value="false" />
</Section>

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

"fabricSettings": [
  {
    "name": "DefragmentationMetrics",
    "parameters": [
      {
          "name": "Metric1",
          "value": "true"
      },
      {
          "name": "Metric2",
          "value": "false"
      }
    ]
  }
]

Langkah berikutnya

  • Cluster Resource Manager memiliki banyak opsi untuk menjelaskan klaster. Untuk mengetahui selengkapnya topik tersebut, lihat artikel ini tentang menjelaskan kluster Service Fabric
  • Metrik adalah cara Service Fabric Cluster Resource Manager mengelola konsumsi dan kapasitas pada kluster. Untuk mempelajari selengkapnya tentang metrik dan cara mengonfigurasinya, lihat artikel ini