Megosztás a következőn keresztül:


Oktatóanyag: Service Fabric-fürt skálázása az Azure-ban

Ez az oktatóanyag egy sorozat harmadik része, amely bemutatja, hogyan skálázhatja fel a meglévő fürtöt. Az oktatóanyag végére elsajátíthatja a fürtök skálázásának és a hátramaradt erőforrások eltávolításának módját. Az Azure-ban futó fürtök skálázásával kapcsolatos további információkért olvassa el a Service Fabric-fürtök méretezését.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Csomópontok hozzáadása és eltávolítása (vertikális felskálázás és méretezés)
  • Csomóponttípusok hozzáadása és eltávolítása (vertikális felskálázás és méretezés)
  • Csomóponterőforrások növelése (vertikális felskálázás)

Ebben az oktatóanyag-sorozatban az alábbiakkal ismerkedhet meg:

Feljegyzés

Javasoljuk, hogy az Azure Az PowerShell modult használja az Azure-ral való interakcióhoz. Első lépésként tekintse meg az Azure PowerShell telepítését ismertető témakört. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.

Előfeltételek

Az oktatóanyag elkezdése előtt:

Fontos szempontok és irányelvek

Az alkalmazás számítási feladatai idővel változnak, a meglévő szolgáltatásoknak több (vagy kevesebb) erőforrásra van szükségük? Csomópontok hozzáadása vagy eltávolítása csomóponttípusból a fürterőforrások növeléséhez vagy csökkentéséhez.

Több mint 100 csomópontot kell hozzáadnia a fürthöz? Egyetlen Service Fabric-csomóponttípus/méretezési csoport legfeljebb 100 csomópontot/virtuális gépet tartalmazhat. Ha 100 csomóponton túl szeretne skálázni egy fürtöt, adjon hozzá további csomóponttípusokat.

Az alkalmazás több szolgáltatással is rendelkezik, és ezek közül bármelyiknek nyilvánosnak vagy internetesnek kell lennie? A tipikus alkalmazások egy előtérbeli átjárószolgáltatást tartalmaznak, amely bemenetet fogad egy ügyféltől, és egy vagy több háttérszolgáltatást, amelyek kommunikálnak az előtér-szolgáltatásokkal. Ebben az esetben javasoljuk, hogy adjon hozzá legalább két csomóponttípust a fürthöz.

A szolgáltatásoknak különböző infrastruktúrára van szükségük, például nagyobb RAM-ra vagy magasabb cpu-ciklusokra? Az alkalmazás például tartalmaz egy előtér-szolgáltatást és egy háttérszolgáltatást. Az előtérbeli szolgáltatás kisebb virtuális gépeken (például D2-es virtuális gépeken) futtatható, amelyek portjai nyitva vannak az interneten. A háttérszolgáltatás azonban nagy számítási igényű, és nagyobb virtuális gépeken (például D4, D6, D15) kell futnia, amelyek nem internetkapcsolattal bírnak. Ebben az esetben javasoljuk, hogy adjon hozzá két vagy több csomóponttípust a fürthöz. Ez lehetővé teszi, hogy minden csomóponttípus különböző tulajdonságokkal rendelkezzen, például internetkapcsolattal vagy virtuálisgép-méretel. A virtuális gépek száma egymástól függetlenül is skálázható.

Azure-fürtök méretezése során tartsa szem előtt az alábbi irányelveket:

  • Egyetlen Service Fabric-csomóponttípus/méretezési csoport legfeljebb 100 csomópontot/virtuális gépet tartalmazhat. Ha 100 csomóponton túl szeretne skálázni egy fürtöt, adjon hozzá további csomóponttípusokat.
  • Az éles számítási feladatokat futtató elsődleges csomóponttípusoknak arany vagy ezüst szintű tartóssági szinttel kell rendelkezniük, és mindig öt vagy több csomópontjuk van.
  • Az állapotalapú éles számítási feladatokat futtató nem elsődleges csomóponttípusoknak mindig öt vagy több csomópontot kell tartalmazniuk.
  • Az állapot nélküli éles számítási feladatokat futtató nem elsődleges csomóponttípusoknak mindig két vagy több csomópontot kell tartalmazniuk.
  • Az arany vagy ezüst bármely csomóponttípusának mindig öt vagy több csomópontot kell rendelkeznie.
  • Ha a csomópontok elsődleges csomóponttípusban való skálázása (a csomópontok eltávolítása) soha nem csökkenti a példányok számát a megbízhatósági szinthez képest.

További információkért olvassa el a fürt kapacitására vonatkozó útmutatást.

Erőforráscsoport sablonjának exportálása

