Sdílet prostřednictvím


Vzory sítí na platformě Service Fabric

Cluster Azure Service Fabric můžete integrovat s dalšími síťovými funkcemi Azure. V tomto článku vám ukážeme, jak vytvořit clustery, které používají následující funkce:

Service Fabric běží ve standardní škálovací sadě virtuálních počítačů. Všechny funkce, které můžete použít ve škálovací sadě virtuálních počítačů, můžete použít s clusterem Service Fabric. Oddíly sítí šablon Azure Resource Manageru pro škálovací sady virtuálních počítačů a Service Fabric jsou identické. Po nasazení do existující virtuální sítě je snadné začlenit další síťové funkce, jako je Azure ExpressRoute, Azure VPN Gateway, skupina zabezpečení sítě a partnerský vztah virtuálních sítí.

Povolení dotazování clusteru poskytovatelem prostředků Service Fabric

Service Fabric je v jednom aspektu jedinečný od jiných síťových funkcí. Azure Portal interně používá poskytovatele prostředků Service Fabric k volání do clusteru, aby získal informace o uzlech a aplikacích. Poskytovatel prostředků Service Fabric vyžaduje veřejně přístupný příchozí přístup k portu brány HTTP (ve výchozím nastavení port 19080) koncového bodu správy. Service Fabric Explorer ke správě clusteru používá koncový bod správy. Poskytovatel prostředků Service Fabric používá tento port také k dotazování informací o vašem clusteru, aby se zobrazil na webu Azure Portal.

Pokud port 19080 není přístupný od poskytovatele prostředků Service Fabric, zobrazí se na portálu zpráva typu Uzly nenalezena a váš uzel a seznam aplikací je prázdný. Pokud chcete cluster zobrazit na webu Azure Portal, musí váš nástroj pro vyrovnávání zatížení zveřejnit veřejnou IP adresu a vaše skupina zabezpečení sítě musí povolit příchozí provoz na portu 19080. Pokud vaše nastavení nesplňuje tyto požadavky, Azure Portal nezobrazuje stav clusteru.

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Pokud chcete začít, přečtěte si téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Šablony

Všechny šablony Service Fabric jsou na GitHubu. Šablony byste měli být schopni nasadit tak, jak jsou, pomocí následujících příkazů PowerShellu. Pokud nasazujete existující šablonu služby Azure Virtual Network nebo statickou veřejnou IP adresu, přečtěte si nejprve část Počáteční nastavení tohoto článku.

Počáteční nastavení

Stávající virtuální síť

V následujícím příkladu začneme existující virtuální sítí s názvem ExistingRG-vnet ve skupině prostředků ExistingRG . Podsíť má výchozí název. Tyto výchozí prostředky se vytvoří při vytvoření standardního virtuálního počítače pomocí webu Azure Portal. Virtuální síť a podsíť můžete vytvořit bez vytvoření virtuálního počítače, ale hlavním cílem přidání clusteru do existující virtuální sítě je poskytnout síťové připojení k jiným virtuálním počítačům. Vytvoření virtuálního počítače poskytuje dobrý příklad toho, jak se obvykle používá existující virtuální síť. Pokud váš cluster Service Fabric používá pouze interní nástroj pro vyrovnávání zatížení bez veřejné IP adresy, můžete virtuální počítač a jeho veřejnou IP adresu použít jako zabezpečený jump box.

Statická veřejná IP adresa

Statická veřejná IP adresa je obecně vyhrazený prostředek, který se spravuje odděleně od virtuálního počítače nebo virtuálních počítačů, ke kterým je přiřazený. Zřizuje se ve vyhrazené skupině síťových prostředků (na rozdíl od samotné skupiny prostředků clusteru Service Fabric). Vytvořte statickou veřejnou IP adresu s názvem staticIP1 ve stejné skupině prostředků ExistingRG, a to buď na webu Azure Portal, nebo pomocí PowerShellu:

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"
                           }

Šablona Service Fabric

