Menyeimbangkan klaster service fabric Anda

Service Fabric Cluster Resource Manager mendukung perubahan beban dinamis, bereaksi terhadap penambahan atau penghapusan node atau layanan. Ini juga secara otomatis memperbaiki pelanggaran batasan, dan secara proaktif menyeimbangkan kembali klaster. Tetapi seberapa sering tindakan ini diambil, dan apa yang memicunya?

Ada tiga kategori pekerjaan berbeda yang dilakukan Resource Manager Kluster:

  • Penempatan – tahap ini berkaitan dengan penempatan replika stateful atau instans stateless yang hilang. Penempatan mencakup layanan baru dan penanganan replika stateful atau instans stateless yang gagal. Penghapusan dan pembuangan replika atau instans ditangani di sini.
  • Pemeriksaan Kendala – tahap ini memeriksa dan memperbaiki pelanggaran dari berbagai kendala penempatan (aturan) dalam sistem. Contoh aturan adalah hal-hal seperti memastikan bahwa simpul tidak melebihi kapasitas dan bahwa batasan penempatan layanan terpenuhi.
  • Penyeimbangan - tahap ini memeriksa untuk melihat apakah penyeimbangan ulang diperlukan berdasarkan tingkat keseimbangan yang diinginkan yang dikonfigurasi untuk metrik yang berbeda. Jika demikian hal ini mencoba untuk menemukan pengaturan dalam klaster yang lebih seimbang.

Mengonfigurasi Timer Cluster Resource Manager

Set kontrol pertama seputar penyeimbangan adalah satu set timer. Pengatur waktu ini mengatur seberapa sering Cluster Resource Manager memeriksa klaster dan mengambil tindakan korektif.

Masing-masing dari berbagai jenis koreksi yang dapat dilakukan Cluster Resource Manager dikendalikan oleh timer yang berbeda yang mengatur frekuensinya. Saat setiap timer aktif, tugas dijadwalkan. Secara default Resource Manager:

  • memindai statusnya dan menerapkan pembaruan (seperti mencatat bahwa node sedang down) setiap 1/10 detik
  • mengatur bendera centang penempatan setiap detik
  • mengatur bendera centang batasan setiap detik
  • mengatur bendera penyeimbangan setiap lima detik

Contoh konfigurasi yang mengatur timer ini ada di bawah ini:

Contoh konfigurasi yang mengatur timer ini di bawah ini:

        <Section Name="PlacementAndLoadBalancing">
            <Parameter Name="PLBRefreshGap" Value="0.1" />
            <Parameter Name="MinPlacementInterval" Value="1.0" />
            <Parameter Name="MinConstraintCheckInterval" Value="1.0" />
            <Parameter Name="MinLoadBalancingInterval" Value="5.0" />
        </Section>

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

"fabricSettings": [
  {
    "name": "PlacementAndLoadBalancing",
    "parameters": [
      {
          "name": "PLBRefreshGap",
          "value": "0.10"
      },
      {
          "name": "MinPlacementInterval",
          "value": "1.0"
      },
      {
          "name": "MinConstraintCheckInterval",
          "value": "1.0"
      },
      {
          "name": "MinLoadBalancingInterval",
          "value": "5.0"
      }
    ]
  }
]

Saat ini Cluster Resource Manager hanya melakukan salah satu tindakan ini pada satu waktu, secara berurutan. Inilah sebabnya kami menyebut timer ini sebagai "interval minimum" dan tindakan yang diambil ketika timer berbunyi sebagai "bendera pengaturan". Misalnya, Cluster Resource Manager mengurus permintaan yang tertunda untuk membuat layanan sebelum menyeimbangkan klaster. Seperti yang Anda lihat dengan interval waktu default yang ditentukan, Resource Manager Klaster memindai apa pun yang perlu sering dilakukan. Biasanya ini berarti bahwa rangkaian perubahan yang dibuat selama setiap langkah adalah perubahan kecil. Perubahan kecil dan sering memungkinkan Resource Manager Kluster responsif ketika hal-hal terjadi di kluster. Timer default menyediakan beberapa batching karena banyak jenis kejadian yang sama cenderung terjadi secara bersamaan.