Egy biztonságos Windows-fürt létrehozása és az erőforráscsoport sikeres beállítása után exportálja az erőforráscsoport Resource Manager-sablonját. A sablon exportálásával automatizálhatja a fürt és erőforrásai jövőbeli üzembe helyezését, mivel a sablon tartalmazza az összes teljes infrastruktúrát. A sablonok exportálásával kapcsolatos további információkért olvassa el az Azure Resource Manager-erőforráscsoportok kezelését az Azure Portalon.

  1. Az Azure Portalon lépjen a fürtöt tartalmazó erőforráscsoportra (sfclustertutorialgroup, ha ezt az oktatóanyagot követi).

  2. A bal oldali panelen válassza az Üzemelő példányok lehetőséget, vagy válassza a központi telepítés alatti hivatkozást.

  3. Válassza ki a legutóbbi sikeres üzembe helyezést a listából.

  4. A bal oldali panelen válassza a Sablon lehetőséget, majd a Letöltés lehetőséget a sablon ZIP-fájlként való exportálásához. Mentse a sablont és a paramétereket a helyi számítógépre.

Csomópontok hozzáadása csomóponttípusokhoz vagy csomóponttípusok eltávolítása

A horizontális vagy horizontális skálázás megváltoztatja a fürt csomópontjainak számát. Ha fel- vagy felskáláz, további virtuálisgép-példányokat ad hozzá a méretezési csoporthoz. Ezek a példányok lesznek a Service Fabric által használt csomópontok. A Service Fabric tudja, ha a méretezési csoport új példányokkal bővül (felskálázással), és automatikusan ennek megfelelően jár el. A fürtöt bármikor skálázhatja, még akkor is, ha számítási feladatok futnak a fürtön.

A sablon frissítése

Exportáljon egy sablon- és paraméterfájlt az erőforráscsoportból a legutóbbi üzembe helyezéshez. Nyissa meg a parameters.json fájlt. Ha ebben az oktatóanyagban a mintasablon használatával telepítette a fürtöt, három csomóponttípus és három paraméter állítja be az egyes csomóponttípusok csomópontjainak számát: nt0InstanceCount, nt1InstanceCount és nt2InstanceCount. Az nt1InstanceCount paraméter például beállítja a második csomóponttípus példányszámát, és beállítja a virtuális gépek számát a társított virtuálisgép-méretezési csoportban.

Az nt1InstanceCount értékének frissítésével tehát módosíthatja a csomópontok számát a második csomóponttípusban. Ne feledje, hogy egy csomóponttípus nem skálázható 100-nál több csomópontra. Az állapotalapú éles számítási feladatokat futtató nem elsődleges csomóponttípusoknak mindig öt vagy több csomópontot kell tartalmazniuk. Az állapot nélküli éles számítási feladatokat futtató nem elsődleges csomóponttípusoknak mindig két vagy több csomópontot kell tartalmazniuk.

Ha skáláz, eltávolítja a csomópontokat a Bronz tartóssági szint egyik csomóponttípusából, manuálisan kell eltávolítania ezeknek a csomópontoknak az állapotát. A Silver és Gold tartóssági szint esetében ezeket a lépéseket a platform automatikusan végrehajtja.

A frissített sablon üzembe helyezése

Mentse a template.json és parameters.json fájlok módosításait. A frissített sablon üzembe helyezéséhez futtassa a következő parancsot:

New-AzResourceGroupDeployment -ResourceGroupName sfclustertutorialgroup -TemplateFile c:\temp\template.json -TemplateParameterFile c:\temp\parameters.json -Name "ChangingInstanceCount"

Vagy a következő Azure CLI-parancs:

az deployment group create --resource-group sfclustertutorialgroup --template-file c:\temp\template.json --parameters c:\temp\parameters.json

Csomóponttípus hozzáadása a fürthöz

Az Azure-ban futó Service Fabric-fürtökben definiált csomóponttípusok mindegyike külön virtuálisgép-méretezési csoportként van beállítva. Ezután minden csomóponttípus külön kezelhető. Egymástól függetlenül skálázhatja az egyes csomóponttípusokat felfelé vagy lefelé, különböző portkészletekkel rendelkezhet, és különböző kapacitásmetrikákat használhat. Az egyes fürtcsomópontokon futó operációsrendszer-termékváltozatot egymástól függetlenül is módosíthatja, de vegye figyelembe, hogy a mintafürtben nem futtatható Windows és Linux. Egyetlen csomóponttípus/méretezési csoport legfeljebb 100 csomópontot tartalmazhat. A fürtöket horizontálisan több mint 100 csomópontra skálázhatja további csomóponttípusok/méretezési csoportok hozzáadásával. A fürtöt bármikor skálázhatja, még akkor is, ha számítási feladatok futnak a fürtön.

A sablon frissítése

Exportáljon egy sablon- és paraméterfájlt az erőforráscsoportból a legutóbbi üzembe helyezéshez. Nyissa meg a parameters.json fájlt. Ha ebben az oktatóanyagban a mintasablon használatával telepítette a fürtöt, a fürtben három csomóponttípus található. Ebben a szakaszban egy negyedik csomóponttípust ad hozzá Egy Resource Manager-sablon frissítésével és üzembe helyezésével.

