Bagikan melalui


Menyebarkan kluster Azure Service Fabric dengan jenis simpul tanpa status-saja

Jenis simpul Service Fabric muncul dengan asumsi yang melekat bahwa pada titik waktu tertentu, layanan berstatus mungkin ditempatkan pada simpul. Jenis node tanpa status mengubah asumsi ini untuk jenis node, sehingga memungkinkan jenis node untuk menggunakan fitur lain seperti operasi peluasan skala yang lebih cepat, dukungan untuk Peningkatan OS Otomatis pada durabilitas Perunggu dan peluasan skala ke lebih dari 100 node dalam satu set skala mesin virtual.

  • Jenis simpul primer tidak dapat dikonfigurasi menjadi tanpa status
  • Jenis simpul tanpa status hanya didukung dengan Tingkat Ketahanan Perunggu
  • Jenis simpul tanpa status hanya didukung di Service Fabric Runtime versi 7.1.409 atau yang lebih tinggi.

Contoh templat tersedia: Template Jenis Simpul Tanpa Status Service Fabric

Mengaktifkan jenis simpul tanpa status dalam kluster Service Fabric

Untuk mengatur satu atau beberapa jenis simpul sebagai tanpa status dalam sumber daya kluster, atur properti isStateless ke true. Saat menyebarkan kluster Service Fabric dengan jenis simpul tanpa status, jangan lupa untuk memiliki satu jenis simpul primer dalam sumber daya kluster.

  • ApiVersion sumber daya kluster Service Fabric harus "2020-12-01-preview" atau yang lebih tinggi.
{
    "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,
        "isStateless": false, // Primary Node Types cannot be stateless
        "vmInstanceCount": "[parameters('nt0InstanceCount')]"
    },
    {
        "name": "[parameters('vmNodeType1Name')]",
        "applicationPorts": {
            "endPort": "[parameters('nt1applicationEndPort')]",
            "startPort": "[parameters('nt1applicationStartPort')]"
        },
        "clientConnectionEndpointPort": "[parameters('nt1fabricTcpGatewayPort')]",
        "durabilityLevel": "Bronze",
        "ephemeralPorts": {
            "endPort": "[parameters('nt1ephemeralEndPort')]",
            "startPort": "[parameters('nt1ephemeralStartPort')]"
        },
        "httpGatewayEndpointPort": "[parameters('nt1fabricHttpGatewayPort')]",
        "isPrimary": false,
        "isStateless": true,
        "vmInstanceCount": "[parameters('nt1InstanceCount')]"
    }    
    ],
}

Mengonfigurasi set skala komputer virtual untuk jenis simpul tanpa status

Untuk mengaktifkan jenis simpul tanpa status, Anda harus mengonfigurasi sumber daya set skala komputer virtual yang mendasarinya dengan cara berikut:

  • Nilai properti singlePlacementGroup, yang harus diatur ke false jika Anda perlu menskalakan ke lebih dari 100 VM.
  • upgradePolicy di set Skala harus diatur ke Rolling.
  • Mode Rolling Upgrade mengharuskan Application Health Extension dan Health Probes untuk dikonfigurasikan. Untuk detail selengkapnya tentang mengkonfigurasi penyelidikan kesehatan atau ekstensi kesehatan aplikasi lihat dokumenini. Konfigurasikan penyelidikan kesehatan dengan konfigurasi default untuk jenis Node Tanpa Status seperti yang disarankan di bawah ini. Setelah aplikasi disebarkan ke jenis node, port ekstensi Penyelidikan Kesehatan/Kesehatan dapat diubah untuk memantau kesehatan aplikasi yang sebenarnya.

Catatan

Saat menggunakan AutoScaling dengan jenis simpul Tanpa Status, setelah penurunan skala, status simpul tidak dibersihkan secara otomatis. Untuk membersihkan NodeState of Down Nodes selama AutoScale, sebaiknya gunakan Service Fabric AutoScale Helper.

