Bagikan melalui


Cara menghapus jenis node Service Fabric

Artikel ini menjelaskan cara menskalakan klaster Azure Service Fabric dengan menghapus jenis node yang ada dari klaster. 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. Set skala komputer virtual adalah sumber daya komputasi Azure yang Anda gunakan untuk menyebarkan dan mengelola koleksi komputer virtual sebagai satu set. Setiap jenis node yang ditentukan dalam klaster Azure diatur sebagai set skala terpisah. Setiap jenis simpul kemudian dapat dikelola secara terpisah. Setelah membuat kluster Service Fabric, Anda dapat menskalakan kluster secara horizontal dengan menghapus jenis simpul (set skala komputer virtual) dan semua simpulnya. Anda dapat menskalakan kluster kapan saja, bahkan ketika beban kerja berjalan pada kluster. Saat kluster diskalakan, aplikasi Anda juga secara otomatis menskalakan.

Peringatan

Menggunakan pendekatan ini untuk menghapus jenis node dari klaster produksi tidak disarankan untuk sering digunakan. Ini adalah perintah berbahaya karena menghapus skala komputer virtual mengatur sumber daya di belakang jenis simpul.

Karakteristik durabilitas

Keselamatan diprioritaskan daripada kecepatan saat menggunakan Remove-AzServiceFabricNodeType. Jenis node harus tingkat durabilitas Silver atau Gold, karena:

  • Bronze tidak memberi Anda jaminan tentang menyimpan informasi status.
  • Durabilitas Silver dan Gold menjebak setiap perubahan pada set skala.
  • Gold juga memberi Anda kontrol atas pembaruan Azure di bawah kumpulan skala.

Service Fabric "mengatur" perubahan dan pembaruan yang mendasarinya sehingga data tidak hilang. Namun, ketika Anda menghapus jenis node dengan durabilitas Bronze, Anda mungkin kehilangan informasi status. Jika Anda menghapus jenis node utama dan aplikasi Anda stateless, Bronze dapat diterima. Saat Anda menjalankan beban kerja yang stateful dalam produksi, konfigurasi minimumnya adalah Silver. Demikian pula, untuk skenario produksi jenis node utama harus selalu Silver atau Gold.

Selengkapnya tentang durabilitas Bronze

Saat menghapus jenis node yaitu Bronze, semua node dalam tipe node seketika tidak berfungsi. Service Fabric tidak menjebak pembaruan set skala node Bronze, sehingga semua VM tidak berfungsi. Jika Anda memiliki sesuatu yang stateful pada node tersebut, data hilang. Sekarang, bahkan jika Anda stateless, semua node di Service Fabric berpartisipasi dalam ring, sehingga seluruh lingkungan mungkin hilang, yang mungkin menyebabkan klaster itu sendiri tidak stabil.

