Menerapkan kluster Azure Service Fabric di seluruh Zona Ketersediaan

Zona Ketersediaan di Azure adalah penawaran ketersediaan tinggi yang melindungi aplikasi dan data Anda dari kegagalan pusat data. Zona Ketersediaan adalah lokasi fisik unik yang dilengkapi dengan daya, pendinginan, dan jaringan independen dalam wilayah Azure.

Untuk mendukung kluster yang mencakup seluruh Zona Ketersediaan, Azure Service Fabric menyediakan dua metode konfigurasi seperti yang dijelaskan dalam artikel di bawah ini. Zona Ketersediaan hanya tersedia di wilayah tertentu. Untuk informasi selengkapnya, lihat Ringkasan Zona Ketersediaan.

Contoh templat tersedia di Templat Zona Lintas Ketersediaan Service Fabric.

Topologi untuk merentangkan jenis node primer di seluruh Zona Ketersediaan

Catatan

Manfaat merentangkan jenis node utama di seluruh zona ketersediaan benar-benar hanya terlihat untuk tiga zona dan bukan hanya dua.

  • Tingkat keandalan kluster diatur ke Platinum
  • Sumber daya IP Publik tunggal yang menggunakan SKU Standar
  • Sumber daya load balancer tunggal yang menggunakan SKU Standar
  • Kelompok keamanan jaringan (NSG) dirujuk oleh subnet tempat Anda menerapkan set skala komputer virtual Anda

Catatan

Skala komputer virtual yang mengatur properti grup penempatan tunggal harus diatur ke true.

Contoh daftar node berikut menggambarkan format FD/UD dalam zona rentang set skala komputer virtual:

Screenshot that shows a sample node list of FD/UD formats in a virtual machine scale set spanning zones.

Distribusi replika layanan di seluruh zona

Ketika layanan diterapkan pada jenis node yang mencakup Zona Ketersediaan, replika ditempatkan untuk memastikan bahwa mereka berada di zona terpisah. Domain kesalahan pada node di masing-masing jenis node ini dikonfigurasi dengan informasi zona (yaitu, FD = fd:/zone1/1, dll.). Misalnya, untuk lima replika atau instans layanan, distribusinya adalah 2-2-1, dan runtime akan mencoba memastikan distribusi yang sama di seluruh zona.

Konfigurasi replika layanan pengguna

Layanan pengguna stateful yang diterapkan pada jenis node di seluruh Zona Ketersediaan harus dikonfigurasi seperti ini: jumlah replika dengan target = 9, min = 5. Konfigurasi ini membantu layanan bekerja bahkan ketika satu zona tidak berfungsi karena enam replika akan berfungsi di dua zona lainnya. Pemutakhiran aplikasi dalam skenario ini juga akan berhasil.

Level Keandalan Kluster

Nilai ini mendefinisikan jumlah node benih dalam kluster dan ukuran replika layanan sistem. Pengaturan Zona lintas Ketersediaan memiliki jumlah node yang lebih tinggi, yang tersebar di seluruh zona untuk memungkinkan ketahanan zona.

Nilai ReliabilityLevel yang lebih tinggi memastikan bahwa lebih banyak node benih dan replika layanan sistem hadir dan didistribusikan secara merata di seluruh zona, sehingga jika zona gagal, kluster dan layanan sistem tidak terpengaruh. ReliabilityLevel = Platinum (disarankan) memastikan bahwa ada sembilan node benih yang tersebar di seluruh zona dalam kluster, dengan tiga biji di setiap zona.

Skenario zona tidak berfungsi

Ketika zona tidak berfungsi, semua node dan replika layanan untuk zona itu ditampilkan tidak berfungsi. Karena ada replika di zona lain, layanan terus merespons. Replika utama gagal ke zona yang berfungsi. Layanan tampaknya berada di status peringatan karena jumlah replika target belum tercapai dan jumlah komputer virtual (VM) masih lebih tinggi dari ukuran replika target minimum.