Misalnya, ketika node gagal, mereka dapat melakukannya di seluruh domain kesalahan pada satu waktu. Semua kegagalan ini ditangkap selama pembaruan status berikutnya setelah PLBRefreshGap. Koreksi ditentukan selama penempatan, pemeriksaan batasan, dan proses penyeimbangan berikut ini. Secara default, Resource Manager Kluster tidak memindai melalui jam perubahan dalam kluster dan mencoba mengatasi semua perubahan sekaligus. Melakukan hal itu akan menyebabkan ledakan churn.

Cluster Resource Manager juga memerlukan beberapa informasi tambahan untuk menentukan apakah klaster tidak terbatas. Untuk itu kami memiliki dua konfigurasi lainnya: BalancingThresholds dan ActivityThresholds.

Menyeimbangkan ambang batas

Balancing Threshold adalah kontrol utama untuk memicu penyeimbangan ulang. Balancing Threshold untuk metrik adalah rasio. Jika beban untuk metrik pada node yang paling banyak dimuat dibagi dengan jumlah beban pada node yang paling sedikit dimuat melebihi BalancingThreshold metrik itu, maka klaster tidak seimbang Akibatnya, penyeimbangan dipicu saat pemeriksaan Cluster Resource Manager. Timer MinLoadBalancingInterval menentukan seberapa sering Cluster Resource Manager harus memeriksa apakah penyeimbangan ulang diperlukan. Memeriksa tidak berarti terjadi sesuatu.

Balancing Thresholds ditentukan berdasarkan per-metrik sebagai bagian dari definisi klaster. Untuk informasi selengkapnya tentang metrik, lihat artikel metrik.

ClusterManifest.xml

    <Section Name="MetricBalancingThresholds">
      <Parameter Name="MetricName1" Value="2"/>
      <Parameter Name="MetricName2" Value="3.5"/>
    </Section>

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

"fabricSettings": [
  {
    "name": "MetricBalancingThresholds",
    "parameters": [
      {
          "name": "MetricName1",
          "value": "2"
      },
      {
          "name": "MetricName2",
          "value": "3.5"
      }
    ]
  }
]

Diagram memperlihatkan contoh ambang batas penyeimbangan simpul

Dalam contoh ini, setiap layanan menggunakan satu unit dari beberapa metrik. Dalam contoh di atas, beban maksimum pada sebuah node adalah lima dan minimum adalah dua. Misalkan ambang batas keseimbangan untuk metrik ini adalah tiga. Karena rasio dalam klaster adalah 5/2 = 2,5 dan itu kurang dari ambang batas keseimbangan yang ditentukan dari tiga, klaster seimbang. Tidak ada penyeimbangan yang dipicu ketika Cluster Resource Manager memeriksa.

Dalam contoh di bawah, beban maksimum pada node adalah 10, sedangkan minimum adalah dua, menghasilkan rasio lima. Lima lebih besar dari ambang batas keseimbangan yang ditentukan dari tiga untuk metrik tersebut. Akibatnya, proses penyeimbangan ulang akan dijadwalkan saat timer penyeimbangan diaktifkan lagi. Dalam situasi seperti ini beberapa beban biasanya didistribusikan ke Simpul 3. Karena Service Fabric Cluster Resource Manager tidak menggunakan pendekatan yang serakah, beberapa beban juga dapat didistribusikan ke Node 2.

Diagram memperlihatkan tindakan yang diambil sebagai respons terhadap ambang batas keseimbangan.

Catatan

"Balancing" menangani dua strategi berbeda untuk mengelola beban di klaster Anda. Strategi default yang digunakan Resource Manager Klaster adalah mendistribusikan beban di seluruh node dalam klaster. Strategi lainnya adalah defragmentasi. Defragmentasi dilakukan selama proses penyeimbangan yang sama. Strategi penyeimbangan dan defragmentasi dapat digunakan untuk metrik yang berbeda dalam klaster yang sama. Sebuah layanan dapat memiliki metrik penyeimbangan dan defragmentasi. Untuk metrik defragmentasi, rasio beban dalam kluster memicu penyeimbangan ulang saat berada di bawah ambang batas keseimbangan.