V příkladech v tomto článku používáme template.json Service Fabric. Před vytvořením clusteru můžete šablonu stáhnout z portálu pomocí standardního průvodce portálem. Můžete také použít jednu z ukázkových šablon, jako je zabezpečený cluster Service Fabric s pěti uzly.

Existující virtuální síť nebo podsíť

  1. Změňte parametr podsítě na název existující podsítě a přidejte dva nové parametry, které budou odkazovat na existující virtuální síť:

        "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"
            },*/
    

    Parametr s názvem "virtualNetworkName" můžete zakomentovat, takže vás nebude vyzvat k zadání názvu virtuální sítě dvakrát v okně nasazení clusteru na webu Azure Portal.

  2. Zakomentujte nicPrefixOverride atribut Microsoft.Compute/virtualMachineScaleSets, protože používáte existující podsíť a tuto proměnnou jste zakázali v kroku 1.

            /*"nicPrefixOverride": "[parameters('subnet0Prefix')]",*/
    
  3. Změňte proměnnou vnetID tak, aby odkazovat na existující virtuální síť:

            /*old "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]",*/
            "vnetID": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('existingVNetRGName'), '/providers/Microsoft.Network/virtualNetworks/', parameters('existingVNetName'))]",
    
  4. Odeberte Microsoft.Network/virtualNetworks z prostředků, takže Azure nevytvoří novou virtuální síť:

    /*{
    "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. Zakomentujte virtuální síť z atributu dependsOn , Microsoft.Compute/virtualMachineScaleSetstakže nezávisíte na vytvoření nové virtuální sítě:

    "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. Nasazení šablony:

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

    Po nasazení by vaše virtuální síť měla obsahovat nové virtuální počítače škálovací sady. Typ uzlu škálovací sady virtuálních počítačů by měl zobrazit existující virtuální síť a podsíť. Můžete také použít protokol RDP (Remote Desktop Protocol) pro přístup k virtuálnímu počítači, který už byl ve virtuální síti, a k příkazu ping na nové virtuální počítače škálovací sady:

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

Další příklad najdete v příkladu, který není specifický pro Service Fabric.

Statická veřejná IP adresa

  1. Přidejte parametry pro název existující skupiny prostředků statické IP adresy, názvu a plně kvalifikovaného názvu domény (FQDN):

    "existingStaticIPResourceGroup": {
                "type": "string"
            },
            "existingStaticIPName": {
                "type": "string"
            },
            "existingStaticIPDnsFQDN": {
                "type": "string"
    }
    
  2. dnsName Odeberte parametr. (Statická IP adresa už ji má.)

    /*
    "dnsName": {
        "type": "string"
    },
    */
    
  3. Přidejte proměnnou pro odkaz na existující statickou IP adresu:

    "existingStaticIP": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('existingStaticIPResourceGroup'), '/providers/Microsoft.Network/publicIPAddresses/', parameters('existingStaticIPName'))]",
    
  4. Odeberte Microsoft.Network/publicIPAddresses z prostředků, takže Azure nevytvoří novou IP adresu:

    /*
    {
        "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. Zakomentujte IP adresu z atributu dependsOn , Microsoft.Network/loadBalancerstakže nezávisíte na vytvoření nové IP adresy:

    "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. Microsoft.Network/loadBalancers V prostředku změňte publicIPAddress prvek frontendIPConfigurations odkazující na existující statickou IP adresu místo nově vytvořené ip adresy:

                "frontendIPConfigurations": [
                        {
                            "name": "LoadBalancerIPConfig",
                            "properties": {
                                "publicIPAddress": {
                                    /*"id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]"*/
                                    "id": "[variables('existingStaticIP')]"
                                }
                            }
                        }
                    ],
    
  7. Microsoft.ServiceFabric/clusters V prostředku přejděte managementEndpoint na plně kvalifikovaný název domény DNS statické IP adresy. Pokud používáte zabezpečený cluster, nezapomeňte změnit http:// na https://. (Tento krok platí jenom pro clustery Service Fabric. Pokud používáte škálovací sadu virtuálních počítačů, přeskočte tento krok.)

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

    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
    