Load balancer Service Fabric memunculkan replika di zona kerja agar sesuai dengan jumlah replika target. Pada titik ini layanan akan tampak sehat. Ketika zona yang tadinya tidak berfungsi kembali aktif, load balancer akan menyebarkan semua replika layanan secara merata di seluruh zona.

Pengoptimalan Yang Akan Datang

  • Untuk memberikan pembaruan infrastruktur yang andal, Service Fabric membutuhkan durabilitas set skala komputer virtual untuk diatur setidaknya ke Silver. Pengaturan ini memungkinkan set skala komputer virtual yang mendasari dan runtime Service Fabric untuk memberikan pembaruan yang andal. Pembaruan juga mengharuskan setiap zona memiliki minimal 5 VM. Kami berupaya menurunkan persyaratan ini ke 3 dan 2 VM per zona untuk masing-masing jenis node primer dan non-primer.
  • Semua konfigurasi yang disebutkan di bawah ini dan pekerjaan yang akan datang, memberikan migrasi lokal kepada pelanggan saat kluster yang sama dapat ditingkatkan untuk menggunakan konfigurasi baru dengan menambahkan jenis node baru dan menonaktifkan yang lama.

Persyaratan jaringan

IP Publik dan sumber daya load balancer

Untuk mengaktifkan properti zones pada sumber daya set skala komputer virtual, load balancer dan sumber daya IP yang direferensikan oleh set skala komputer virtual keduanya harus menggunakan SKU Standar. Membuat load balancer atau sumber daya IP tanpa properti SKU akan membuat SKU dasar yang tidak mendukung Zona Ketersediaan. Load balancer SKU Standar memblokir semua lalu lintas dari luar secara default. Untuk mengizinkan lalu lintas luar, terapkan NSG ke subnet.

{
  "apiVersion": "2018-11-01",
  "type": "Microsoft.Network/publicIPAddresses",
  "name": "[concat('LB','-', parameters('clusterName')]",
  "location": "[parameters('computeLocation')]",
  "sku": {
    "name": "Standard"
  }
}
{
  "apiVersion": "2018-11-01",
  "type": "Microsoft.Network/loadBalancers",
  "name": "[concat('LB','-', parameters('clusterName')]",
  "location": "[parameters('computeLocation')]",
  "dependsOn": [
    "[concat('Microsoft.Network/networkSecurityGroups/', concat('nsg', parameters('subnet0Name')))]"
  ],
  "properties": {
    "addressSpace": {
      "addressPrefixes": [
        "[parameters('addressPrefix')]"
      ]
    },
    "subnets": [
      {
        "name": "[parameters('subnet0Name')]",
        "properties": {
          "addressPrefix": "[parameters('subnet0Prefix')]",
          "networkSecurityGroup": {
            "id": "[resourceId('Microsoft.Network/networkSecurityGroups', concat('nsg', parameters('subnet0Name')))]"
          }
        }
      }
    ]
  },
  "sku": {
    "name": "Standard"
  }
}

Catatan

Perubahan SKU lokal tidak dapat dilakukan di IP Publik dan sumber daya load balancer. Jika Anda melakukan migrasi dari sumber daya yang sudah ada yang memiliki SKU Dasar, lihat bagian migrasi dari artikel ini.

Aturan NAT untuk set skala komputer virtual

Aturan terjemahan alamat jaringan inbound (NAT) untuk load balancer harus cocok dengan kumpulan NAT dari set skala komputer virtual. Setiap set skala komputer virtual harus memiliki setidaknya satu kumpulan NAT masuk yang unik.