Menghapus jenis node

  1. Jaga prasyarat ini sebelum Anda memulai proses.

    • Klaster ini sehat.
    • Masih akan ada kapasitas yang memadai setelah jenis node dihapus, misalnya, jumlah simpul untuk menempatkan jumlah replika yang diperlukan.
  2. Pindahkan semua layanan yang memiliki batasan penempatan untuk menggunakan jenis node dari jenis node.

    • Ubah Manifes Aplikasi / Layanan agar tidak lagi mereferensikan jenis node.
    • Terapkan perubahan.

    Kemudian validasi bahwa:

    • Semua layanan yang diubah di atas tidak lagi berjalan pada Node milik jenis node.
    • Semua layanan sehat.
  3. Hapus tanda jenis node sebagai non-primer (Lewati untuk jenis node non-primer)

    • Temukan templat Azure Resource Manager yang digunakan untuk penerapan.
    • Temukan bagian yang terkait dengan jenis node di bagian Service Fabric.
    • Ubah isPrimary menjadi false. ** Jangan hapus bagian yang terkait dengan jenis node dalam tugas ini.
    • Terapkan templat Azure Resource Manager yang diubah. ** Tergantung pada konfigurasi klaster, langkah ini mungkin memerlukan waktu beberapa saat.

    Kemudian validasi bahwa:

    • Service Fabric Section di Portal menunjukkan klaster siap.
    • Klaster ini sehat.
    • Tidak ada satupun node milik jenis node yang ditandai sebagai Node Seed.
  4. Nonaktifkan setiap node dalam jenis node.

    Sambungkan ke klaster menggunakan PowerShell, lalu jalankan langkah berikut.

    $nodeType = "" # specify the name of node type
    $nodes = Get-ServiceFabricNode
    
    foreach($node in $nodes)
    {
      if ($node.NodeType -eq $nodeType)
      {
        $node.NodeName
    
        Disable-ServiceFabricNode -Intent RemoveNode -NodeName $node.NodeName -Force
      }
    }
    
    • Untuk durabilitas perunggu, tunggu semua node mencapai status dinonaktifkan
    • Untuk durabilitas perak dan emas, beberapa simpul masuk ke dinonaktifkan dan sisanya akan dalam keadaan menonaktifkan. Periksa tab detail node dalam status nonaktif, jika semuanya terjebak pada memastikan kuorum untuk partisi layanan infrastruktur, maka aman untuk melanjutkan.
  5. Hentikan data untuk jenis node.

    Sambungkan ke klaster menggunakan PowerShell, lalu jalankan langkah berikut.

    foreach($node in $nodes)
    {
      if ($node.NodeType -eq $nodeType)
      {
        $node.NodeName
    
        Start-ServiceFabricNodeTransition -Stop -OperationId (New-Guid) -NodeInstanceId $node.NodeInstanceId -NodeName $node.NodeName -StopDurationInSeconds 10000
      }
    }
    

    Tunggu sampai semua node untuk jenis node ditandai Tidak Berfungsi.

  6. Batalkan alokasi node di Set Skala Komputer Virtual asli

    Masuk ke langganan Azure tempat set skala diterapkan dan hapus Set Skala Komputer Virtual.

    $scaleSetName="myscaleset"
    $scaleSetResourceType="Microsoft.Compute/virtualMachineScaleSets"
    
    Remove-AzResource -ResourceName $scaleSetName -ResourceType $scaleSetResourceType -ResourceGroupName $resourceGroupName -Force
    
  7. Hapus data untuk jenis node.

    Sambungkan ke klaster menggunakan PowerShell, lalu jalankan langkah berikut.

    foreach($node in $nodes)
    {
      if ($node.NodeType -eq $nodeType)
      {
        $node.NodeName
    
        Remove-ServiceFabricNodeState -NodeName $node.NodeName -Force
      }
    }
    

    Tunggu sampai semua node dihapus dari klaster. Node tidak boleh ditampilkan di SFX.

  8. Hapus jenis node dari bagian Service Fabric.

    • Temukan templat Azure Resource Manager yang digunakan untuk penerapan.
    • Temukan bagian yang terkait dengan jenis node di bagian Service Fabric.
    • Hapus bagian yang sesuai dengan jenis node.
    • Hanya untuk Perunggu dan klaster durabilitas yang lebih tinggi, perbarui sumber daya klaster dalam templat dan konfigurasikan kebijakan kesehatan untuk mengabaikan kesehatan aplikasi fabric:/System dengan menambahkan applicationDeltaHealthPolicies di bawah sumber daya klaster properties seperti yang diberikan di bawah ini. Kebijakan di bawah ini harus mengabaikan kesalahan yang ada tetapi tidak mengizinkan kesalahan kesehatan baru.
    "upgradeDescription":  
    { 
     "forceRestart": false, 
     "upgradeReplicaSetCheckTimeout": "10675199.02:48:05.4775807", 
     "healthCheckWaitDuration": "00:05:00", 
     "healthCheckStableDuration": "00:05:00", 
     "healthCheckRetryTimeout": "00:45:00", 
     "upgradeTimeout": "12:00:00", 
     "upgradeDomainTimeout": "02:00:00", 
     "healthPolicy": { 
       "maxPercentUnhealthyNodes": 100, 
       "maxPercentUnhealthyApplications": 100 
     }, 
     "deltaHealthPolicy":  
     { 
       "maxPercentDeltaUnhealthyNodes": 0, 
       "maxPercentUpgradeDomainDeltaUnhealthyNodes": 0, 
       "maxPercentDeltaUnhealthyApplications": 0, 
       "applicationDeltaHealthPolicies":  
       { 
           "fabric:/System":  
           { 
               "defaultServiceTypeDeltaHealthPolicy":  
               { 
                       "maxPercentDeltaUnhealthyServices": 0 
               } 
           } 
       } 
     } 
    },
    
    • Terapkan templat Azure Resource Manager yang diubah. ** Langkah ini membutuhkan waktu cukup lama, biasanya hingga dua jam. Peningkatan ini mengubah pengaturan ke InfrastructureService, oleh karena itu diperlukan hidupkan ulang simpul. Dalam hal forceRestart ini diabaikan. Parameter upgradeReplicaSetCheckTimeout menentukan waktu maksimum Service Fabric menunggu partisi berada dalam status aman, jika belum dalam status aman. Setelah pemeriksaan keamanan lulus untuk semua partisi pada node, Service Fabric melanjutkan dengan peningkatan pada node tersebut. Nilai untuk parameter upgradeTimeout dapat dikurangi menjadi 6 jam, tetapi untuk keamanan maksimal 12 jam harus digunakan.

    Kemudian validasi bahwa:

    • Service Fabric Resource di portal menunjukkan siap.
  9. Hapus semua referensi ke sumber daya yang berkaitan dengan jenis node dari templat ARM.

    • Temukan templat Azure Resource Manager yang digunakan untuk penerapan.
    • Hapus set skala komputer virtual dan sumber daya lainnya yang terkait dengan jenis node dari templat.
    • Terapkan perubahan.

    lalu:

    • Tunggu hingga penerapan selesai.
  10. Hapus sumber daya yang berkaitan dengan jenis node yang tidak lagi digunakan. Contoh Load Balancer, dan IP Publik.

    • Untuk menghapus sumber daya ini, Anda dapat menggunakan perintah PowerShell yang sama seperti yang digunakan pada langkah 6 yang menentukan jenis sumber daya dan versi API tertentu.
    • Untuk durabilitas perak dan emas, tugas perbaikan apa pun yang tersisa dalam kluster, yang menargetkan salah satu simpul yang ada dalam nodetype yang dihapus, harus diselesaikan dengan perintah:
       Complete-ServiceFabricRepairTask -TaskId <repair task name>
    

Catatan

Langkah ini opsional jika Load Balancer yang sama, dan IP digunakan kembali di antara jenis node.

Langkah berikutnya