Po nasazení uvidíte, že váš nástroj pro vyrovnávání zatížení je svázaný s veřejnou statickou IP adresou z druhé skupiny prostředků. Koncový bod připojení klienta Service Fabric a koncový bod Service Fabric Exploreru odkazují na plně kvalifikovaný název domény DNS statické IP adresy.

Interní nástroj pro vyrovnávání zatížení

Tento scénář nahrazuje externí nástroj pro vyrovnávání zatížení ve výchozí šabloně Service Fabric interním nástrojem pro vyrovnávání zatížení. Důsledky pro Azure Portal a poskytovatele prostředků Service Fabric najdete v dřívější části článku .

  1. dnsName Odeberte parametr. (Není to potřeba.)

    /*
    "dnsName": {
        "type": "string"
    },
    */
    
  2. Pokud používáte statickou metodu přidělování, můžete volitelně přidat parametr statické IP adresy. Pokud používáte metodu dynamického přidělování, nemusíte tento krok provádět.

            "internalLBAddress": {
                "type": "string",
                "defaultValue": "10.0.0.250"
            }
    
  3. Odeberte Microsoft.Network/publicIPAddresses z prostředků, takže Azure nevytvoří novou IP adresu:

    /*
    {
        "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. Odeberte atribut Microsoft.Network/loadBalancersIP adresy dependsOn , takže nezávisíte na vytvoření nové IP adresy. Přidejte atribut virtuální sítě dependsOn , protože nástroj pro vyrovnávání zatížení teď závisí na podsíti z virtuální sítě:

                "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. Změňte nastavení nástroje pro vyrovnávání frontendIPConfigurations zatížení z použití podsítě publicIPAddressna podsíť a privateIPAddress. privateIPAddress používá předdefinovanou statickou interní IP adresu. Pokud chcete použít dynamickou IP adresu, odeberte privateIPAddress prvek a pak přejděte privateIPAllocationMethod na Dynamic.

                "frontendIPConfigurations": [
                        {
                            "name": "LoadBalancerIPConfig",
                            "properties": {
                                /*
                                "publicIPAddress": {
                                    "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]"
                                } */
                                "subnet" :{
                                    "id": "[variables('subnet0Ref')]"
                                },
                                "privateIPAddress": "[parameters('internalLBAddress')]",
                                "privateIPAllocationMethod": "Static"
                            }
                        }
                    ],
    
  6. Microsoft.ServiceFabric/clusters V prostředku změňte managementEndpoint ukazatel na adresu interního nástroje pro vyrovnávání zatížení. Pokud používáte zabezpečený cluster, nezapomeňte změnit http:// na https://. (Tento krok platí jenom pro clustery Service Fabric. Pokud používáte škálovací sadu virtuálních počítačů, přeskočte tento krok.)

                    "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. Nasazení šablony:

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

Po nasazení použije nástroj pro vyrovnávání zatížení privátní statickou IP adresu 10.0.0.250. Pokud máte ve stejné virtuální síti jiný počítač, můžete přejít na interní koncový bod Service Fabric Exploreru . Všimněte si, že se připojuje k jednomu z uzlů za nástrojem pro vyrovnávání zatížení.

Interní a externí nástroj pro vyrovnávání zatížení

V tomto scénáři začnete s existujícím externím nástrojem pro vyrovnávání zatížení s jedním uzlem a přidáte interní nástroj pro vyrovnávání zatížení pro stejný typ uzlu. Back-endový port připojený k back-endovém fondu adres se dá přiřadit jenom jednomu nástroji pro vyrovnávání zatížení. Vyberte, který nástroj pro vyrovnávání zatížení bude mít porty aplikace a který nástroj pro vyrovnávání zatížení bude obsahovat koncové body správy (porty 19000 a 19080). Pokud umístíte koncové body správy do interního nástroje pro vyrovnávání zatížení, mějte na paměti omezení poskytovatele prostředků Service Fabric, která jsou popsána výše v článku. V příkladu, který používáme, zůstanou koncové body správy na externím nástroji pro vyrovnávání zatížení. Přidáte také port aplikace 80 a umístíte ho do interního nástroje pro vyrovnávání zatížení.