{
  "inboundNatPools": [
    {
      "name": "LoadBalancerBEAddressNatPool0",
      "properties": {
        "backendPort": "3389",
        "frontendIPConfiguration": {
          "id": "[variables('lbIPConfig0')]"
        },
        "frontendPortRangeEnd": "50999",
        "frontendPortRangeStart": "50000",
        "protocol": "tcp"
      }
    },
    {
      "name": "LoadBalancerBEAddressNatPool1",
      "properties": {
        "backendPort": "3389",
        "frontendIPConfiguration": {
          "id": "[variables('lbIPConfig0')]"
        },
        "frontendPortRangeEnd": "51999",
        "frontendPortRangeStart": "51000",
        "protocol": "tcp"
      }
    },
    {
      "name": "LoadBalancerBEAddressNatPool2",
      "properties": {
        "backendPort": "3389",
        "frontendIPConfiguration": {
          "id": "[variables('lbIPConfig0')]"
        },
        "frontendPortRangeEnd": "52999",
        "frontendPortRangeStart": "52000",
        "protocol": "tcp"
      }
    }
  ]
}

Aturan outbound untuk load balancer SKU Standar

Load balancer SKU dan IP publik Standar memperkenalkan kemampuan baru dan perilaku yang berbeda untuk konektivitas outbound jika dibandingkan dengan penggunaan SKU Dasar. Jika Anda menginginkan konektivitas outbound saat bekerja dengan SKU Standar, Anda harus menentukannya secara eksplisit dengan alamat IP Publik SKU Standar atau load balancer publik SKU Standar. Untuk informasi selengkapnya, lihat Koneksi outbound dan Apa Itu Azure Load Balancer?.

Catatan

Templat standar merujuk NSG yang mengizinkan semua lalu lintas outbound secara default. Lalu lintas masuk terbatas pada port yang diperlukan untuk operasi pengelolaan Service Fabric. Aturan NSG dapat diubah agar sesuai dengan kebutuhan Anda.

Penting

Setiap jenis node dalam kluster Service Fabric yang menggunakan load balancer SKU Standar memerlukan aturan yang memungkinkan lalu lintas outbound pada port 443. Aturan ini diperlukan untuk menyelesaikan penyiapan kluster. Penerapan apa pun tanpa aturan ini akan gagal.

1. Mengaktifkan beberapa Zona Ketersediaan dalam set skala mesin virtual tunggal

Solusi ini memungkinkan pengguna untuk menjangkau tiga Zona Ketersediaan dalam jenis node yang sama. Solusi ini adalah topologi penerapan yang direkomendasikan karena memungkinkan Anda untuk menerapkan di seluruh zona ketersediaan sambil mempertahankan satu set skala komputer virtual.

Templat sampel lengkap tersedia di GitHub.

Diagram of the Azure Service Fabric Availability Zone architecture.

Mengonfigurasi zona pada set skala komputer virtual

Untuk mengaktifkan zona pada set skala komputer virtual, sertakan tiga nilai berikut dalam sumber daya set skala komputer virtual:

  • Nilai pertama adalah properti zones, yang menentukan Zona Ketersediaan yang ada di set skala komputer virtual.

  • Nilai kedua adalah properti singlePlacementGroup, yang harus diatur ke true. Set skala yang membentang di tiga Zona Ketersediaan dapat menskalakan hingga 300 VM bahkan dengan singlePlacementGroup = true.

  • Nilai ketiga adalah zoneBalance, yang memastikan keseimbangan zona yang ketat. Nilai ini harus true. Nilai ini memastikan bahwa distribusi VM di seluruh zona seimbang, artinya ketika satu zona turun, dua zona lainnya memiliki cukup VM untuk menjaga kluster tetap berjalan.

    Kluster dengan distribusi VM yang tidak seimbang mungkin tidak dapat bertahan pada skenario zona tidak berfungsi karena zona tersebut mungkin memiliki mayoritas VM. Distribusi VM yang tidak seimbang di seluruh zona juga akan menyebabkan masalah penempatan layanan dan pembaruan infrastruktur yang macet. Baca selengkapnya tentang zoneBalancing.

