Menyebarkan klaster yang dikelola Azure Service Fabric pada 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.

Klaster yang dikelola Service Fabric mendukung penyebaran yang mencakup beberapa Zona Ketersediaan untuk memberikan ketahanan zona. Konfigurasi ini memastikan ketersediaan tinggi layanan sistem penting dan aplikasi Anda untuk melindungi dari titik kegagalan tunggal. Zona Ketersediaan Azure hanya tersedia di wilayah tertentu. Untuk informasi selengkapnya, lihat Gambaran Umum Zona Ketersediaan.

Catatan

Rentang Zona Ketersediaan hanya tersedia pada klaster SKU Standar.

Templat sampel tersedia: Service Fabric lintas templat zona ketersediaan

Topologi untuk kluster yang dikelola Azure Service Fabric yang tidak terpengaruh zona

Catatan

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

Kluster Service Fabric yang didistribusikan di seluruh Zona Ketersediaan (AZ) memastikan ketersediaan tinggi status kluster.

Topologi yang direkomendasikan untuk kluster terkelola memerlukan sumber daya berikut:

  • SKU klaster harus bersifat Standar
  • Jenis node primer harus memiliki setidaknya sembilan node (3 di setiap AZ) untuk ketahanan terbaik, tetapi mendukung jumlah minimum enam (2 di setiap AZ).
  • Jenis node sekunder harus memiliki setidaknya enam node untuk ketahanan terbaik, tetapi mendukung jumlah minimum tiga.

Catatan

Hanya 3 penyebaran Zona Ketersediaan yang didukung.

Catatan

Tidak mungkin melakukan perubahan di tempat kumpulan skala mesin virtual di kluster terkelola dari kluster non-zona-spanning ke zona-spanned.

Diagram yang memperlihatkan arsitektur Zona Ketersediaan Azure Service Fabric Arsitektur Zona Ketersediaan Azure Service Fabric

Contoh daftar node yang menggambarkan format FD/UD dalam set skala komputer virtual mencakup zona

Sampel daftar node yang menggambarkan format FD/UD dalam set skala mesin virtual zona perluasan.

Distribusi replika Layanan di seluruh zona: Ketika layanan disebarkan pada jenis node yang mencakup zona, replika akan disiapkan untuk memastikan replika tersebut sampai di zona terpisah. Pemisahan ini dipastikan sebagai domain kesalahan pada simpul yang ada di setiap 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 mencoba memastikan distribusi yang sama di seluruh AZ.

Konfigurasi Replika Layanan Pengguna: Layanan pengguna stateful yang diterapkan pada jenis node zona ketersediaan silang harus dikonfigurasi dengan konfigurasi ini: jumlah replika dengan target = 9, menit = 5. Konfigurasi ini membantu layanan berfungsi bahkan ketika satu zona turun karena enam replika masih akan naik di dua zona lainnya. Peningkatan aplikasi dalam skenario seperti itu juga akan dilalui.

Skenario zona tidak berfungsi: Saat zona turun, semua simpul di zona tersebut muncul sebagai tidak berfungsi. Replika layanan pada node ini juga akan tidak berfungsi. Karena ada replika di zona lain, layanan terus responsif dengan replika utama gagal ke zona yang berfungsi. Layanan akan muncul dalam status peringatan karena jumlah replika target tidak terpenuhi dan jumlah komputer virtual (VM) masih lebih dari ukuran replika target min yang ditentukan. Akibatnya, load balancer Service Fabric memunculkan replika di zona kerja agar sesuai dengan jumlah replika target yang dikonfigurasi. Pada titik ini, layanan akan tampak sehat. Ketika zona yang turun muncul kembali, penyeimbang beban akan kembali menyebarkan semua replika layanan secara merata di semua zona.

Konfigurasi Jaringan

Untuk informasi selengkapnya, lihat Mengonfigurasi pengaturan jaringan untuk kluster yang dikelola Service Fabric.