Berada di bawah ambang batas keseimbangan bukanlah tujuan eksplisit. Balancing Thresholds hanyalah sebuah pemicu. Saat penyeimbangan berjalan, Cluster Resource Manager menentukan peningkatan apa yang dapat dilakukan, jika ada. Hanya karena pencarian keseimbangan dimulai bukan berarti ada sesuatu yang bergerak. Kadang-kadang klaster tidak seimbang tetapi terlalu terkendala untuk diperbaiki. Alternatifnya, peningkatan membutuhkan pergerakan yang terlalu mahal).

Ambang batas aktivitas

Kadang-kadang, meskipun node relatif tidak seimbang, jumlah total beban dalam klaster rendah. Kurangnya beban bisa menjadi penurunan sementara, atau karena klaster ini baru dan baru saja di-bootstrap. Dalam kedua kasus tersebut, Anda mungkin tidak ingin menghabiskan waktu untuk menyeimbangkan klaster karena hanya ada sedikit yang bisa diperoleh. Jika cluster mengalami penyeimbangan, Anda akan menghabiskan sumber daya jaringan dan komputasi untuk memindahkan berbagai hal tanpa membuat perbedaan absolut yang besar. Untuk menghindari gerakan yang tidak perlu, ada kontrol lain yang disebut Activity Thresholds. Activity Thresholds memungkinkan Anda menentukan batas bawah absolut untuk aktivitas. Jika tidak ada node yang melebihi ambang ini, penyeimbangan tidak akan terpicu bahkan jika Balancing Threshold terpenuhi.

Misalkan kita mempertahankan Balancing Threshold tiga untuk metrik ini. Misalkan kita juga memiliki Activity Threshold 1536. Dalam kasus pertama, saat klaster tidak seimbang per Balancing Threshold, tidak ada node yang memenuhi Activity Threshold tersebut, jadi tidak ada yang terjadi. Dalam contoh bawah, Simpul 1 melebihi Ambang Aktivitas. Karena Balancing Threshold dan Activity Threshold untuk metrik terlampaui, penyeimbangan dijadwalkan. Sebagai contoh, mari kita lihat diagram berikut:

Diagram memperlihatkan contoh ambang aktivitas simpul.

Sama seperti Balancing Thresholds, Activity Threshold ditentukan per metrik melalui definisi klaster:

ClusterManifest.xml

    <Section Name="MetricActivityThresholds">
      <Parameter Name="Memory" Value="1536"/>
    </Section>

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

"fabricSettings": [
  {
    "name": "MetricActivityThresholds",
    "parameters": [
      {
          "name": "Memory",
          "value": "1536"
      }
    ]
  }
]

Ambang aktivitas dan penyeimbangan sama-sama terikat pada metrik tertentu - penyeimbangan dipicu hanya jika Ambang Penyeimbangan dan Ambang Aktivitas terlampaui untuk metrik yang sama.

Catatan

Jika tidak ditentukan, Balancing Threshold untuk metrik adalah 1, dan Activity Threshold adalah 0. Ini berarti bahwa Cluster Resource Manager akan mencoba untuk menjaga agar metrik tersebut tetap seimbang untuk beban tertentu. Jika Anda menggunakan metrik kustom, disarankan agar Anda secara eksplisit menentukan keseimbangan dan ambang aktivitas Anda sendiri untuk metrik Anda.

Menyeimbangkan layanan bersama-sama

Apakah klaster tidak seimbang atau tidak adalah keputusan di seluruh klaster. Namun, kami memperbaikinya dengan memindahkan replika dan instans layanan individual. Ini masuk akal, kan? Jika memori ditumpuk pada satu node, beberapa replika atau instans dapat berkontribusi padanya. Memperbaiki ketidakseimbangan dapat memerlukan pemindahan replika stateful atau instans stateless yang menggunakan metrik yang tidak seimbang.