Anda tidak perlu mengonfigurasi penggantian FaultDomain dan UpgradeDomain.

{
  "apiVersion": "2018-10-01",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "[parameters('vmNodeType1Name')]",
  "location": "[parameters('computeLocation')]",
  "zones": [ "1", "2", "3" ],
  "properties": {
    "singlePlacementGroup": true,
    "zoneBalance": true
  }
}

Catatan

  • Kluster Service Fabric harus memiliki setidaknya satu jenis node primer. Tingkat durabilitas jenis node primer harus Silver atau lebih tinggi.
  • Zona Ketersediaan yang mencakup set skala komputer virtual harus dikonfigurasi dengan setidaknya tiga Zona Ketersediaan, terlepas dari tingkat durabilitas.
  • Zona Ketersediaan yang mencakup set skala komputer virtual dengan ketahanan Silver atau lebih tinggi harus memiliki setidaknya 15 VM (5 per wilayah).
  • Zona Ketersediaan yang mencakup set skala komputer virtual yang diatur dengan durabilitas Perunggu, harus memiliki setidaknya 6 VM.

Mengaktifkan dukungan untuk beberapa zona di jenis node Service Fabric

Jenis node Service Fabric harus diaktifkan untuk mendukung beberapa Zona Ketersediaan.

  • Nilai pertama adalah multipleAvailabilityZones, yang harus diatur ke true untuk jenis node tersebut.

  • Nilai kedua adalah sfZonalUpgradeMode dan bersifat opsional. Properti ini tidak dapat dimodifikasi jika jenis node dengan beberapa Zona Ketersediaan sudah ada di kluster. Properti ini mengontrol pengelompokan VM logis dalam domain peningkatan (UD).

    • Jika nilai ini diatur ke Parallel: VM di bawah jenis node tersebut dikelompokkan ke dalam UD dan mengabaikan info zona dalam lima UD. Pengaturan ini menyebabkan UD di semua zona ditingkatkan pada saat yang sama. Mode penerapan ini lebih cepat untuk peningkatan, kami tidak merekomendasikannya karena melanggar pedoman SDP, yang menyatakan bahwa pembaruan harus diterapkan ke satu zona pada satu waktu.
    • Jika nilai dihilangkan atau diatur ke Hierarchical: VM akan dikelompokkan untuk mencerminkan distribusi zona dalam 15 UD. Masing-masing dari tiga zona memiliki lima UD. Nilai ini memastikan zona diperbarui satu per satu, pindah ke zona berikutnya hanya setelah menyelesaikan lima UD dalam zona pertama. Proses pembaruan ini lebih aman untuk kluster dan aplikasi pengguna.

    Properti ini hanya menentukan perilaku peningkatan untuk aplikasi Service Fabric dan peningkatan kode. Peningkatan set skala komputer virtual yang mendasarinya masih paralel di semua Zona Ketersediaan. Properti ini tidak mempengaruhi distribusi UD untuk jenis node yang tidak memiliki beberapa zona yang diaktifkan.

  • Nilai ketiga adalah vmssZonalUpgradeMode, yang bersifat opsional dan dapat diperbarui kapan saja. Properti ini mendefinisikan skema peningkatan untuk skala mesin virtual yang akan terjadi secara paralel atau berurutan di seluruh Availability Zone.

    • Jika nilai ini diatur ke Parallel: Semua pembaruan set skala terjadi secara paralel di semua zona. Mode penerapan ini lebih cepat untuk peningkatan, kami tidak merekomendasikannya karena melanggar pedoman SDP, yang menyatakan bahwa pembaruan harus diterapkan ke satu zona pada satu waktu.
    • Jika nilai ini dihilangkan atau disetel ke Hierarchical: Nilai ini memastikan zona diperbarui satu per satu, pindah ke zona berikutnya hanya setelah menyelesaikan lima UD dalam zona pertama. Proses pembaruan ini lebih aman untuk kluster dan aplikasi pengguna.