Mengaktifkan kluster yang dikelola Azure Service Fabric yang tidak terpengaruh zona

Untuk mengaktifkan kluster terkelola Azure Service Fabric yang tangguh zona, Anda harus menyertakan properti ZonalResiliency berikut, yang menentukan apakah kluster tangguh zona atau tidak.

{
  "apiVersion": "2021-05-01",
  "type": "Microsoft.ServiceFabric/managedclusters",
  "properties": {
  ...
  "zonalResiliency": "true",
  ...
  }
}

Memigrasikan kluster tangguh nonzone yang ada ke Zone Resilient (Pratinjau)

Kluster terkelola Service Fabric yang ada yang tidak terbenam di seluruh zona ketersediaan sekarang dapat dimigrasikan di tempat untuk menjangkau zona ketersediaan. Skenario yang didukung termasuk kluster yang dibuat di wilayah yang memiliki tiga zona ketersediaan dan kluster di wilayah di mana tiga zona ketersediaan tersedia pasca-penyebaran.

Persyaratan:

Catatan

Migrasi ke konfigurasi yang tangguh dalam zona dapat menyebabkan hilangnya konektivitas eksternal secara singkat melalui penyeimbang beban, tetapi tidak akan memengaruhi kesehatan kluster. Ini terjadi ketika IP Publik baru perlu dibuat untuk membuat jaringan yang tangguh terhadap kegagalan Zona. Harap rencanakan migrasi dengan tepat.

  1. Mulailah dengan menentukan apakah IP baru diperlukan dan sumber daya apa yang perlu dimigrasikan untuk menjadi tangguh zona. Untuk mendapatkan status ketahanan Zona Ketersediaan saat ini untuk sumber daya kluster terkelola, gunakan panggilan API berikut:

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/getazresiliencystatus?api-version=2022-02-01-preview
    

    Atau Anda dapat menggunakan Modul Az sebagai berikut:

    Select-AzSubscription -SubscriptionId {subscriptionId}
    Invoke-AzResourceAction -ResourceId /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName} -Action getazresiliencystatus -ApiVersion 2022-02-01-preview
    

    Perintah harus memberikan respons yang mirip dengan:

    {
    "baseResourceStatus" :[
      {
      "resourceName": "sfmccluster1"
      "resourceType": "Microsoft.Storage/storageAccounts"
      "isZoneResilient": false
      },
      {
      "resourceName": "PublicIP-sfmccluster1"
      "resourceType": "Microsoft.Network/publicIPAddresses"
      "isZoneResilient": false
      },
      {
      "resourceName": "primary"
      "resourceType": "Microsoft.Compute/virutalmachinescalesets"
      "isZoneResilient": false
      }
    ],
    "isClusterZoneResilient": false
    }
    

    Jika sumber daya IP Publik tidak tangguh zona, migrasi kluster akan menyebabkan hilangnya konektivitas eksternal secara singkat. Kehilangan koneksi ini disebabkan oleh migrasi yang menyiapkan IP Publik baru dan memperbarui kluster Nama domain yang sepenuhnya memenuhi syarat (FQDN) ke IP baru. Jika sumber daya IP Publik tangguh zona, migrasi tidak akan mengubah sumber daya IP Publik atau FQDN, dan tidak akan ada dampak konektivitas eksternal.

  2. Mulai konversi akun penyimpanan dasar yang dibuat untuk kluster terkelola dari Penyimpanan redundan lokal (LRS) ke Zone Redundant Storage (ZRS) menggunakan konversi yang dimulai pelanggan. Grup sumber daya akun penyimpanan yang perlu dimigrasikan akan berupa "SFC_ClusterId"(misalnya SFC_9240df2f-71ab-4733-a641-53a8464d992d) di bawah langganan yang sama dengan sumber daya kluster terkelola.

  3. Menambahkan properti zona ke jenis simpul yang ada

    Langkah ini mengonfigurasi Set Skala Komputer Virtual terkelola yang terkait dengan jenis node sebagai tangguh zona, memastikan bahwa VM baru yang ditambahkan ke dalamnya akan disebarkan di seluruh zona ketersediaan (Zonal VM). Jika jenis node yang ditentukan adalah primer, penyedia sumber daya akan melakukan migrasi IP Publik bersama dengan pembaruan DNS FQDN kluster, jika diperlukan, untuk menjadi tangguh zona. getazresiliencystatus Gunakan API untuk memahami implikasi langkah ini.

  • Gunakan apiVersion 2022-02-01-preview atau lebih tinggi.

  • Tambahkan parameter yang zones diatur ke ["1", "2", "3"] ke jenis node yang ada:

    {
       "apiVersion": "2024-02-01-preview",
       "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
       "name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
       "location": "[resourcegroup().location]",
       "dependsOn": [
         "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
       ],
       "properties": {
         ...
         "isPrimary": true,
         "zones": ["1", "2", "3"]
         ...
       }
    },
    {
       "apiVersion": "2024-02-01-preview",
       "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
       "name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeNameSecondary'))]",
       "location": "[resourcegroup().location]",
       "dependsOn": [
         "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
       ],
       "properties": {
         ...
         "isPrimary": false,
         "zones": ["1", "2", "3"]
         ...
       }
    }
    
  1. Menskalakan jenis Node untuk menambahkan simpul Zonal dan menghapus simpul Regional

    Pada tahap ini, Virtual Machine Scale Sets ditandai sebagai tangguh zona. Jadi, saat meningkatkan skala, simpul yang baru ditambahkan akan menjadi zonal, dan ketika menurunkan skala, simpul regional akan dihapus. Pendekatan ini memberikan fleksibilitas untuk menskalakan dalam urutan apa pun yang selaras dengan persyaratan kapasitas Anda dengan menyesuaikan vmInstanceCount properti pada jenis node.

    Misalnya, jika vmInstanceCount awal diatur ke 6 (menunjukkan enam simpul regional), Anda dapat melakukan dua penyebaran:

    • Penyebaran pertama: Tingkatkan vmInstanceCount ke 12 untuk menambahkan 6 simpul Zonal .
    • Penyebaran kedua: Kurangi vmInstanceCount ke 6 untuk menghapus semua simpul Regional .

    Sepanjang proses, Anda dapat memeriksa getazresiliencystatus API untuk mengambil status kemajuan, seperti yang diilustrasikan di bawah ini. Proses ini dianggap selesai setelah setiap jenis node memiliki minimal enam simpul zonal dan 0 simpul regional.

    {
    "baseResourceStatus" :[
      {
      "resourceName": "sfmccluster1"
      "resourceType": "Microsoft.Storage/storageAccounts"
      "isZoneResilient": true
      },
      {
      "resourceName": "PublicIP-sfmccluster1"
      "resourceType": "Microsoft.Network/publicIPAddresses"
      "isZoneResilient": true
      },
      {
      "resourceName": "ntPrimary"
      "resourceType": "Microsoft.Compute/virutalmachinescalesets"
      "isZoneResilient": false
      "details": "Status: InProgress, ZonalNodes: 6, RegionalNodes: 6"
      },
      {
      "resourceName": "ntSecondary"
      "resourceType": "Microsoft.Compute/virutalmachinescalesets"
      "isZoneResilient": true
      "details": "Status: Done, ZonalNodes: 6, RegionalNodes: 0"
      }
    ],
    "isClusterZoneResilient": false
    }
    

    Catatan

    Proses penskalaan untuk jenis node utama akan memerlukan waktu tambahan, karena setiap penambahan atau penghapusan node akan memulai peningkatan kluster service fabric.

  2. Tandai kluster yang tahan terhadap kegagalan zona

    Langkah ini membantu penyebaran di masa mendatang, karena memastikan semua penerapan jenis node di masa mendatang menjangkau seluruh zona ketersediaan dan dengan demikian kluster tetap toleran terhadap kegagalan AZ. Atur zonalResiliency: true di templat ARM kluster dan lakukan penyebaran untuk menandai kluster sebagai zona yang tangguh dan pastikan semua penerapan jenis node baru menjangkau seluruh zona ketersediaan. Pembaruan ini hanya diperbolehkan jika semua jenis node memiliki setidaknya enam simpul zona dan 0 simpul regional.

    {
      "apiVersion": "2022-02-01-preview",
      "type": "Microsoft.ServiceFabric/managedclusters",
      "zonalResiliency": "true"
    }
    

    Anda juga dapat melihat status yang diperbarui di portal di bawah Ringkasan -> Properti yang mirip dengan Zonal resiliency True, setelah selesai.

  3. Validasi semua sumber daya tahan zona

    Untuk memvalidasi status ketahanan Zona Ketersediaan untuk sumber daya kluster terkelola, gunakan panggilan GET API berikut:

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/getazresiliencystatus?api-version=2022-02-01-preview
    

    Panggilan API ini harus memberikan respons yang mirip dengan:

    {
     "baseResourceStatus" :[
       {
       "resourceName": "sfmccluster1"
       "resourceType": "Microsoft.Storage/storageAccounts"
       "isZoneResilient": true
       },
       {
       "resourceName": "PublicIP-sfmccluster1"
       "resourceType": "Microsoft.Network/publicIPAddresses"
       "isZoneResilient": true
       },
       {
         "resourceName": "ntPrimary"
         "resourceType": "Microsoft.Compute/virutalmachinescalesets"
         "isZoneResilient": true
         "details": "Status: Done, ZonalNodes: 6, RegionalNodes: 0"
       },
       {
         "resourceName": "ntSecondary"
         "resourceType": "Microsoft.Compute/virutalmachinescalesets"
         "isZoneResilient": true
         "details": "Status: Done, ZonalNodes: 6, RegionalNodes: 0"
       }
     ],
     "isClusterZoneResilient": true
    }
    

    Jika Anda mengalami masalah, hubungi dukungan untuk bantuan.