Namun terkadang, layanan yang tadinya tidak seimbang itu sendiri dipindahkan (ingat diskusi bobot lokal dan global sebelumnya). Mengapa layanan dipindahkan ketika semua metrik layanan itu seimbang? Mari kita lihat contoh:

  • Katakanlah ada empat layanan, Layanan 1, Layanan 2, Layanan 3, dan Layanan 4.
  • Layanan 1 melaporkan metrik Metrik 1 dan Metrik 2.
  • Layanan 2 melaporkan metrik Metrik 2 dan Metrik 3.
  • Layanan 3 melaporkan metrik Metrik 3 dan Metrik 4.
  • Metrik laporan Layanan 4 99.

Kami tidak benar-benar memiliki empat layanan independen, kami memiliki tiga layanan yang terkait dan satu yang tidak aktif sendiri.

Diagram memperlihatkan cara menyeimbangkan layanan bersama-sama.

Karena rantai ini, ada kemungkinan bahwa ketidakseimbangan dalam metrik 1-4 dapat menyebabkan replika atau instans milik layanan 1-3 berpindah-pindah. Kita juga tahu bahwa ketidakseimbangan metrik 1, 2, atau 3 tidak dapat menyebabkan pergerakan di Layanan 4. Tidak akan ada gunanya karena memindahkan replika atau instans milik Layanan 4 di sekitar dapat sama sekali tidak memengaruhi keseimbangan Metrik 1-3.

Cluster Resource Manager secara otomatis mencari tahu layanan apa yang terkait. Menambahkan, menghapus, atau mengubah metrik untuk layanan dapat memengaruhi hubungan mereka. Misalnya, antara dua eksekusi penyeimbangan Layanan 2 mungkin telah diperbarui untuk menghapus Metrik 2. Ini memutus rantai antara Layanan 1 dan Layanan 2. Sekarang alih-alih dua grup layanan terkait, ada tiga:

Diagram yang menunjukkan bahwa Cluster Resource Manager menentukan layanan apa yang terkait.

Penyeimbangan kluster per jenis node

Seperti yang kami jelaskan di bagian sebelumnya, kontrol utama pemicu penyeimbangan ulang adalah ambang aktivitas, ambang batas keseimbangan , dan timer. Service Fabric Cluster Resource Manager memberikan kontrol yang lebih terperinci atas pemicu penyeimbangan ulang dengan menentukan parameter per jenis node dan memungkinkan pergerakan hanya pada jenis node yang tidak seimbang. Manfaat utama penyeimbangan per jenis node adalah memungkinkan peningkatan performa pada jenis node yang memerlukan aturan penyeimbangan yang lebih ketat, tanpa penurunan performa pada jenis node lainnya. Fitur ini berisi dua bagian utama:

  • Deteksi ketidakseimbangan dilakukan per jenis node. Perhitungan ketidakseimbangan global sebelumnya dihitung untuk setiap jenis node. Jika semua jenis node seimbang, CRM tidak akan memicu fase penyeimbangan. Jika tidak, jika setidaknya satu jenis node tidak seimbang, fase penyeimbangan diperlukan.
  • Penyeimbangan memindahkan replika hanya pada jenis node yang tidak seimbang, jenis node lainnya tidak terpengaruh oleh fase penyeimbangan.

Bagaimana penyeimbangan per jenis node memengaruhi kluster