Penting

Versi API sumber daya kluster Service Fabric harus 2020-12-01-pratinjau atau yang lebih baru.

Versi kode kluster harus 8.1.321 atau lebih tinggi.

{
  "apiVersion": "2020-12-01-preview",
  "type": "Microsoft.ServiceFabric/clusters",
  "name": "[parameters('clusterName')]",
  "location": "[parameters('clusterLocation')]",
  "dependsOn": [
    "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]"
  ],
  "properties": {
    "reliabilityLevel": "Platinum",
    "sfZonalUpgradeMode": "Hierarchical",
    "vmssZonalUpgradeMode": "Parallel",
    "nodeTypes": [
      {
        "name": "[parameters('vmNodeType0Name')]",
        "multipleAvailabilityZones": true
      }
    ]
  }
}

Catatan

  • IP Publik dan sumber daya load balancer harus menggunakan SKU Standar seperti yang dijelaskan sebelumnya dalam artikel.
  • Properti multipleAvailabilityZones pada jenis node hanya dapat ditentukan ketika jenis node dibuat dan tidak dapat dimodifikasi nanti. Jenis node yang ada tidak dapat dikonfigurasi dengan properti ini.
  • Ketika sfZonalUpgradeMode dihilangkan atau diatur ke Hierarchical, penerapan kluster dan aplikasi lebih lambat karena ada lebih banyak domain peningkatan dalam kluster. Penting untuk menyesuaikan batas waktu kebijakan peningkatan dengan benar untuk memperhitungkan durasi waktu peningkatan yang diperlukan untuk 15 domain peningkatan. Kebijakan peningkatan untuk aplikasi dan kluster harus diperbarui untuk memastikan penerapan tidak melebihi batas waktu penerapan Azure Resource Service selama 12 jam. Artinya, bahwa penerapan tidak boleh memakan waktu lebih dari 12 jam untuk 15 UD (artinya, tidak boleh memakan waktu lebih dari 40 menit untuk setiap UD).
  • Atur tingkat reliabilitas kluster ke Platinum untuk memastikan kluster bertahan dalam skenario satu zona tidak berfungsi.
  • Meningkatkan DurabilityLevel untuk nodetype dengan multipleAvailabilityZones, tidak didukung. Buat nodetype baru dengan durabilitas yang lebih tinggi sebagai gantinya.
  • SF hanya mendukung 3 AvailabilityZones. Angka yang lebih tinggi saat ini tidak didukung.

Tip

Sebaiknya atur sfZonalUpgradeMode ke Hierarchical atau dihilangkan. Penerapan akan mengikuti distribusi zona VM yang berdampak pada jumlah replika dan/atau instans yang lebih kecil sehingga lebih aman. Gunakan sfZonalUpgradeMode lalu atur ke Parallel jika kecepatan penerapan diprioritaskan atau hanya beban kerja stateless yang dijalankan pada jenis node dengan beberapa Zona Ketersediaan. Hal ini menyebabkan UD berjalan terjadi secara paralel di semua Zona Ketersediaan.

Bermigrasi ke jenis node dengan beberapa Zona Ketersediaan