V clusteru se dvěma uzly je jeden typ uzlu v externím nástroji pro vyrovnávání zatížení. Druhý typ uzlu je v interním nástroji pro vyrovnávání zatížení. Pokud chcete použít cluster se dvěma uzly, přepněte druhý nástroj pro vyrovnávání zatížení na interní nástroj pro vyrovnávání zatížení v šabloně typu dva uzly na portálu vytvořené se dvěma moduly pro vyrovnávání zatížení. Další informace najdete v části Interní nástroj pro vyrovnávání zatížení.

  1. Přidejte parametr IP adresy interního interního nástroje pro vyrovnávání zatížení. (Poznámky týkající se použití dynamické IP adresy najdete v předchozích částech tohoto článku.)

            "internalLBAddress": {
                "type": "string",
                "defaultValue": "10.0.0.250"
            }
    
  2. Přidejte parametr portu aplikace 80.

  3. Pokud chcete přidat interní verze existujících síťových proměnných, zkopírujte je a vložte a do názvu přidejte "-Int":

    /* 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. Pokud začnete s šablonou vygenerovanou portálem, která používá port 80 aplikace, přidá výchozí šablona portálu do externího nástroje pro vyrovnávání zatížení AppPort1 (port 80). V tomto případě odeberte AppPort1 z externího nástroje loadBalancingRules pro vyrovnávání zatížení a sondy, abyste ho mohli přidat do interního nástroje pro vyrovnávání zatížení:

    "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. Přidejte druhý Microsoft.Network/loadBalancers prostředek. Vypadá podobně jako interní nástroj pro vyrovnávání zatížení vytvořený v části Nástroje pro vyrovnávání zatížení jen pro interní prostředí, ale používá proměnné nástroje pro vyrovnávání zatížení "-Int" a implementuje pouze port aplikace 80. Tím se také odeberou inboundNatPoolskoncové body protokolu RDP ve veřejném nástroji pro vyrovnávání zatížení. Pokud chcete použít protokol RDP v interním nástroji pro vyrovnávání zatížení, přejděte inboundNatPools z externího nástroje pro vyrovnávání zatížení na tento interní nástroj pro vyrovnávání zatížení:

            /* 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. Microsoft.Compute/virtualMachineScaleSets Do networkProfile prostředku přidejte interní back-endový fond adres:

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

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

Po nasazení se ve skupině prostředků zobrazí dva nástroje pro vyrovnávání zatížení. Pokud procházíte nástroje pro vyrovnávání zatížení, uvidíte veřejné IP adresy a koncové body správy (porty 19000 a 19080) přiřazené k veřejné IP adrese. Můžete také zobrazit statickou interní IP adresu a koncový bod aplikace (port 80) přiřazený internímu nástroji pro vyrovnávání zatížení. Oba nástroje pro vyrovnávání zatížení používají stejný back-endový fond škálovací sady virtuálních počítačů.

Poznámky k produkčním úlohám

Výše uvedené šablony GitHubu jsou navržené tak, aby fungovaly s výchozí skladovou jednotkou pro Azure Standard Load Balancer (SLB), skladovou položku Basic. SKU Basic nemá žádnou smlouvu SLA, takže pro produkční úlohy by se měla použít skladová položka Standard. Další informace najdete v přehledu Azure Standard Load Balanceru. Každý cluster Service Fabric, který používá skladovou položku Standard pro SLB, musí zajistit, aby každý typ uzlu používal pravidlo umožňující odchozí provoz na portu 443. To je nezbytné k dokončení nastavení clusteru a jakékoli nasazení bez takového pravidla selže. Ve výše uvedeném příkladu nástroje pro vyrovnávání zatížení "pouze interní" musí být do šablony přidán další externí nástroj pro vyrovnávání zatížení s pravidlem, které povoluje odchozí provoz pro port 443.

Další kroky

Vytvoření clusteru