Az új csomóponttípuson kívül hozzáadja a társított virtuálisgép-méretezési csoportot (amely a virtuális hálózat egy külön alhálózatán fut) és a hálózati biztonsági csoportot is. Dönthet úgy, hogy új vagy meglévő nyilvános IP-címet és Azure Load Balancer-erőforrásokat ad hozzá az új méretezési csoporthoz. Az új csomóponttípus ezüst és "Standard_D2_V2" méretű tartóssági szinttel rendelkezik.

A template.json fájlban adja hozzá a következő új paramétereket:

"nt3InstanceCount": {
    "defaultValue": 5,
    "type": "Int",
    "metadata": {
        "description": "Instance count for node type"
    }
},
"vmNodeType3Size": {
    "defaultValue": "Standard_D2_V2",
    "type": "String"
},

A template.json fájlban adja hozzá a következő új változókat:

"lbID3": "[resourceId('Microsoft.Network/loadBalancers',concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType3Name')))]",
"lbIPConfig3": "[concat(variables('lbID3'),'/frontendIPConfigurations/LoadBalancerIPConfig')]",
"lbPoolID3": "[concat(variables('lbID3'),'/backendAddressPools/LoadBalancerBEAddressPool')]",
"lbProbeID3": "[concat(variables('lbID3'),'/probes/FabricGatewayProbe')]",
"lbHttpProbeID3": "[concat(variables('lbID3'),'/probes/FabricHttpGatewayProbe')]",
"lbNatPoolID3": "[concat(variables('lbID3'),'/inboundNatPools/LoadBalancerBEAddressNatPool')]",
"vmNodeType3Name": "[toLower(concat('NT4', variables('vmName')))]",
"vmStorageAccountName3": "[toLower(concat(uniqueString(resourceGroup().id), '1', '3' ))]",
"nt3applicationStartPort": "20000",
"nt3applicationEndPort": "30000",
"nt3ephemeralStartPort": "49152",
"nt3ephemeralEndPort": "65534",
"nt3fabricTcpGatewayPort": "19000",
"nt3fabricHttpGatewayPort": "19080",
"nt3reverseProxyEndpointPort": "19081",
"subnet3Name": "Subnet-3",
"subnet3Prefix": "10.0.3.0/24",
"subnet3Ref": "[concat(variables('vnetID'),'/subnets/',variables('subnet3Name'))]",

A template.json fájlban adjon hozzá egy új alhálózatot a virtuális hálózati erőforráshoz:

{
    "type": "Microsoft.Network/virtualNetworks",
    "name": "[variables('virtualNetworkName')]",
    "apiVersion": "2018-08-01",
    "location": "[variables('computeLocation')]",
    "tags": {
        "resourceType": "Service Fabric",
        "clusterName": "[parameters('clusterName')]"
    },
    "properties": {
        "addressSpace": {
            "addressPrefixes": [
                "[variables('addressPrefix')]"
            ]
        },
        "subnets": [
            ...
            {
                "name": "[variables('subnet3Name')]",
                "properties": {
                    "addressPrefix": "[variables('subnet3Prefix')]",
                    "networkSecurityGroup": {
                        "id": "[resourceId('Microsoft.Network/networkSecurityGroups', concat('nsg', variables('subnet3Name')))]"
                    }
                }
            }
        ]
    },
    "dependsOn": [
        ...
        "[concat('Microsoft.Network/networkSecurityGroups/', concat('nsg', variables('subnet3Name')))]"
    ]
},

A template.json fájlban adjon hozzá új nyilvános IP-címet és terheléselosztó-erőforrásokat:

{
    "type": "Microsoft.Network/publicIPAddresses",
    "name": "[concat(variables('lbIPName'),'-',variables('vmNodeType3Name'))]",
    "apiVersion": "2018-08-01",
    "location": "[variables('computeLocation')]",
    "tags": {
        "resourceType": "Service Fabric",
        "clusterName": "[parameters('clusterName')]"
    },
    "properties": {
        "dnsSettings": {
            "domainNameLabel": "[concat(variables('dnsName'),'-','nt4')]"
        },
        "publicIPAllocationMethod": "Dynamic"
    }
},
        {
    "type": "Microsoft.Network/loadBalancers",
    "name": "[concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType3Name'))]",
    "apiVersion": "2018-08-01",
    "location": "[variables('computeLocation')]",
    "tags": {
        "resourceType": "Service Fabric",
        "clusterName": "[parameters('clusterName')]"
    },
    "properties": {
        "frontendIPConfigurations": [
            {
                "name": "LoadBalancerIPConfig",
                "properties": {
                    "publicIPAddress": {
                        "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(variables('lbIPName'),'-',variables('vmNodeType3Name')))]"
                    }
                }
            }
        ],
        "backendAddressPools": [
            {
                "name": "LoadBalancerBEAddressPool",
                "properties": {}
            }
        ],
        "loadBalancingRules": [
            {
                "name": "LBRule",
                "properties": {
                    "backendAddressPool": {
                        "id": "[variables('lbPoolID3')]"
                    },
                    "backendPort": "[variables('nt3fabricTcpGatewayPort')]",
                    "enableFloatingIP": "false",
                    "frontendIPConfiguration": {
                        "id": "[variables('lbIPConfig3')]"
                    },
                    "frontendPort": "[variables('nt3fabricTcpGatewayPort')]",
                    "idleTimeoutInMinutes": "5",
                    "probe": {
                        "id": "[variables('lbProbeID3')]"
                    },
                    "protocol": "tcp"
                }
            },
            {
                "name": "LBHttpRule",
                "properties": {
                    "backendAddressPool": {
                        "id": "[variables('lbPoolID3')]"
                    },
                    "backendPort": "[variables('nt3fabricHttpGatewayPort')]",
                    "enableFloatingIP": "false",
                    "frontendIPConfiguration": {
                        "id": "[variables('lbIPConfig3')]"
                    },
                    "frontendPort": "[variables('nt3fabricHttpGatewayPort')]",
                    "idleTimeoutInMinutes": "5",
                    "probe": {
                        "id": "[variables('lbHttpProbeID3')]"
                    },
                    "protocol": "tcp"
                }
            },
            {
                "name": "AppPortLBRule1",
                "properties": {
                    "backendAddressPool": {
                        "id": "[variables('lbPoolID3')]"
                    },
                    "backendPort": "[parameters('loadBalancedAppPort1')]",
                    "enableFloatingIP": "false",
                    "frontendIPConfiguration": {
                        "id": "[variables('lbIPConfig3')]"
                    },
                    "frontendPort": "[parameters('loadBalancedAppPort1')]",
                    "idleTimeoutInMinutes": "5",
                    "probe": {
                        "id": "[concat(variables('lbID3'),'/probes/AppPortProbe1')]"
                    },
                    "protocol": "tcp"
                }
            },
            {
                "name": "AppPortLBRule2",
                "properties": {
                    "backendAddressPool": {
                        "id": "[variables('lbPoolID3')]"
                    },
                    "backendPort": "[parameters('loadBalancedAppPort2')]",
                    "enableFloatingIP": "false",
                    "frontendIPConfiguration": {
                        "id": "[variables('lbIPConfig3')]"
                    },
                    "frontendPort": "[parameters('loadBalancedAppPort2')]",
                    "idleTimeoutInMinutes": "5",
                    "probe": {
                        "id": "[concat(variables('lbID3'),'/probes/AppPortProbe2')]"
                    },
                    "protocol": "tcp"
                }
            }
        ],
        "probes": [
            {
                "name": "FabricGatewayProbe",
                "properties": {
                    "intervalInSeconds": 5,
                    "numberOfProbes": 2,
                    "port": "[variables('nt3fabricTcpGatewayPort')]",
                    "protocol": "tcp"
                }
            },
            {
                "name": "FabricHttpGatewayProbe",
                "properties": {
                    "intervalInSeconds": 5,
                    "numberOfProbes": 2,
                    "port": "[variables('nt3fabricHttpGatewayPort')]",
                    "protocol": "tcp"
                }
            },
            {
                "name": "AppPortProbe1",
                "properties": {
                    "intervalInSeconds": 5,
                    "numberOfProbes": 2,
                    "port": "[parameters('loadBalancedAppPort1')]",
                    "protocol": "tcp"
                }
            },
            {
                "name": "AppPortProbe2",
                "properties": {
                    "intervalInSeconds": 5,
                    "numberOfProbes": 2,
                    "port": "[parameters('loadBalancedAppPort2')]",
                    "protocol": "tcp"
                }
            }
        ],
        "inboundNatPools": [
            {
                "name": "LoadBalancerBEAddressNatPool",
                "properties": {
                    "backendPort": "3389",
                    "frontendIPConfiguration": {
                        "id": "[variables('lbIPConfig3')]"
                    },
                    "frontendPortRangeEnd": "4500",
                    "frontendPortRangeStart": "3389",
                    "protocol": "tcp"
                }
            }
        ]
    },
    "dependsOn": [
        "[concat('Microsoft.Network/publicIPAddresses/',concat(variables('lbIPName'),'-',variables('vmNodeType3Name')))]"
    ]
},

A template.json fájlban adjon hozzá új hálózati biztonsági csoportot és virtuálisgép-méretezési csoport erőforrásait. A virtuálisgép-méretezési csoport Service Fabric-bővítménytulajdonságainak NodeTypeRef tulajdonsága a megadott csomóponttípust a méretezési csoporthoz rendeli.