Untuk semua skenario migrasi, Anda perlu menambahkan jenis node baru yang mendukung beberapa Zona Ketersediaan. Jenis node yang ada tidak dapat dimigrasikan untuk mendukung beberapa zona. Artikel Menskalakan jenis node primer kluster Service Fabric mencakup langkah-langkah terperinci untuk menambahkan jenis node baru dan sumber daya lain yang diperlukan untuk jenis node baru, seperti IP dan sumber daya load balancer. Artikel tersebut juga menjelaskan cara menghentikan jenis node yang ada setelah jenis node dengan beberapa Zona Ketersediaan ditambahkan ke kluster.

  • Migrasi dari jenis node yang menggunakan load balancer dasar dan sumber daya IP: Proses ini sudah dijelaskan dalam sub-bagian di bawah ini untuk solusi dengan satu jenis node per Zona Ketersediaan.

    Untuk jenis node baru, satu-satunya perbedaan adalah hanya ada satu set skala komputer virtual dan satu jenis node untuk semua Zona Ketersediaan, bukan masing-masing satu per Zona Ketersediaan.

  • Migrasi dari jenis node yang menggunakan load balancer SKU Standar dan sumber daya IP dengan NSG: Ikuti prosedur yang sama yang dijelaskan sebelumnya. Namun, Anda tidak perlu menambahkan load balancer, IP, dan sumber daya NSG baru. Sumber daya yang sama dapat digunakan kembali dalam jenis node baru.

2. Terapkan zona dengan menyematkan satu skala komputer virtual yang diatur ke setiap zona

Penerapan ini adalah konfigurasi yang tersedia secara umum saat ini. Untuk menjangkau kluster Service Fabric di seluruh Zona Ketersediaan, Anda harus membuat jenis node primer di setiap Zona Ketersediaan yang didukung oleh wilayah tersebut. Hal ini akan mendistribusikan node turunan secara merata di setiap jenis node primer.

Topologi yang disarankan untuk jenis node primer memerlukan sumber daya yang diuraikan di bawah ini:

  • Tiga jenis node ditandai sebagai primer
    • Setiap jenis node harus dipetakan ke set skala komputer virtualnya sendiri yang terletak di zona yang berbeda.
    • Setiap set skala komputer virtual harus memiliki setidaknya lima node (Durabilitas Perak).

Diagram berikut menunjukkan arsitektur Zona Ketersediaan Service Fabric Azure:

Diagram that shows the Azure Service Fabric Availability Zone architecture.

Mengaktifkan zona pada set skala komputer virtual

Untuk mengaktifkan zona, pada set skala komputer virtual, Anda harus menyertakan tiga nilai berikut dalam sumber daya set skala komputer virtual:

  • Nilai pertama adalah properti zones, yang menentukan Zona Ketersediaan mana yang menjadi tujuan penerapan set skala komputer virtual.
  • Nilai kedua adalah properti singlePlacementGroup, yang harus diatur ke true.
  • Nilai ketiga adalah properti faultDomainOverride dalam ekstensi set skala komputer virtual Service Fabric. Nilai untuk properti ini seharusnya hanya mencakup zona tempat set skala komputer virtual ini akan ditempatkan. Contoh: "faultDomainOverride": "az1". Semua sumber daya set skala komputer virtual harus ditempatkan di wilayah yang sama karena kluster Service Fabric Azure tidak memiliki dukungan lintas wilayah.
{
  "apiVersion": "2018-10-01",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "[parameters('vmNodeType1Name')]",
  "location": "[parameters('computeLocation')]",
  "zones": [
    "1"
  ],
  "properties": {
    "singlePlacementGroup": true
  },
  "virtualMachineProfile": {
    "extensionProfile": {
      "extensions": [
        {
          "name": "[concat(parameters('vmNodeType1Name'),'_ServiceFabricNode')]",
          "properties": {
            "type": "ServiceFabricNode",
            "autoUpgradeMinorVersion": false,
            "publisher": "Microsoft.Azure.ServiceFabric",
            "settings": {
              "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
              "nodeTypeRef": "[parameters('vmNodeType1Name')]",
              "dataPath": "D:\\\\SvcFab",
              "durabilityLevel": "Silver",
              "certificate": {
                "thumbprint": "[parameters('certificateThumbprint')]",
                "x509StoreName": "[parameters('certificateStoreValue')]"
              },
              "systemLogUploadSettings": {
                "Enabled": true
              },
              "faultDomainOverride": "az1"
            },
            "typeHandlerVersion": "1.0"
          }
        }
      ]
    }
  }
}