Selama penyeimbangan kluster per jenis node, Service Fabric Cluster Resource Manager menghitung status ketidakseimbangan untuk setiap jenis node. Jika setidaknya satu jenis node tidak seimbang, fase penyeimbangan akan dipicu. Fase penyeimbangan tidak akan memindahkan replika pada jenis node yang tidak seimbang, saat penyeimbangan sementara dijeda pada jenis node ini (misalnya, interval penyeimbangan minimal belum berlalu sejak fase penyeimbangan sebelumnya). Deteksi status tidak seimbang menggunakan mekanisme umum yang sudah tersedia untuk penyeimbangan kluster klasik, tetapi meningkatkan granularitas dan fleksibilitas konfigurasi. Mekanisme yang digunakan untuk menyeimbangkan per jenis node untuk mendeteksi ketidakseimbangan disediakan dalam daftar di bawah ini:

  • Ambang batas penyeimbangan metrik per jenis node adalah nilai yang memiliki peran serupa sebagai ambang keseimbangan yang ditentukan secara global yang digunakan dalam penyeimbangan klasik. Rasio beban metrik minimum dan maksimum dihitung untuk setiap jenis node. Jika rasio jenis node lebih tinggi dari ambang keseimbangan yang ditentukan dari jenis node, jenis node ditandai sebagai tidak seimbang. Untuk detail selengkapnya mengenai konfigurasi ambang aktivitas metrik per jenis node, silakan periksa bagian ambang keseimbangan per jenis node.
  • Ambang aktivitas metrik per jenis simpul adalah nilai yang memiliki peran serupa dengan ambang aktivitas yang ditentukan secara global yang digunakan dalam penyeimbangan klasik. Beban metrik maksimum dihitung untuk setiap jenis simpul. Jika beban maksimum jenis node lebih tinggi dari ambang aktivitas yang ditentukan untuk jenis node tersebut, jenis node ditandai sebagai tidak seimbang. Untuk detail selengkapnya mengenai konfigurasi ambang aktivitas metrik per jenis node, silakan periksa bagian activity-thresholds-per-node-type.
  • Interval penyeimbangan minimum per jenis node memiliki peran yang mirip dengan interval penyeimbangan minimum yang ditentukan secara global. Untuk setiap jenis node, Cluster Resource Manager mempertahankan tanda waktu penyeimbangan terakhir. Dua fase penyeimbangan berturut-turut tidak dapat dijalankan pada jenis node dalam interval penyeimbangan minimum yang ditentukan. Untuk detail selengkapnya mengenai konfigurasi interval penyeimbangan minimum per jenis node, silakan periksa bagian interval penyeimbangan minimum per jenis node.

Menjelaskan keseimbangan per jenis node

Untuk mengaktifkan penyeimbangan per jenis node, parameter SeparateBalancingStrategyPerNodeType perlu diaktifkan dalam manifes kluster. Selain itu, fitur subklaster juga perlu diaktifkan. Contoh bagian PlacementAndLoadBalancing manifes kluster untuk mengaktifkan fitur:

<Section Name="PlacementAndLoadBalancing">
    <Parameter Name="SeparateBalancingStrategyPerNodeType" Value="true" />
    <Parameter Name="SubclusteringEnabled" Value="true" />
    <Parameter Name="SubclusteringReportingPolicy" Value="1" />
</Section>

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

"fabricSettings": [
  {
    "name": "PlacementAndLoadBalancing",
    "parameters": [
      {
          "name": "SeparateBalancingStrategyPerNodeType",
          "value": "true"
      },
      {
          "name": "SubclusteringEnabled",
          "value": "true"
      },
      {
          "name": "SubclusteringReportingPolicy",
          "value": "1"
      },
    ]
  }
]

Seperti yang kami jelaskan di bagian sebelumnya, ambang dan interval dapat ditentukan per jenis node. Untuk detail selengkapnya tentang memperbarui parameter tertentu, silakan periksa bagian berikut:

Menyeimbangkan ambang batas per jenis node

Ambang batas penyeimbangan metrik dapat ditentukan per jenis node untuk meningkatkan granularitas dari konfigurasi penyeimbangan. Ambang batas penyeimbangan memiliki jenis floating-point, karena mewakili ambang batas untuk rasio nilai beban maksimum dan minimum dalam jenis node tertentu. Ambang penyeimbangan ditentukan di bagian PlacementAndLoadBalancingOverrides untuk setiap jenis node:

<NodeTypes>
    <NodeType Name="NodeType1">
        <PlacementAndLoadBalancingOverrides>
            <MetricBalancingThresholdsPerNodeType>
                <BalancingThreshold Name="Metric1" Value="2.5">
                <BalancingThreshold Name="Metric2" Value="4">
                <BalancingThreshold Name="Metric3" Value="3.25">
            </MetricBalancingThresholdsPerNodeType>
        </PlacementAndLoadBalancingOverrides>
    </NodeType>
</NodeTypes>

Jika ambang batas penyeimbangan untuk metrik tidak ditentukan untuk jenis node, ambang batas mewarisi nilai ambang batas penyeimbangan metrik yang ditentukan secara global di bagian PlacementAndLoadBalancing . Jika tidak, jika menyeimbangkan ambang batas untuk metrik tidak ditentukan baik untuk jenis node maupun secara global di bagian PlacementAndLoadBalancing , ambang batas akan memiliki nilai default satu.