Mengaktifkan FastZonalUpdate pada kluster yang dikelola Service Fabric (pratinjau)

Kluster yang dikelola Service Fabric mendukung peningkatan kluster dan aplikasi yang lebih cepat dengan mengurangi domain peningkatan maks per zona ketersediaan. Konfigurasi default saat ini dapat memiliki paling banyak 15 domain peningkatan (UL) dalam beberapa nodetype AZ. Sejumlah besar UD ini mengurangi kecepatan peningkatan. Konfigurasi baru mengurangi ED maks, yang menghasilkan pembaruan yang lebih cepat, menjaga keamanan peningkatan tetap utuh.

Pembaruan harus dilakukan melalui templat ARM dengan mengatur properti zonalUpdateMode ke "cepat" dan kemudian memodifikasi atribut jenis node, seperti menambahkan node dan kemudian menghapus node ke setiap nodetype (lihat langkah yang diperlukan 2 dan 3). ApiVersion sumber daya kluster yang dikelola Service Fabric harus 2022-10-01-preview atau yang lebih baru.

  1. Ubah templat ARM dengan properti baru zonalUpdateMode.
   "resources": [
        {
            "type": "Microsoft.ServiceFabric/managedClusters",
            "apiVersion": "2022-10-01-preview",
            '''
            "properties": {
                '''
                "zonalResiliency": true,
                "zonalUpdateMode": "fast",
                ...
            }
        }]
  1. Tambahkan simpul ke kluster dengan menggunakan perintah az sf cluster node add PowerShell.

  2. Hapus simpul dari kluster dengan menggunakan perintah az sf cluster node remove PowerShell.