Mengaktifkan beberapa jenis node primer dalam sumber daya kluster Service Fabric

Untuk mengatur satu atau lebih jenis node sebagai primer dalam sumber daya kluster, atur properti isPrimary ke true. Saat menerapkan kluster Service Fabric di seluruh Zona Ketersediaan, Anda harus memiliki tiga jenis node di zona yang berbeda.

{
  "reliabilityLevel": "Platinum",
  "nodeTypes": [
    {
      "name": "[parameters('vmNodeType0Name')]",
      "applicationPorts": {
        "endPort": "[parameters('nt0applicationEndPort')]",
        "startPort": "[parameters('nt0applicationStartPort')]"
      },
      "clientConnectionEndpointPort": "[parameters('nt0fabricTcpGatewayPort')]",
      "durabilityLevel": "Silver",
      "ephemeralPorts": {
        "endPort": "[parameters('nt0ephemeralEndPort')]",
        "startPort": "[parameters('nt0ephemeralStartPort')]"
      },
      "httpGatewayEndpointPort": "[parameters('nt0fabricHttpGatewayPort')]",
      "isPrimary": true,
      "vmInstanceCount": "[parameters('nt0InstanceCount')]"
    },
    {
      "name": "[parameters('vmNodeType1Name')]",
      "applicationPorts": {
        "endPort": "[parameters('nt1applicationEndPort')]",
        "startPort": "[parameters('nt1applicationStartPort')]"
      },
      "clientConnectionEndpointPort": "[parameters('nt1fabricTcpGatewayPort')]",
      "durabilityLevel": "Silver",
      "ephemeralPorts": {
        "endPort": "[parameters('nt1ephemeralEndPort')]",
        "startPort": "[parameters('nt1ephemeralStartPort')]"
      },
      "httpGatewayEndpointPort": "[parameters('nt1fabricHttpGatewayPort')]",
      "isPrimary": true,
      "vmInstanceCount": "[parameters('nt1InstanceCount')]"
    },
    {
      "name": "[parameters('vmNodeType2Name')]",
      "applicationPorts": {
        "endPort": "[parameters('nt2applicationEndPort')]",
        "startPort": "[parameters('nt2applicationStartPort')]"
      },
      "clientConnectionEndpointPort": "[parameters('nt2fabricTcpGatewayPort')]",
      "durabilityLevel": "Silver",
      "ephemeralPorts": {
        "endPort": "[parameters('nt2ephemeralEndPort')]",
        "startPort": "[parameters('nt2ephemeralStartPort')]"
      },
      "httpGatewayEndpointPort": "[parameters('nt2fabricHttpGatewayPort')]",
      "isPrimary": true,
      "vmInstanceCount": "[parameters('nt2InstanceCount')]"
    }
  ]
}

Bermigrasi menggunakan Zona Ketersediaan dari kluster menggunakan load balancer SKU Dasar dan SKU IP Dasar

Untuk melakukan migrasi kluster yang menggunakan load balancer dan IP dengan SKU dasar, Anda harus terlebih dahulu membuat load balancer yang sepenuhnya baru dan sumber daya IP yang menggunakan SKU standar. Tidak dimungkinkan untuk memperbarui sumber daya ini.