Ambang aktivitas per jenis simpul

Ambang aktivitas metrik dapat ditentukan per jenis node untuk meningkatkan granularitas konfigurasi penyeimbangan. Ambang aktivitas memiliki jenis bilangan bulat, karena mewakili ambang batas untuk nilai beban maksimum dalam jenis simpul tertentu. Ambang aktivitas ditentukan di bagian PlacementAndLoadBalancingOverrides untuk setiap jenis node:

<NodeTypes>
    <NodeType Name="NodeType1">
        <PlacementAndLoadBalancingOverrides>
            <MetricActivityThresholdsPerNodeType>
                <ActivityThreshold Name="Metric1" Value="500">
                <ActivityThreshold Name="Metric2" Value="40">
                <ActivityThreshold Name="Metric3" Value="1000">
            </MetricActivityThresholdsPerNodeType>
        </PlacementAndLoadBalancingOverrides>
    </NodeType>
</NodeTypes>

Jika ambang aktivitas untuk metrik tidak ditentukan untuk jenis node, ambang mewarisi nilai dari ambang aktivitas metrik yang ditentukan secara global di bagian PlacementAndLoadBalancing . Jika tidak, jika ambang aktivitas untuk metrik tidak ditentukan baik untuk jenis node maupun secara global di bagian PlacementAndLoadBalancing , ambang batas akan memiliki nilai default nol.

Interval penyeimbangan minimum per jenis simpul

Interval penyeimbangan minimal dapat ditentukan per jenis node untuk meningkatkan granularitas konfigurasi penyeimbangan. Interval penyeimbangan minimal memiliki jenis bilangan bulat, karena mewakili jumlah waktu minimum yang harus dilewati sebelum dua putaran penyeimbangan berturut-turut pada jenis node yang sama. Interval penyeimbangan minimum ditentukan di bagian PlacementAndLoadBalancingOverrides untuk setiap jenis node:

<NodeTypes>
    <NodeType Name="NodeType1">
        <PlacementAndLoadBalancingOverrides>
            <MinLoadBalancingIntervalPerNodeType>100</MinLoadBalancingIntervalPerNodeType>
        </PlacementAndLoadBalancingOverrides>
    </NodeType>
</NodeTypes>

Jika interval penyeimbangan minimal tidak ditentukan untuk jenis node, interval mewarisi nilai dari interval penyeimbangan minimum yang ditentukan secara global di bagian PlacementAndLoadBalancing . Jika tidak, jika interval minimal tidak ditentukan baik untuk jenis node maupun secara global di bagian PlacementAndLoadBalancing , interval minimal akan memiliki nilai default nol yang menunjukkan bahwa jeda antara putaran penyeimbangan berturut-turut tidak diperlukan.

Contoh

Contoh 1

Mari kita pertimbangkan kasus di mana kluster berisi dua jenis node, jenis node A dan jenis node B. Semua layanan melaporkan metrik yang sama dan dibagi antara jenis node ini, sehingga statistik beban berbeda untuk mereka. Dalam contoh, node jenis A memiliki beban maksimum 300 dan minimal 100, dan jenis node B memiliki beban maksimum 700 dan beban minimum 500:

Diagram memperlihatkan contoh ambang batas penyeimbangan jenis node dengan dua jenis node.

Pelanggan mendeteksi bahwa beban kerja dari dua jenis node memiliki kebutuhan penyeimbangan yang berbeda dan memutuskan untuk mengatur penyeimbangan dan ambang aktivitas yang berbeda per jenis node. Ambang keseimbangan jenis node A adalah 2,5, dan ambang aktivitas adalah 50. Untuk jenis node B, ambang keseimbangan set pelanggan ke 1,2, dan ambang aktivitas menjadi 400.