{
    "type": "Microsoft.Network/networkSecurityGroups",
    "name": "[concat('nsg', variables('subnet3Name'))]",
    "apiVersion": "2018-08-01",
    "location": "[resourceGroup().location]",
    "tags": {
        "resourceType": "Service Fabric",
        "clusterName": "[parameters('clusterName')]"
    },
    "properties": {
        "securityRules": [
            {
                "name": "allowSvcFabSMB",
                "properties": {
                    "access": "Allow",
                    "destinationAddressPrefix": "*",
                    "destinationPortRange": "445",
                    "direction": "Inbound",
                    "priority": 3950,
                    "protocol": "*",
                    "sourceAddressPrefix": "VirtualNetwork",
                    "sourcePortRange": "*",
                    "description": "allow SMB traffic within the net, used by fabric to move packages around"
                }
            },
            {
                "name": "allowSvcFabCluser",
                "properties": {
                    "access": "Allow",
                    "destinationAddressPrefix": "*",
                    "destinationPortRange": "1025-1027",
                    "direction": "Inbound",
                    "priority": 3920,
                    "protocol": "*",
                    "sourceAddressPrefix": "VirtualNetwork",
                    "sourcePortRange": "*",
                    "description": "allow ports within vnet that are used by the fabric to talk between nodes"
                }
            },
            {
                "name": "allowSvcFabEphemeral",
                "properties": {
                    "access": "Allow",
                    "destinationAddressPrefix": "*",
                    "destinationPortRange": "[concat(variables('nt3ephemeralStartPort'), '-', variables('nt3ephemeralEndPort'))]",
                    "direction": "Inbound",
                    "priority": 3930,
                    "protocol": "*",
                    "sourceAddressPrefix": "VirtualNetwork",
                    "sourcePortRange": "*",
                    "description": "allow fabric ephemeral ports within the vnet"
                }
            },
            {
                "name": "allowSvcFabPortal",
                "properties": {
                    "access": "Allow",
                    "destinationAddressPrefix": "*",
                    "destinationPortRange": "[variables('nt3fabricHttpGatewayPort')]",
                    "direction": "Inbound",
                    "priority": 3900,
                    "protocol": "*",
                    "sourceAddressPrefix": "*",
                    "sourcePortRange": "*",
                    "description": "allow port used to access the fabric cluster web portal"
                }
            },
            {
                "name": "allowSvcFabClient",
                "properties": {
                    "access": "Allow",
                    "destinationAddressPrefix": "*",
                    "destinationPortRange": "[variables('nt3fabricTcpGatewayPort')]",
                    "direction": "Inbound",
                    "priority": 3910,
                    "protocol": "*",
                    "sourceAddressPrefix": "*",
                    "sourcePortRange": "*",
                    "description": "allow port used by the fabric client (includes powershell)"
                }
            },
            {
                "name": "allowSvcFabApplication",
                "properties": {
                    "access": "Allow",
                    "destinationAddressPrefix": "*",
                    "destinationPortRange": "[concat(variables('nt3applicationStartPort'), '-', variables('nt3applicationEndPort'))]",
                    "direction": "Inbound",
                    "priority": 3940,
                    "protocol": "*",
                    "sourceAddressPrefix": "*",
                    "sourcePortRange": "*",
                    "description": "allow fabric application ports within the vnet"
                }
            },
            {
                "name": "blockAll",
                "properties": {
                    "access": "Deny",
                    "destinationAddressPrefix": "*",
                    "destinationPortRange": "*",
                    "direction": "Inbound",
                    "priority": 4095,
                    "protocol": "*",
                    "sourceAddressPrefix": "*",
                    "sourcePortRange": "*",
                    "description": "block all traffic except what we've explicitly allowed"
                }
            },
            {
                "name": "allowVNetRDP",
                "properties": {
                    "access": "Allow",
                    "destinationAddressPrefix": "*",
                    "destinationPortRange": "3389",
                    "direction": "Inbound",
                    "priority": 3960,
                    "protocol": "*",
                    "sourceAddressPrefix": "*",
                    "sourcePortRange": "*",
                    "description": "allow RDP within the net"
                }
            },
            {
                "name": "allowSvcFabReverseProxy",
                "properties": {
                    "access": "Allow",
                    "destinationAddressPrefix": "*",
                    "destinationPortRange": "[variables('nt3reverseProxyEndpointPort')]",
                    "direction": "Inbound",
                    "priority": 3980,
                    "protocol": "*",
                    "sourceAddressPrefix": "*",
                    "sourcePortRange": "*",
                    "description": "allow port used to access the fabric cluster using reverse proxy"
                }
            },
            {
                "name": "allowAppPort1",
                "properties": {
                    "access": "Allow",
                    "destinationAddressPrefix": "*",
                    "destinationPortRange": "[parameters('loadBalancedAppPort1')]",
                    "direction": "Inbound",
                    "priority": 2001,
                    "protocol": "*",
                    "sourceAddressPrefix": "*",
                    "sourcePortRange": "*",
                    "description": "allow public application port 1"
                }
            },
            {
                "name": "allowAppPort2",
                "properties": {
                    "access": "Allow",
                    "destinationAddressPrefix": "*",
                    "destinationPortRange": "[parameters('loadBalancedAppPort2')]",
                    "direction": "Inbound",
                    "priority": 2002,
                    "protocol": "*",
                    "sourceAddressPrefix": "*",
                    "sourcePortRange": "*",
                    "description": "allow public application port 2"
                }
            }
        ]
    }
},
{
    "type": "Microsoft.Compute/virtualMachineScaleSets",
    "sku": {
        "name": "[parameters('vmNodeType3Size')]",
        "capacity": "[parameters('nt3InstanceCount')]",
        "tier": "Standard"
    },
    "name": "[variables('vmNodeType3Name')]",
    "apiVersion": "2018-10-01",
    "location": "[variables('computeLocation')]",
    "tags": {
        "resourceType": "Service Fabric",
        "clusterName": "[parameters('clusterName')]"
    },
    "properties": {
        "overprovision": "[variables('overProvision')]",
        "upgradePolicy": {
            "mode": "Automatic"
        },
        "virtualMachineProfile": {
            "extensionProfile": {
                "extensions": [
                    {
                        "name": "[concat(variables('vmNodeType3Name'),'OMS')]",
                        "properties": {
                            "publisher": "Microsoft.EnterpriseCloud.Monitoring",
                            "type": "MicrosoftMonitoringAgent",
                            "typeHandlerVersion": "1.0",
                            "autoUpgradeMinorVersion": true,
                            "settings": {
                                "workspaceId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')), '2015-11-01-preview').customerId]"
                            },
                            "protectedSettings": {
                                "workspaceKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')),'2015-11-01-preview').primarySharedKey]"
                            }
                        }
                    },
                    {
                        "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType3Name')]",
                        "properties": {
                            "type": "ServiceFabricNode",
                            "autoUpgradeMinorVersion": true,
                            "protectedSettings": {
                                "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
                                "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key2]"
                            },
                            "publisher": "Microsoft.Azure.ServiceFabric",
                            "settings": {
                                "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
                                "nodeTypeRef": "[variables('vmNodeType3Name')]",
                                "dataPath": "D:\\SvcFab",
                                "durabilityLevel": "Silver",
                                "enableParallelJobs": true,
                                "nicPrefixOverride": "[variables('subnet3Prefix')]",
                                "certificate": {
                                    "thumbprint": "[parameters('certificateThumbprint')]",
                                    "x509StoreName": "[parameters('certificateStoreValue')]"
                                }
                            },
                            "typeHandlerVersion": "1.0"
                        }
                    },
                    {
                        "name": "[concat('VMDiagnosticsVmExt','_vmNodeType3Name')]",
                        "properties": {
                            "type": "IaaSDiagnostics",
                            "autoUpgradeMinorVersion": true,
                            "protectedSettings": {
                                "storageAccountName": "[variables('applicationDiagnosticsStorageAccountName')]",
                                "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
                                "storageAccountEndPoint": "https://core.windows.net/"
                            },
                            "publisher": "Microsoft.Azure.Diagnostics",
                            "settings": {
                                "WadCfg": {
                                    "DiagnosticMonitorConfiguration": {
                                        "overallQuotaInMB": "50000",
                                        "EtwProviders": {
                                            "EtwEventSourceProviderConfiguration": [
                                                {
                                                    "provider": "Microsoft-ServiceFabric-Actors",
                                                    "scheduledTransferKeywordFilter": "1",
                                                    "scheduledTransferPeriod": "PT5M",
                                                    "DefaultEvents": {
                                                        "eventDestination": "ServiceFabricReliableActorEventTable"
                                                    }
                                                },
                                                {
                                                    "provider": "Microsoft-ServiceFabric-Services",
                                                    "scheduledTransferPeriod": "PT5M",
                                                    "DefaultEvents": {
                                                        "eventDestination": "ServiceFabricReliableServiceEventTable"
                                                    }
                                                }
                                            ],
                                            "EtwManifestProviderConfiguration": [
                                                {
                                                    "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
                                                    "scheduledTransferLogLevelFilter": "Information",
                                                    "scheduledTransferKeywordFilter": "4611686018427387904",
                                                    "scheduledTransferPeriod": "PT5M",
                                                    "DefaultEvents": {
                                                        "eventDestination": "ServiceFabricSystemEventTable"
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                },
                                "StorageAccount": "[variables('applicationDiagnosticsStorageAccountName')]"
                            },
                            "typeHandlerVersion": "1.5"
                        }
                    },
                    {
                        "name": "[concat('VMIaaSAntimalware','_vmNodeType3Name')]",
                        "properties": {
                            "publisher": "Microsoft.Azure.Security",
                            "type": "IaaSAntimalware",
                            "typeHandlerVersion": "1.5",
                            "settings": {
                                "AntimalwareEnabled": "true",
                                "Exclusions": {
                                    "Paths": "D:\\SvcFab;D:\\SvcFab\\Log;C:\\Program Files\\Microsoft Service Fabric",
                                    "Processes": "Fabric.exe;FabricHost.exe;FabricInstallerService.exe;FabricSetup.exe;FabricDeployer.exe;ImageBuilder.exe;FabricGateway.exe;FabricDCA.exe;FabricFAS.exe;FabricUOS.exe;FabricRM.exe;FileStoreService.exe"
                                },
                                "RealtimeProtectionEnabled": "true",
                                "ScheduledScanSettings": {
                                    "isEnabled": "true",
                                    "scanType": "Quick",
                                    "day": "7",
                                    "time": "120"
                                }
                            },
                            "protectedSettings": null
                        }
                    }
                ]
            },
            "networkProfile": {
                "networkInterfaceConfigurations": [
                    {
                        "name": "[concat(variables('nicName'), '-2')]",
                        "properties": {
                            "ipConfigurations": [
                                {
                                    "name": "[concat(variables('nicName'),'-',2)]",
                                    "properties": {
                                        "loadBalancerBackendAddressPools": [
                                            {
                                                "id": "[variables('lbPoolID3')]"
                                            }
                                        ],
                                        "loadBalancerInboundNatPools": [
                                            {
                                                "id": "[variables('lbNatPoolID3')]"
                                            }
                                        ],
                                        "subnet": {
                                            "id": "[variables('subnet3Ref')]"
                                        }
                                    }
                                }
                            ],
                            "primary": true
                        }
                    }
                ]
            },
            "osProfile": {
                "adminPassword": "[parameters('adminPassword')]",
                "adminUsername": "[parameters('adminUsername')]",
                "computernamePrefix": "[variables('vmNodeType3Name')]",
                "secrets": [
                    {
                        "sourceVault": {
                            "id": "[parameters('sourceVaultValue')]"
                        },
                        "vaultCertificates": [
                            {
                                "certificateStore": "[parameters('certificateStoreValue')]",
                                "certificateUrl": "[parameters('certificateUrlValue')]"
                            }
                        ]
                    }
                ]
            },
            "storageProfile": {
                "imageReference": {
                    "publisher": "[parameters('vmImagePublisher')]",
                    "offer": "[parameters('vmImageOffer')]",
                    "sku": "[parameters('vmImageSku')]",
                    "version": "[parameters('vmImageVersion')]"
                },
                "osDisk": {
                    "caching": "ReadOnly",
                    "createOption": "FromImage",
                    "managedDisk": {
                        "storageAccountType": "[parameters('storageAccountType')]"
                    }
                }
            }
        }
    },
    "dependsOn": [
        "[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]",
        "[concat('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',variables('vmNodeType3Name')))]",
        "[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]",
        "[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]"
    ]
},

A template.json fájlban frissítse a fürterőforrást, és adjon hozzá egy új csomóponttípust:

{
    "type": "Microsoft.ServiceFabric/clusters",
    "name": "[parameters('clusterName')]",
    "apiVersion": "2018-02-01",
    "location": "[parameters('clusterLocation')]",
    "tags": {
        "resourceType": "Service Fabric",
        "clusterName": "[parameters('clusterName')]"
    },
    "properties": {
        "nodeTypes": [
            ...
            {
                "name": "[variables('vmNodeType3Name')]",
                "applicationPorts": {
                    "endPort": "[variables('nt3applicationEndPort')]",
                    "startPort": "[variables('nt3applicationStartPort')]"
                },
                "clientConnectionEndpointPort": "[variables('nt3fabricTcpGatewayPort')]",
                "durabilityLevel": "Silver",
                "ephemeralPorts": {
                    "endPort": "[variables('nt3ephemeralEndPort')]",
                    "startPort": "[variables('nt3ephemeralStartPort')]"
                },
                "httpGatewayEndpointPort": "[variables('nt3fabricHttpGatewayPort')]",
                "isPrimary": false,
                "reverseProxyEndpointPort": "[variables('nt3reverseProxyEndpointPort')]",
                "vmInstanceCount": "[parameters('nt3InstanceCount')]"
            }
        ],    
    }
}                

A parameters.json fájlban adja hozzá a következő új paramétereket és értékeket:

"nt3InstanceCount": {
    "Value": 5    
},
"vmNodeType3Size": {
    "Value": "Standard_D2_V2"
},

A frissített sablon üzembe helyezése

Mentse a template.json és parameters.json fájlok módosításait. A frissített sablon üzembe helyezéséhez futtassa a következő parancsot:

New-AzResourceGroupDeployment -ResourceGroupName sfclustertutorialgroup -TemplateFile c:\temp\template.json -TemplateParameterFile c:\temp\parameters.json -Name "AddingNodeType"

Vagy a következő Azure CLI-parancs:

az deployment group create --resource-group sfclustertutorialgroup --template-file c:\temp\template.json --parameters c:\temp\parameters.json

Csomóponttípus eltávolítása a fürtből

Service Fabric-fürt létrehozása után horizontálisan skálázhat egy fürtöt egy csomóponttípus (virtuálisgép-méretezési csoport) és annak összes csomópontjának eltávolításával. A fürtöt bármikor skálázhatja, még akkor is, ha számítási feladatok futnak a fürtön. A fürt méretezése során az alkalmazások is automatikusan skálázódnak.

Figyelmeztetés

A Remove-AzServiceFabricNodeType használata csomóponttípus éles fürtből való eltávolításához nem ajánlott gyakran használni. Ez egy veszélyes parancs, mivel törli a virtuálisgép-méretezési csoport erőforrását a csomóponttípus mögött.

A csomóponttípus eltávolításához futtassa a Remove-AzServiceFabricNodeType parancsmagot. A csomóponttípusnak Ezüst vagy Arany tartóssági szintnek kell lennie. A parancsmag törli a csomóponttípushoz társított méretezési csoportot, és némi időt vesz igénybe. Ezután futtassa a Remove-ServiceFabricNodeState parancsmagot az összes eltávolítandó csomóponton, amely törli a csomópont állapotát, és eltávolítja a csomópontokat a fürtből. Ha vannak szolgáltatások a csomópontokon, akkor a rendszer először áthelyezi a szolgáltatásokat egy másik csomópontra. Ha a fürtkezelő nem talál csomópontot a replikához/szolgáltatáshoz, akkor a művelet késik/le van tiltva.

$groupname = "sfclustertutorialgroup"
$nodetype = "nt4vm"
$clustername = "mysfcluster123"

Remove-AzServiceFabricNodeType -Name $clustername  -NodeType $nodetype -ResourceGroupName $groupname

Connect-ServiceFabricCluster -ConnectionEndpoint mysfcluster123.eastus.cloudapp.azure.com:19000 `
          -KeepAliveIntervalInSec 10 `
          -X509Credential -ServerCertThumbprint <thumbprint> `
          -FindType FindByThumbprint -FindValue <thumbprint> `
          -StoreLocation CurrentUser -StoreName My

$nodes = Get-ServiceFabricNode | Where-Object {$_.NodeType -eq $nodetype} | Sort-Object { $_.NodeName.Substring($_.NodeName.LastIndexOf('_') + 1) } -Descending

Foreach($node in $nodes)
{
    Remove-ServiceFabricNodeState -NodeName $node.NodeName -TimeoutSec 300 -Force 
}

Csomóponterőforrások növelése

Service Fabric-fürt létrehozása után vertikálisan skálázhat egy fürtcsomóponttípust (módosíthatja a csomópontok erőforrásait), vagy frissítheti a csomópont típusú virtuális gépek operációs rendszerét úgy, hogy az eredeti csomóponttípust lecseréli egy új csomóponttípusra (frissített virtuálisgép-termékváltozatra vagy operációsrendszer-lemezképre). További részletekért lásd : Azure Service Fabric-csomóponttípus vertikális felskálázása.

Fontos

Soha ne kísérelje meg a virtuálisgép-termékváltozat vagy operációs rendszer rendszerképének helyben történő módosítását, ami veszélyes művelet és nem támogatott.

Ha ez nem lehetséges, létrehozhat egy új fürtöt, és visszaállíthatja az alkalmazás állapotát (ha van ilyen) a régi fürtből. Nincs szükség a rendszerszolgáltatás állapotának visszaállítására; a rendszer újra létrehozza őket, amikor az alkalmazásokat az új fürtön helyezi üzembe. Ha csak állapot nélküli alkalmazásokat futtatott a fürtön, akkor mindössze annyit kell tennie, hogy üzembe helyezi az alkalmazásokat az új fürtön, nincs mit visszaállítania.

A sablon frissítése

Exportáljon egy sablon- és paraméterfájlt az erőforráscsoportból a legutóbbi üzembe helyezéshez. Nyissa meg a parameters.json fájlt. Ha ebben az oktatóanyagban a mintasablon használatával telepítette a fürtöt, a fürtben három csomóponttípus található.

A második csomóponttípusban lévő virtuális gépek mérete a vmNodeType1Size paraméterben van beállítva. Módosítsa a vmNodeType1Size paraméter értékét Standard_D2_V2 értékről Standard_D3_V2 értékre, ami megduplázza az egyes virtuálisgép-példányok erőforrásait.

A virtuálisgép-termékváltozat mindhárom csomóponttípushoz be van állítva a vmImageSku paraméterben. A csomóponttípus virtuálisgép-termékváltozatának módosítását is körültekintően kell megközelíteni, és nem ajánlott az elsődleges csomóponttípus esetében.

A frissített sablon üzembe helyezése

Mentse a template.json és parameters.json fájlok módosításait. A frissített sablon üzembe helyezéséhez futtassa a következő parancsot:

New-AzResourceGroupDeployment -ResourceGroupName sfclustertutorialgroup -TemplateFile c:\temp\template.json -TemplateParameterFile c:\temp\parameters.json -Name "ScaleUpNodeType"

Vagy a következő Azure CLI-parancs:

az deployment group create --resource-group sfclustertutorialgroup --template-file c:\temp\template.json --parameters c:\temp\parameters.json

Következő lépések

Ez az oktatóanyag bemutatta, hogyan végezheti el az alábbi műveleteket:

  • Csomópontok hozzáadása és eltávolítása (vertikális felskálázás és méretezés)
  • Csomóponttípusok hozzáadása és eltávolítása (vertikális felskálázás és méretezés)
  • Csomóponterőforrások növelése (vertikális felskálázás)

Folytassa a következő oktatóanyaggal, amelyben megismerheti, hogyan frissíthetők a fürtök futtatókörnyezetei.