Referensi load balancer dan IP baru di jenis node lintas Zona Ketersediaan baru yang ingin Anda gunakan. Dalam contoh sebelumnya, tiga sumber daya set skala komputer virtual baru ditambahkan di zona 1, 2, dan 3. Set skala komputer virtual merujuk load balancer dan IP yang baru dibuat dan ditandai sebagai jenis node primer dalam sumber daya kluster Service Fabric.

  1. Untuk memulai, tambahkan sumber daya baru ke templat Azure Resource Manager yang sudah ada. Sumber daya ini meliputi:

    • Sumber daya IP publik menggunakan SKU Standar
    • Sumber daya load balancer yang menggunakan SKU Standar
    • NSG dirujuk oleh subnet tempat Anda menerapkan set skala komputer virtual Anda
    • Tiga jenis node ditandai sebagai primer
      • Setiap jenis node harus dipetakan ke set skala komputer virtualnya sendiri yang terletak di zona yang berbeda.
      • Setiap set skala komputer virtual harus memiliki setidaknya lima node (Durabilitas Perak).

    Contoh sumber daya ini dapat ditemukan di templat sampel.

    New-AzureRmResourceGroupDeployment `
        -ResourceGroupName $ResourceGroupName `
        -TemplateFile $Template `
        -TemplateParameterFile $Parameters
    
  2. Setelah sumber daya selesai diterapkan, Anda dapat menonaktifkan node pada jenis node primer dari kluster asli. Ketika node dinonaktifkan, layanan sistem bermigrasi ke jenis node primer baru yang Anda terapkan sebelumnya.

    Connect-ServiceFabricCluster -ConnectionEndpoint $ClusterName `
        -KeepAliveIntervalInSec 10 `
        -X509Credential `
        -ServerCertThumbprint $thumb  `
        -FindType FindByThumbprint `
        -FindValue $thumb `
        -StoreLocation CurrentUser `
        -StoreName My 
    
    Write-Host "Connected to cluster"
    
    $nodeNames = @("_nt0_0", "_nt0_1", "_nt0_2", "_nt0_3", "_nt0_4")
    
    Write-Host "Disabling nodes..."
    foreach($name in $nodeNames) {
        Disable-ServiceFabricNode -NodeName $name -Intent RemoveNode -Force
    }
    
  3. Setelah semua node dinonaktifkan, layanan sistem akan berjalan pada jenis node primer, yang tersebar di seluruh zona. Anda kemudian dapat menghapus node yang dinonaktifkan dari kluster. Setelah node dihapus, Anda dapat menghapus IP asli, load balancer, dan sumber daya set skala komputer virtual.

    foreach($name in $nodeNames){
        # Remove the node from the cluster
        Remove-ServiceFabricNodeState -NodeName $name -TimeoutSec 300 -Force
        Write-Host "Removed node state for node $name"
    }
    
    $scaleSetName="nt0"
    Remove-AzureRmVmss -ResourceGroupName $groupname -VMScaleSetName $scaleSetName -Force
    
    $lbname="LB-cluster-nt0"
    $oldPublicIpName="LBIP-cluster-0"
    $newPublicIpName="LBIP-cluster-1"
    
    Remove-AzureRmLoadBalancer -Name $lbname -ResourceGroupName $groupname -Force
    Remove-AzureRmPublicIpAddress -Name $oldPublicIpName -ResourceGroupName $groupname -Force
    
  4. Selanjutnya, hapus referensi ke sumber daya ini dari templat Resource Manager yang telah Anda terapkan.

  5. Terakhir, perbarui nama DNS dan IP publik.

$oldprimaryPublicIP = Get-AzureRmPublicIpAddress -Name $oldPublicIpName  -ResourceGroupName $groupname
$primaryDNSName = $oldprimaryPublicIP.DnsSettings.DomainNameLabel
$primaryDNSFqdn = $oldprimaryPublicIP.DnsSettings.Fqdn

Remove-AzureRmLoadBalancer -Name $lbname -ResourceGroupName $groupname -Force
Remove-AzureRmPublicIpAddress -Name $oldPublicIpName -ResourceGroupName $groupname -Force

$PublicIP = Get-AzureRmPublicIpAddress -Name $newPublicIpName  -ResourceGroupName $groupname
$PublicIP.DnsSettings.DomainNameLabel = $primaryDNSName
$PublicIP.DnsSettings.Fqdn = $primaryDNSFqdn
Set-AzureRmPublicIpAddress -PublicIpAddress $PublicIP