Bagikan melalui


Afinitas kluster

Kluster failover dapat menampung banyak peran yang dapat berpindah di antara simpul dan berjalan. Ada kalanya peran tertentu (yaitu, komputer virtual, grup sumber daya, dan sebagainya) tidak boleh berjalan pada simpul yang sama. Ini bisa karena konsumsi sumber daya, penggunaan memori, dan sebagainya. Misalnya, ada dua komputer virtual yang intensif memori dan CPU dan jika kedua komputer virtual berjalan pada node yang sama, satu atau kedua komputer virtual dapat memiliki masalah dampak performa. Artikel ini akan menjelaskan tingkat antiaffinitas kluster dan bagaimana Anda dapat menggunakannya.

Apa itu Afinitas dan AntiAffinity?

Afinitas adalah aturan yang akan Anda siapkan yang membangun hubungan antara dua peran atau lebih (yaitu, komputer virtual, grup sumber daya, dan sebagainya) untuk menyatukannya. AntiAffinity sama tetapi digunakan untuk mencoba menjaga peran yang ditentukan terpisah satu sama lain. Kluster Failover menggunakan AntiAffinity untuk perannya. Lebih khusus lagi, parameter AntiAffinityClassNames yang ditentukan pada peran sehingga tidak berjalan pada node yang sama.

AntiAffinityClassnames

Saat melihat properti grup, parameter AntiAffinityClassNames kosong sebagai default. Dalam contoh di bawah ini, Group1 dan Group2 harus dipisahkan agar tidak berjalan pada node yang sama. Untuk melihat properti, perintah dan hasil PowerShell adalah:

Get-ClusterGroup Group1 | fl AntiAffinityClassNames
    AntiAffinityClassNames : {}

Get-ClusterGroup Group2 | fl AntiAffinityClassNames
    AntiAffinityClassNames : {}

Karena AntiAffinityClassNames tidak didefinisikan sebagai default, peran ini dapat berjalan bersama atau terpisah. Tujuannya adalah untuk memisahkan mereka. Nilai untuk AntiAffinityClassNames bisa menjadi apa pun yang Anda inginkan, nilainya hanya harus sama. Katakanlah Group1 dan Group2 adalah pengendali domain yang berjalan di komputer virtual dan mereka akan paling baik dilayani berjalan pada simpul yang berbeda. Karena ini adalah pengendali domain, saya akan menggunakan DC untuk nama kelas. Untuk mengatur nilai, perintah dan hasil PowerShell adalah:

$AntiAffinity = New-Object System.Collections.Specialized.StringCollection
$AntiAffinity.Add("DC")
(Get-ClusterGroup -Name "Group1").AntiAffinityClassNames = $AntiAffinity
(Get-ClusterGroup -Name "Group2").AntiAffinityClassNames = $AntiAffinity

$AntiAffinity = New-Object System.Collections.Specialized.StringCollection
$AntiAffinity.Add("DC")
(Get-ClusterGroup -Name "Group1").AntiAffinityClassNames = $AntiAffinity
(Get-ClusterGroup -Name "Group2").AntiAffinityClassNames = $AntiAffinity

Get-ClusterGroup "Group1" | fl AntiAffinityClassNames
    AntiAffinityClassNames : {DC}

Get-ClusterGroup "Group2" | fl AntiAffinityClassNames
    AntiAffinityClassNames : {DC}

Sekarang setelah diatur, pengklusteran failover akan mencoba memisahkannya.

Parameter AntiAffinityClassName adalah blok "lunak". Artinya, itu akan mencoba untuk memisahkan mereka, tetapi jika tidak bisa, itu masih akan memungkinkan mereka untuk berjalan pada node yang sama. Misalnya, grup berjalan pada kluster failover dua node. Jika satu node perlu turun untuk pemeliharaan, itu berarti kedua grup akan aktif dan berjalan pada node yang sama. Dalam hal ini, akan baik-baik saja untuk memiliki ini. Ini mungkin bukan yang paling ideal, tetapi kedua komputer virtual masih akan berjalan dalam rentang performa yang dapat diterima.

Saya perlu lebih banyak

Seperti disebutkan, AntiAffinityClassNames adalah blok lunak. Tetapi bagaimana jika blok keras diperlukan? Komputer virtual tidak dapat dijalankan pada simpul yang sama; jika tidak, dampak performa akan terjadi dan menyebabkan beberapa layanan mungkin turun.

Untuk kasus tersebut, ada properti kluster lain dari ClusterEnforcedAntiAffinity. Tingkat antiaffinitas ini akan mencegah semua biaya dari nilai AntiAffinityClassNames yang sama agar tidak berjalan pada node yang sama.

Untuk melihat properti dan nilai, perintah PowerShell (dan hasil) adalah:

Get-Cluster | fl ClusterEnforcedAntiAffinity
    ClusterEnforcedAntiAffinity : 0

Nilai "0" berarti dinonaktifkan dan tidak diberlakukan. Nilai "1" memungkinkannya dan merupakan blok keras. Untuk mengaktifkan blok keras ini, perintah (dan hasil) adalah:

(Get-Cluster).ClusterEnforcedAntiAffinity = 1
    ClusterEnforcedAntiAffinity : 1

Ketika kedua hal ini ditetapkan, grup akan dicegah untuk online bersama-sama. Jika mereka berada pada node yang sama, ini adalah apa yang akan Anda lihat di Manajer Kluster Failover.

Afinitas Kluster

Dalam daftar PowerShell grup, Anda akan melihat ini:

Get-ClusterGroup

Name       State
----       -----
Group1     Offline(Anti-Affinity Conflict)
Group2     Online

Komentar Tambahan

  • Pastikan Anda menggunakan pengaturan AntiAffinity yang tepat tergantung pada kebutuhan.

  • Perlu diingat bahwa dalam skenario dua node dan ClusterEnforcedAntiAffinity, jika satu node tidak berfungsi, kedua grup tidak akan berjalan.

  • Penggunaan Pemilik Pilihan pada grup dapat dikombinasikan dengan AntiAffinity dalam kluster simpul tiga atau lebih.

  • Pengaturan AntiAffinityClassNames dan ClusterEnforcedAntiAffinity hanya akan berlangsung setelah daur ulang sumber daya. Artinya, Anda dapat mengaturnya, tetapi jika kedua grup online pada node yang sama ketika diatur, keduanya akan terus online.