Dela via


Nätverksmönster i Service Fabric

Du kan integrera ditt Azure Service Fabric-kluster med andra Azure-nätverksfunktioner. I den här artikeln visar vi hur du skapar kluster som använder följande funktioner:

Service Fabric körs i en standard vm-skalningsuppsättning. Alla funktioner som du kan använda i en VM-skalningsuppsättning kan du använda med ett Service Fabric-kluster. Nätverksavsnitten i Azure Resource Manager-mallarna för VM-skalningsuppsättningar och Service Fabric är identiska. När du har distribuerat till ett befintligt virtuellt nätverk är det enkelt att använda andra nätverksfunktioner, till exempel Azure ExpressRoute, Azure VPN Gateway, en nätverkssäkerhetsgrupp och peering för virtuella nätverk.

Låta Service Fabric-resursprovidern köra frågor mot klustret

Service Fabric är unikt från andra nätverksfunktioner i en aspekt. Azure-portalen använder internt Service Fabric-resursprovidern för att anropa till ett kluster för att hämta information om noder och program. Service Fabric-resursprovidern kräver offentligt tillgänglig inkommande åtkomst till HTTP-gatewayporten (port 19080, som standard) på hanteringsslutpunkten. Service Fabric Explorer använder hanteringsslutpunkten för att hantera klustret. Service Fabric-resursprovidern använder också den här porten för att fråga efter information om klustret som ska visas i Azure-portalen.

Om port 19080 inte är tillgänglig från Service Fabric-resursprovidern visas ett meddelande som Noder hittades inte i portalen och noden och programlistan visas tom. Om du vill se klustret i Azure-portalen måste lastbalanseraren exponera en offentlig IP-adress och nätverkssäkerhetsgruppen måste tillåta inkommande port 19080-trafik. Om konfigurationen inte uppfyller dessa krav visas inte status för klustret i Azure-portalen.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Mallar

Alla Service Fabric-mallar finns i GitHub. Du bör kunna distribuera mallarna som de är med hjälp av följande PowerShell-kommandon. Om du distribuerar den befintliga Azure Virtual Network-mallen eller den statiska offentliga IP-mallen läser du först avsnittet Inledande konfiguration i den här artikeln.

Inledande installation

Befintligt virtuellt nätverk

I följande exempel börjar vi med ett befintligt virtuellt nätverk med namnet ExistingRG-vnet i resursgruppen ExistingRG . Undernätet heter standard. Dessa standardresurser skapas när du använder Azure-portalen för att skapa en virtuell standarddator (VM). Du kan skapa det virtuella nätverket och undernätet utan att skapa den virtuella datorn, men huvudmålet med att lägga till ett kluster i ett befintligt virtuellt nätverk är att tillhandahålla nätverksanslutning till andra virtuella datorer. Att skapa den virtuella datorn är ett bra exempel på hur ett befintligt virtuellt nätverk vanligtvis används. Om Service Fabric-klustret bara använder en intern lastbalanserare, utan en offentlig IP-adress, kan du använda den virtuella datorn och dess offentliga IP-adress som en säker hoppruta.

Statisk offentlig IP-adress

En statisk offentlig IP-adress är vanligtvis en dedikerad resurs som hanteras separat från den virtuella dator eller de virtuella datorer som den har tilldelats. Den etableras i en dedikerad nätverksresursgrupp (till skillnad från i själva Service Fabric-klusterresursgruppen). Skapa en statisk offentlig IP-adress med namnet staticIP1 i samma ExistingRG-resursgrupp, antingen i Azure-portalen eller med hjälp av PowerShell:

PS C:\Users\user> New-AzPublicIpAddress -Name staticIP1 -ResourceGroupName ExistingRG -Location westus -AllocationMethod Static -DomainNameLabel sfnetworking