Selama deteksi ketidakseimbangan untuk kluster dalam contoh ini, kedua jenis node melanggar ambang aktivitas. Beban maksimum jenis node A dari 300 lebih tinggi dari ambang aktivitas yang ditentukan sebesar 50. Beban maksimum node jenis B700 lebih tinggi dari ambang aktivitas yang ditentukan sebesar 400. Jenis node A melanggar kriteria ambang batas keseimbangan, karena rasio beban maksimum dan minimum saat ini adalah 3, dan ambang keseimbangan adalah 2,5. Sebaliknya, jenis node B tidak melanggar kriteria ambang keseimbangan, karena rasio beban maksimum dan minimum saat ini untuk jenis node ini adalah 1,2, tetapi ambang keseimbangan adalah 1,4. Penyeimbangan hanya diperlukan untuk replika di node jenis A, dan satu-satunya set replika yang akan memenuhi syarat untuk gerakan selama fase penyeimbangan adalah replika yang ditempatkan di jenis node A.

Contoh 2

Mari kita pertimbangkan kasus di mana kluster berisi tiga jenis node, jenis node A, B dan C. Semua layanan melaporkan metrik yang sama dan dibagi antara jenis node ini, sehingga statistik beban berbeda untuk mereka. Dalam contoh, jenis node A memiliki beban maksimum 600 dan minimal 100, jenis node B memiliki beban maksimum 900 dan beban minimum 100, dan node tipe C memiliki beban maksimum 600 dan beban minimum 300:

Diagram memperlihatkan contoh ambang batas penyeimbangan jenis node dengan tiga jenis node.

Pelanggan mendeteksi bahwa beban kerja jenis node ini memiliki kebutuhan penyeimbangan yang berbeda dan memutuskan untuk mengatur ambang batas keseimbangan dan aktivitas yang berbeda per jenis node. Ambang keseimbangan jenis node A adalah 5, dan ambang aktivitas adalah 700. Untuk jenis node B, ambang keseimbangan set pelanggan ke 10, dan ambang aktivitas menjadi 200. Untuk node jenis C, ambang keseimbangan set pelanggan ke 2, dan ambang aktivitas menjadi 300.

Beban maksimum node jenis A dari 600 lebih rendah dari ambang aktivitas yang ditentukan sebesar 700, sehingga jenis node A tidak akan seimbang. Beban maksimum jenis node B900 lebih tinggi dari ambang aktivitas yang ditentukan sebesar 200. Jenis node B melanggar kriteria ambang aktivitas. Beban maksimum node jenis C600 lebih tinggi dari ambang aktivitas yang ditentukan sebesar 300. Node jenis C melanggar kriteria ambang aktivitas. Jenis node B tidak melanggar kriteria ambang batas penyeimbangan, karena rasio saat ini dari beban maksimum dan minimum untuk jenis node ini adalah 9, tetapi ambang keseimbangan adalah 10. Node tipe C melanggar kriteria balancing threshold, karena rasio saat ini dari beban maksimum dan minimum adalah 2, dan balancing threshold adalah 2. Penyeimbangan hanya diperlukan untuk replika di node jenis C, dan satu-satunya set replika yang akan memenuhi syarat untuk gerakan selama fase penyeimbangan adalah replika yang ditempatkan di node jenis C.

Langkah berikutnya

  • Metrik adalah cara Service Fabric Cluster Resource Manager mengelola konsumsi dan kapasitas pada klaster. Untuk mempelajari selengkapnya tentang metrik dan cara mengonfigurasinya, lihat artikel metrik
  • Movement Cost adalah salah satu cara memberi sinyal kepada Cluster Resource Manager bahwa layanan tertentu lebih mahal untuk dipindahkan daripada layanan lain. Untuk informasi selengkapnya tentang biaya pergerakan, lihat artikel biaya pergerakan
  • Cluster Resource Manager memiliki beberapa pembatasan yang dapat Anda konfigurasi untuk memperlambat churn di klaster. Biasanya tidak diperlukan, tetapi jika Anda membutuhkannya, Anda dapat mempelajarinya artikel pembatasan lanjutan
  • Resource Manager Kluster dapat mengenali dan menangani subklaster. Subklaster dapat muncul saat Anda menggunakan batasan penempatan dan penyeimbangan. Untuk mempelajari bagaimana subklaster dapat memengaruhi keseimbangan dan bagaimana Anda dapat menanganinya, lihat artikel subklaster