{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.Compute/virtualMachineScaleSets",
    "name": "[parameters('vmNodeType1Name')]",
    "location": "[parameters('computeLocation')]",
    "properties": {
        "overprovision": "[variables('overProvision')]",
        "upgradePolicy": {
          "mode": "Rolling",
          "automaticOSUpgradePolicy": {
            "enableAutomaticOSUpgrade": true
          }
        },
        "platformFaultDomainCount": 5
    },
    "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": "Bronze",
            "certificate": {
                "thumbprint": "[parameters('certificateThumbprint')]",
                "x509StoreName": "[parameters('certificateStoreValue')]"
            },
            "systemLogUploadSettings": {
                "Enabled": true
            },
        },
        "typeHandlerVersion": "1.1"
    }
    },
    {
        "type": "extensions",
        "name": "HealthExtension",
        "properties": {
            "publisher": "Microsoft.ManagedServices",
            "type": "ApplicationHealthWindows",
            "autoUpgradeMinorVersion": true,
            "typeHandlerVersion": "1.0",
            "settings": {
            "protocol": "tcp",
            "port": "19000"
            }
            }
        },
    ]
}

Mengonfigurasi tipe node Tanpa Status dengan beberapa Zona Ketersediaan

Untuk mengonfigurasi jenis simpul Tanpa Status yang mencakup beberapa zona ketersediaan, ikuti dokumentasi di sini, beserta beberapa perubahan sebagai berikut:

  • Atur singlePlacementGroup : false jika beberapa grup penempatan perlu diaktifkan.
  • Atur upgradePolicy : Rolling dan tambahkan Application Health Extension/Health Probes seperti yang disebutkan di atas.
  • Atur platformFaultDomainCount : 5 untuk set skala komputer virtual.

Sebagai referensi, perhatikan templat untuk mengonfigurasi jenis simpul Tanpa Status dengan beberapa Zona Ketersediaan

Persyaratan jaringan

IP Publik dan Sumber Daya Load Balancer

Untuk mengaktifkan penskalaan ke lebih dari 100 VM pada sumber daya set skala komputer virtual, load balancer dan sumber daya IP yang dirujuk oleh set skala komputer virtual tersebut harus menggunakan SKU Standar. Membuat load balancer atau sumber daya IP tanpa properti SKU akan membuat SKU dasar, yang tidak mendukung penskalaan ke lebih dari 100 VM. Load balancer SKU standar akan memblokir semua lalu lintas dari luar secara default, untuk mengizinkan lalu lintas keluar, NSG harus disebarkan 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 di tempat tidak dapat dilakukan di IP Publik dan sumber daya load balancer.

Aturan NAT set skala komputer virtual

Aturan NAT masuk 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 keluar Load Balancer SKU Standar

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

Catatan

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

Catatan

Kluster Service Fabric apa pun yang memanfaatkan SLB SKU Standar harus memastikan bahwa setiap jenis simpul memiliki aturan yang mengizinkan lalu lintas keluar di port 443. Hal ini diperlukan untuk menyelesaikan penyiapan kluster, dan pengembangan apa pun tanpa aturan akan gagal.

Bermigrasi untuk menggunakan jenis simpul Tanpa Status dalam kluster

Untuk semua skenario migrasi, jenis simpul tanpa status-saja harus ditambahkan. Jenis simpul yang ada tidak dapat dimigrasikan menjadi tanpa status-saja.

Untuk memigrasikan 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. Sumber daya ini tidak dapat diperbarui di tempat.

LB dan IP baru harus dirujuk dalam jenis simpul Tanpa Status baru yang ingin Anda gunakan. Dalam contoh di atas, sumber daya set skala komputer virtual baru ditambahkan untuk digunakan untuk jenis simpul Tanpa Status. Set skala mesin virtual ini merujuk LB dan IP yang baru dibuat dan ditandai sebagai jenis simpul tanpa status dalam Sumber Daya Kluster Service Fabric.

Untuk memulai, Anda harus menambahkan 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 menyebarkan set skala komputer virtual Anda.

Setelah sumber daya selesai disebarkan, Anda dapat mulai menonaktifkan simpul dalam jenis simpul yang ingin dihapus dari kluster asal.

Langkah berikutnya