Name                     : staticIP1
ResourceGroupName        : ExistingRG
Location                 : westus
Id                       : /subscriptions/1237f4d2-3dce-1236-ad95-123f764e7123/resourceGroups/ExistingRG/providers/Microsoft.Network/publicIPAddresses/staticIP1
Etag                     : W/"fc8b0c77-1f84-455d-9930-0404ebba1b64"
ResourceGuid             : 77c26c06-c0ae-496c-9231-b1a114e08824
ProvisioningState        : Succeeded
Tags                     :
PublicIpAllocationMethod : Static
IpAddress                : 40.83.182.110
PublicIpAddressVersion   : IPv4
IdleTimeoutInMinutes     : 4
IpConfiguration          : null
DnsSettings              : {
                             "DomainNameLabel": "sfnetworking",
                             "Fqdn": "sfnetworking.westus.cloudapp.azure.com"
                           }

Service Fabric-mall

I exemplen i den här artikeln använder vi Service Fabric-template.json. Du kan använda guiden standardportal för att ladda ned mallen från portalen innan du skapar ett kluster. Du kan också använda en av exempelmallarna, till exempel det säkra Service Fabric-klustret med fem noder.

Befintligt virtuellt nätverk eller undernät

  1. Ändra undernätsparametern till namnet på det befintliga undernätet och lägg sedan till två nya parametrar för att referera till det befintliga virtuella nätverket:

        "subnet0Name": {
                "type": "string",
                "defaultValue": "default"
            },
            "existingVNetRGName": {
                "type": "string",
                "defaultValue": "ExistingRG"
            },
    
            "existingVNetName": {
                "type": "string",
                "defaultValue": "ExistingRG-vnet"
            },
            /*
            "subnet0Name": {
                "type": "string",
                "defaultValue": "Subnet-0"
            },
            "subnet0Prefix": {
                "type": "string",
                "defaultValue": "10.0.0.0/24"
            },*/
    

    Du kan också kommentera ut parametern med namnet "virtualNetworkName" så att du inte uppmanas att ange namnet på det virtuella nätverket två gånger på bladet för klusterdistribution i Azure-portalen.

  2. Kommentera ut nicPrefixOverride attributet Microsoft.Compute/virtualMachineScaleSetsför , eftersom du använder ett befintligt undernät och du har inaktiverat den här variabeln i steg 1.

            /*"nicPrefixOverride": "[parameters('subnet0Prefix')]",*/
    
  3. Ändra variabeln vnetID så att den pekar på det befintliga virtuella nätverket:

            /*old "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]",*/
            "vnetID": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('existingVNetRGName'), '/providers/Microsoft.Network/virtualNetworks/', parameters('existingVNetName'))]",
    
  4. Ta bort Microsoft.Network/virtualNetworks från dina resurser så att Azure inte skapar ett nytt virtuellt nätverk:

    /*{
    "apiVersion": "[variables('vNetApiVersion')]",
    "type": "Microsoft.Network/virtualNetworks",
    "name": "[parameters('virtualNetworkName')]",
    "location": "[parameters('computeLocation')]",
    "properties": {
        "addressSpace": {
            "addressPrefixes": [
                "[parameters('addressPrefix')]"
            ]
        },
        "subnets": [
            {
                "name": "[parameters('subnet0Name')]",
                "properties": {
                    "addressPrefix": "[parameters('subnet0Prefix')]"
                }
            }
        ]
    },
    "tags": {
        "resourceType": "Service Fabric",
        "clusterName": "[parameters('clusterName')]"
    }
    },*/
    
  5. Kommentera ut det virtuella nätverket från dependsOn attributet , så att du inte är beroende av Microsoft.Compute/virtualMachineScaleSetsatt skapa ett nytt virtuellt nätverk:

    "apiVersion": "[variables('vmssApiVersion')]",
    "type": "Microsoft.Computer/virtualMachineScaleSets",
    "name": "[parameters('vmNodeType0Name')]",
    "location": "[parameters('computeLocation')]",
    "dependsOn": [
        /*"[concat('Microsoft.Network/virtualNetworks/', parameters('virtualNetworkName'))]",
        */
        "[Concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[0])]",
    
    
  6. Distribuera mallen:

    New-AzResourceGroup -Name sfnetworkingexistingvnet -Location westus
    New-AzResourceGroupDeployment -Name deployment -ResourceGroupName sfnetworkingexistingvnet -TemplateFile C:\SFSamples\Final\template\_existingvnet.json
    

    Efter distributionen bör det virtuella nätverket innehålla de nya virtuella skalningsuppsättningarna. Nodtypen vm-skalningsuppsättning ska visa det befintliga virtuella nätverket och undernätet. Du kan också använda RDP (Remote Desktop Protocol) för att komma åt den virtuella dator som redan fanns i det virtuella nätverket och för att pinga de nya virtuella skalningsuppsättningarna:

    C:>\Users\users>ping 10.0.0.5 -n 1
    C:>\Users\users>ping NOde1000000 -n 1
    

Ett annat exempel finns i ett exempel som inte är specifikt för Service Fabric.

Statisk offentlig IP-adress

  1. Lägg till parametrar för namnet på den befintliga statiska IP-resursgruppen, namnet och det fullständigt kvalificerade domännamnet (FQDN):

    "existingStaticIPResourceGroup": {
                "type": "string"
            },
            "existingStaticIPName": {
                "type": "string"
            },
            "existingStaticIPDnsFQDN": {
                "type": "string"
    }
    
  2. Ta bort parametern dnsName . (Den statiska IP-adressen har redan en.)

    /*
    "dnsName": {
        "type": "string"
    },
    */
    
  3. Lägg till en variabel för att referera till den befintliga statiska IP-adressen:

    "existingStaticIP": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('existingStaticIPResourceGroup'), '/providers/Microsoft.Network/publicIPAddresses/', parameters('existingStaticIPName'))]",
    
  4. Ta bort Microsoft.Network/publicIPAddresses från dina resurser så att Azure inte skapar någon ny IP-adress:

    /*
    {
        "apiVersion": "[variables('publicIPApiVersion')]",
        "type": "Microsoft.Network/publicIPAddresses",
        "name": "[concat(parameters('lbIPName'),)'-', '0')]",
        "location": "[parameters('computeLocation')]",
        "properties": {
            "dnsSettings": {
                "domainNameLabel": "[parameters('dnsName')]"
            },
            "publicIPAllocationMethod": "Dynamic"        
        },
        "tags": {
            "resourceType": "Service Fabric",
            "clusterName": "[parameters('clusterName')]"
        }
    }, */
    
  5. Kommentera ut IP-adressen från dependsOn attributet , så att du inte är beroende av Microsoft.Network/loadBalancersatt skapa en ny IP-adress:

    "apiVersion": "[variables('lbIPApiVersion')]",
    "type": "Microsoft.Network/loadBalancers",
    "name": "[concat('LB', '-', parameters('clusterName'), '-', parameters('vmNodeType0Name'))]",
    "location": "[parameters('computeLocation')]",
    /*
    "dependsOn": [
        "[concat('Microsoft.Network/publicIPAddresses/', concat(parameters('lbIPName'), '-', '0'))]"
    ], */
    "properties": {
    
  6. I resursen Microsoft.Network/loadBalancers ändrar du elementet publicIPAddressfrontendIPConfigurations i så att det refererar till den befintliga statiska IP-adressen i stället för en nyskapad:

                "frontendIPConfigurations": [
                        {
                            "name": "LoadBalancerIPConfig",
                            "properties": {
                                "publicIPAddress": {
                                    /*"id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]"*/
                                    "id": "[variables('existingStaticIP')]"
                                }
                            }
                        }
                    ],
    
  7. I resursen Microsoft.ServiceFabric/clusters ändrar du managementEndpoint till DNS FQDN för den statiska IP-adressen. Om du använder ett säkert kluster måste du ändra http:// till https://. (Observera att det här steget endast gäller för Service Fabric-kluster. Om du använder en VM-skalningsuppsättning hoppar du över det här steget.)

                    "fabricSettings": [],
                    /*"managementEndpoint": "[concat('http://',reference(concat(parameters('lbIPName'),'-','0')).dnsSettings.fqdn,':',parameters('nt0fabricHttpGatewayPort'))]",*/
                    "managementEndpoint": "[concat('http://',parameters('existingStaticIPDnsFQDN'),':',parameters('nt0fabricHttpGatewayPort'))]",
    
  8. Distribuera mallen:

    New-AzResourceGroup -Name sfnetworkingstaticip -Location westus
    
    $staticip = Get-AzPublicIpAddress -Name staticIP1 -ResourceGroupName ExistingRG
    
    $staticip
    
    New-AzResourceGroupDeployment -Name deployment -ResourceGroupName sfnetworkingstaticip -TemplateFile C:\SFSamples\Final\template\_staticip.json -existingStaticIPResourceGroup $staticip.ResourceGroupName -existingStaticIPName $staticip.Name -existingStaticIPDnsFQDN $staticip.DnsSettings.Fqdn
    

Efter distributionen kan du se att lastbalanseraren är bunden till den offentliga statiska IP-adressen från den andra resursgruppen. Slutpunkten för Service Fabric-klientanslutningen och Service Fabric Explorer-slutpunkten pekar på DNS FQDN för den statiska IP-adressen.

Lastbalanserare endast internt

Det här scenariot ersätter den externa lastbalanseraren i service fabric-standardmallen med en intern lastbalanserare. Se tidigare i artikeln om konsekvenser för Azure-portalen och för Service Fabric-resursprovidern.

  1. Ta bort parametern dnsName . (Det behövs inte.)

    /*
    "dnsName": {
        "type": "string"
    },
    */
    
  2. Om du använder en statisk allokeringsmetod kan du lägga till en statisk IP-adressparameter. Om du använder en dynamisk allokeringsmetod behöver du inte göra det här steget.

            "internalLBAddress": {
                "type": "string",
                "defaultValue": "10.0.0.250"
            }
    
  3. Ta bort Microsoft.Network/publicIPAddresses från dina resurser så att Azure inte skapar någon ny IP-adress:

    /*
    {
        "apiVersion": "[variables('publicIPApiVersion')]",
        "type": "Microsoft.Network/publicIPAddresses",
        "name": "[concat(parameters('lbIPName'),)'-', '0')]",
        "location": "[parameters('computeLocation')]",
        "properties": {
            "dnsSettings": {
                "domainNameLabel": "[parameters('dnsName')]"
            },
            "publicIPAllocationMethod": "Dynamic"        
        },
        "tags": {
            "resourceType": "Service Fabric",
            "clusterName": "[parameters('clusterName')]"
        }
    }, */
    
  4. Ta bort IP-adressattributet dependsOn för , så att du inte är beroende av Microsoft.Network/loadBalancersatt skapa en ny IP-adress. Lägg till attributet för virtuellt nätverk dependsOn eftersom lastbalanseraren nu är beroende av undernätet från det virtuella nätverket:

                "apiVersion": "[variables('lbApiVersion')]",
                "type": "Microsoft.Network/loadBalancers",
                "name": "[concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name'))]",
                "location": "[parameters('computeLocation')]",
                "dependsOn": [
                    /*"[concat('Microsoft.Network/publicIPAddresses/',concat(parameters('lbIPName'),'-','0'))]"*/
                    "[concat('Microsoft.Network/virtualNetworks/',parameters('virtualNetworkName'))]"
                ],
    
  5. Ändra lastbalanserarens frontendIPConfigurations inställning från att använda ett publicIPAddress, till att använda ett undernät och privateIPAddress. privateIPAddress använder en fördefinierad statisk intern IP-adress. Om du vill använda en dynamisk IP-adress tar du bort elementet privateIPAddress och ändrar privateIPAllocationMethod sedan till Dynamisk.

                "frontendIPConfigurations": [
                        {
                            "name": "LoadBalancerIPConfig",
                            "properties": {
                                /*
                                "publicIPAddress": {
                                    "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]"
                                } */
                                "subnet" :{
                                    "id": "[variables('subnet0Ref')]"
                                },
                                "privateIPAddress": "[parameters('internalLBAddress')]",
                                "privateIPAllocationMethod": "Static"
                            }
                        }
                    ],
    
  6. I resursen Microsoft.ServiceFabric/clusters ändrar du managementEndpoint så att den pekar på den interna lastbalanserarens adress. Om du använder ett säkert kluster måste du ändra http:// till https://. (Observera att det här steget endast gäller för Service Fabric-kluster. Om du använder en VM-skalningsuppsättning hoppar du över det här steget.)

                    "fabricSettings": [],
                    /*"managementEndpoint": "[concat('http://',reference(concat(parameters('lbIPName'),'-','0')).dnsSettings.fqdn,':',parameters('nt0fabricHttpGatewayPort'))]",*/
                    "managementEndpoint": "[concat('http://',reference(variables('lbID0')).frontEndIPConfigurations[0].properties.privateIPAddress,':',parameters('nt0fabricHttpGatewayPort'))]",
    
  7. Distribuera mallen:

    New-AzResourceGroup -Name sfnetworkinginternallb -Location westus
    
    New-AzResourceGroupDeployment -Name deployment -ResourceGroupName sfnetworkinginternallb -TemplateFile C:\SFSamples\Final\template\_internalonlyLB.json
    

Efter distributionen använder lastbalanseraren den privata statiska IP-adressen 10.0.0.250. Om du har en annan dator i samma virtuella nätverk kan du gå till den interna Service Fabric Explorer-slutpunkten . Observera att den ansluter till en av noderna bakom lastbalanseraren.

Intern och extern lastbalanserare

I det här scenariot börjar du med den befintliga externa lastbalanseraren av typen enskild nod och lägger till en intern lastbalanserare för samma nodtyp. En serverdelsport som är kopplad till en serverdelsadresspool kan endast tilldelas till en enda lastbalanserare. Välj vilken lastbalanserare som ska ha programportarna och vilken lastbalanserare som ska ha dina hanteringsslutpunkter (portarna 19000 och 19080). Om du placerar hanteringsslutpunkterna på den interna lastbalanseraren bör du tänka på begränsningarna för Service Fabric-resursprovidern som beskrevs tidigare i artikeln. I det exempel vi använder finns hanteringsslutpunkterna kvar på den externa lastbalanseraren. Du lägger också till en port 80-programport och placerar den på den interna lastbalanseraren.

I ett kluster av typen två noder finns en nodtyp i den externa lastbalanseraren. Den andra nodtypen finns i den interna lastbalanseraren. Om du vill använda ett kluster av typen två noder växlar du den andra lastbalanseraren till en intern lastbalanserare i mallen av typen två noder (som levereras med två lastbalanserare). Mer information finns i avsnittet Med endast intern lastbalanserare .

  1. Lägg till ip-adressparametern för den statiska interna lastbalanseraren. (Information om hur du använder en dynamisk IP-adress finns i tidigare avsnitt i den här artikeln.)

            "internalLBAddress": {
                "type": "string",
                "defaultValue": "10.0.0.250"
            }
    
  2. Lägg till en programport 80-parameter.

  3. Om du vill lägga till interna versioner av befintliga nätverksvariabler kopierar och klistrar du in dem och lägger till "-Int" i namnet:

    /* Add internal load balancer networking variables */
            "lbID0-Int": "[resourceId('Microsoft.Network/loadBalancers', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name'), '-Internal'))]",
            "lbIPConfig0-Int": "[concat(variables('lbID0-Int'),'/frontendIPConfigurations/LoadBalancerIPConfig')]",
            "lbPoolID0-Int": "[concat(variables('lbID0-Int'),'/backendAddressPools/LoadBalancerBEAddressPool')]",
            "lbProbeID0-Int": "[concat(variables('lbID0-Int'),'/probes/FabricGatewayProbe')]",
            "lbHttpProbeID0-Int": "[concat(variables('lbID0-Int'),'/probes/FabricHttpGatewayProbe')]",
            "lbNatPoolID0-Int": "[concat(variables('lbID0-Int'),'/inboundNatPools/LoadBalancerBEAddressNatPool')]",
            /* Internal load balancer networking variables end */
    
  4. Om du börjar med den portalgenererade mallen som använder programport 80 lägger standardportalmallen till AppPort1 (port 80) på den externa lastbalanseraren. I det här fallet tar du bort AppPort1 från den externa lastbalanseraren loadBalancingRules och avsökningarna, så att du kan lägga till den i den interna lastbalanseraren:

    "loadBalancingRules": [
        {
            "name": "LBHttpRule",
            "properties":{
                "backendAddressPool": {
                    "id": "[variables('lbPoolID0')]"
                },
                "backendPort": "[parameters('nt0fabricHttpGatewayPort')]",
                "enableFloatingIP": "false",
                "frontendIPConfiguration": {
                    "id": "[variables('lbIPConfig0')]"            
                },
                "frontendPort": "[parameters('nt0fabricHttpGatewayPort')]",
                "idleTimeoutInMinutes": "5",
                "probe": {
                    "id": "[variables('lbHttpProbeID0')]"
                },
                "protocol": "tcp"
            }
        } /* Remove AppPort1 from the external load balancer.
        {
            "name": "AppPortLBRule1",
            "properties": {
                "backendAddressPool": {
                    "id": "[variables('lbPoolID0')]"
                },
                "backendPort": "[parameters('loadBalancedAppPort1')]",
                "enableFloatingIP": "false",
                "frontendIPConfiguration": {
                    "id": "[variables('lbIPConfig0')]"            
                },
                "frontendPort": "[parameters('loadBalancedAppPort1')]",
                "idleTimeoutInMinutes": "5",
                "probe": {
                    "id": "[concate(variables('lbID0'), '/probes/AppPortProbe1')]"
                },
                "protocol": "tcp"
            }
        }*/
    
    ],
    "probes": [
        {
            "name": "FabricGatewayProbe",
            "properties": {
                "intervalInSeconds": 5,
                "numberOfProbes": 2,
                "port": "[parameters('nt0fabricTcpGatewayPort')]",
                "protocol": "tcp"
            }
        },
        {
            "name": "FabricHttpGatewayProbe",
            "properties": {
                "intervalInSeconds": 5,
                "numberOfProbes": 2,
                "port": "[parameters('nt0fabricHttpGatewayPort')]",
                "protocol": "tcp"
            }
        } /* Remove AppPort1 from the external load balancer.
        {
            "name": "AppPortProbe1",
            "properties": {
                "intervalInSeconds": 5,
                "numberOfProbes": 2,
                "port": "[parameters('loadBalancedAppPort1')]",
                "protocol": "tcp"
            }
        } */
    
    ],
    "inboundNatPools": [
    
  5. Lägg till en andra Microsoft.Network/loadBalancers resurs. Det ser ut ungefär som den interna lastbalanseraren som skapades i avsnittet Intern lastbalanserare , men den använder lastbalanseraren "-Int" och implementerar endast programporten 80. Detta tar också bort inboundNatPools, för att behålla RDP-slutpunkter på den offentliga lastbalanseraren. Om du vill ha RDP på den interna lastbalanseraren går du inboundNatPools från den externa lastbalanseraren till den här interna lastbalanseraren:

            /* Add a second load balancer, configured with a static privateIPAddress and the "-Int" load balancer variables. */
            {
                "apiVersion": "[variables('lbApiVersion')]",
                "type": "Microsoft.Network/loadBalancers",
                /* Add "-Internal" to the name. */
                "name": "[concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name'), '-Internal')]",
                "location": "[parameters('computeLocation')]",
                "dependsOn": [
                    /* Remove public IP dependsOn, add vnet dependsOn
                    "[concat('Microsoft.Network/publicIPAddresses/',concat(parameters('lbIPName'),'-','0'))]"
                    */
                    "[concat('Microsoft.Network/virtualNetworks/',parameters('virtualNetworkName'))]"
                ],
                "properties": {
                    "frontendIPConfigurations": [
                        {
                            "name": "LoadBalancerIPConfig",
                            "properties": {
                                /* Switch from Public to Private IP address
                                */
                                "publicIPAddress": {
                                    "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]"
                                }
                                */
                                "subnet" :{
                                    "id": "[variables('subnet0Ref')]"
                                },
                                "privateIPAddress": "[parameters('internalLBAddress')]",
                                "privateIPAllocationMethod": "Static"
                            }
                        }
                    ],
                    "backendAddressPools": [
                        {
                            "name": "LoadBalancerBEAddressPool",
                            "properties": {}
                        }
                    ],
                    "loadBalancingRules": [
                        /* Add the AppPort rule. Be sure to reference the "-Int" versions of backendAddressPool, frontendIPConfiguration, and the probe variables. */
                        {
                            "name": "AppPortLBRule1",
                            "properties": {
                                "backendAddressPool": {
                                    "id": "[variables('lbPoolID0-Int')]"
                                },
                                "backendPort": "[parameters('loadBalancedAppPort1')]",
                                "enableFloatingIP": "false",
                                "frontendIPConfiguration": {
                                    "id": "[variables('lbIPConfig0-Int')]"
                                },
                                "frontendPort": "[parameters('loadBalancedAppPort1')]",
                                "idleTimeoutInMinutes": "5",
                                "probe": {
                                    "id": "[concat(variables('lbID0-Int'),'/probes/AppPortProbe1')]"
                                },
                                "protocol": "tcp"
                            }
                        }
                    ],
                    "probes": [
                    /* Add the probe for the app port. */
                    {
                            "name": "AppPortProbe1",
                            "properties": {
                                "intervalInSeconds": 5,
                                "numberOfProbes": 2,
                                "port": "[parameters('loadBalancedAppPort1')]",
                                "protocol": "tcp"
                            }
                        }
                    ],
                    "inboundNatPools": [
                    ]
                },
                "tags": {
                    "resourceType": "Service Fabric",
                    "clusterName": "[parameters('clusterName')]"
                }
            },
    
  6. Lägg networkProfile till den interna serverdelsadresspoolen för resursen Microsoft.Compute/virtualMachineScaleSets :

    "loadBalancerBackendAddressPools": [
                                                        {
                                                            "id": "[variables('lbPoolID0')]"
                                                        },
                                                        {
                                                            /* Add internal BE pool */
                                                            "id": "[variables('lbPoolID0-Int')]"
                                                        }
    ],
    
  7. Distribuera mallen:

    New-AzResourceGroup -Name sfnetworkinginternalexternallb -Location westus
    
    New-AzResourceGroupDeployment -Name deployment -ResourceGroupName sfnetworkinginternalexternallb -TemplateFile C:\SFSamples\Final\template\_internalexternalLB.json
    

Efter distributionen kan du se två lastbalanserare i resursgruppen. Om du bläddrar bland lastbalanserarna kan du se den offentliga IP-adressen och hanteringsslutpunkterna (portarna 19000 och 19080) tilldelade till den offentliga IP-adressen. Du kan också se den statiska interna IP-adressen och programslutpunkten (port 80) som tilldelats den interna lastbalanseraren. Båda lastbalanserarna använder samma vm-skalningsuppsättningsserverdelspool.

Anteckningar för produktionsarbetsbelastningar

Ovanstående GitHub-mallar är utformade för att fungera med standard-SKU:n för Azure Standard Load Balancer (SLB), Basic SKU. Basic SKU LB har inget serviceavtal, så för produktionsarbetsbelastningar ska standard-SKU:n användas. Mer information om detta finns i Översikt över Azure Standard Load Balancer. Alla Service Fabric-kluster som använder Standard SKU för SLB måste se till att varje nodtyp har en regel som tillåter utgående trafik på port 443. Detta är nödvändigt för att slutföra klusterkonfigurationen, och all distribution utan en sådan regel misslyckas. I exemplet ovan av en "endast intern" lastbalanserare måste ytterligare en extern lastbalanserare läggas till i mallen med en regel som tillåter utgående trafik för port 443.

Nästa steg

Skapa ett kluster