Pola jaringan Service Fabric

Anda dapat mengintegrasikan kluster Azure Service Fabric Anda dengan fitur jaringan Azure lainnya. Dalam artikel ini, kami menunjukkan cara membuat kluster yang menggunakan fitur berikut:

Service Fabric berjalan dalam set skala komputer virtual standar. Fungsionalitas apa pun yang dapat Anda gunakan dalam set skala komputer virtual dapat digunakan dengan kluster Service Fabric. Bagian jaringan templat Azure Resource Manager untuk set skala komputer virtual dan Service Fabric bersifat identik. Setelah Anda menyebarkan ke jaringan virtual yang ada, mudah untuk menggabungkan fitur jaringan lain, seperti Azure ExpressRoute, Azure VPN Gateway, grup keamanan jaringan, dan peering jaringan virtual.

Memperbolehkan penyedia sumber daya Service Fabric untuk meminta kluster Anda

Service Fabric memiliki keunikan dibandingkan fitur jaringan lain dalam satu aspek. Portal Azure secara internal menggunakan penyedia sumber daya Service Fabric untuk memanggil kluster guna mendapatkan informasi tentang node dan aplikasi. Penyedia sumber daya Service Fabric memerlukan akses masuk yang dapat diakses publik ke port gateway HTTP (port 19080, secara default) pada titik akhir manajemen. Service Fabric Explorer menggunakan titik akhir manajemen untuk mengelola kluster Anda. Penyedia sumber daya Service Fabric juga menggunakan port ini untuk meminta informasi tentang kluster Anda untuk ditampilkan di portal Azure.

Jika port 19080 tidak dapat diakses dari penyedia sumber daya Service Fabric, pesan seperti Node Tidak Ditemukan akan muncul di portal, serta daftar aplikasi dan node Anda akan tampak kosong. Jika Anda ingin melihat kluster di portal Azure, penyeimbang beban Anda harus menampilkan alamat IP publik, dan grup keamanan jaringan Anda harus memperbolehkan lalu lintas port 19080 masuk. Jika penyiapan Anda tidak memenuhi persyaratan ini, portal Azure tidak akan menampilkan status kluster Anda.

Catatan

Kami menyarankan agar Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Templat

Semua templat Service Fabric ada di GitHub. Anda harus dapat menggunakan templat apa adanya dengan menggunakan perintah PowerShell berikut. Jika Anda menggunakan templat Azure Virtual Network yang sudah ada atau templat IP publik statis, pertama-tama baca bagian Penyiapan awal pada artikel ini.

Penyiapan awal

Jaringan virtual yang sudah ada

Dalam contoh berikut, kita mulai dengan jaringan virtual yang sudah ada bernama ExistingRG-vnet, di grup sumber daya ExistingRG. Subnet dinamai secara default. Sumber daya default ini dibuat saat Anda menggunakan portal Azure untuk membuat komputer virtual (VM) standar. Anda dapat membuat jaringan virtual dan subnet tanpa membuat VM, tetapi tujuan utama menambahkan kluster ke jaringan virtual yang ada adalah untuk menyediakan konektivitas jaringan ke VM lainnya. Membuat VM akan memberikan contoh yang baik tentang bagaimana jaringan virtual yang sudah ada biasanya digunakan. Jika kluster Service Fabric Anda hanya menggunakan penyeimbang beban internal tanpa alamat IP publik, Anda dapat menggunakan VM dan IP publiknya sebagai kotak lompat aman.

Alamat IP publik statis

Alamat IP publik statis umumnya adalah sumber daya khusus yang dikelola secara terpisah dari VM atau VM tempat alamat IP ditetapkan. Ini disediakan dalam grup sumber daya jaringan khusus (dibandingkan dengan yang ada dalam grup sumber daya kluster Service Fabric itu sendiri). Buat alamat IP publik statis bernama staticIP1 di grup sumber daya ExistingRG yang sama, baik di portal Azure ataupun dengan menggunakan 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"
                           }

Templat Service Fabric

Pada contoh dalam artikel ini, kami menggunakan template.json Service Fabric. Anda dapat menggunakan panduan portal standar untuk mengunduh templat dari portal sebelum membuat kluster. Anda juga dapat menggunakan salah satu contoh sampel, seperti kluster Service Fabric lima node yang aman.

Jaringan atau subnet virtual yang sudah ada

  1. Ubah parameter subnet menjadi nama subnet yang sudah ada, lalu tambahkan dua parameter baru untuk mereferensikan jaringan virtual yang sudah ada:

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

    Anda juga dapat mengomentari parameter dengan nama "virtualNetworkName" sehingga tidak akan meminta Anda untuk memasukkan nama jaringan virtual dua kali di bilah penyebaran kluster di portal Azure.

  2. Komentari atribut nicPrefixOverride dari Microsoft.Compute/virtualMachineScaleSets, karena Anda menggunakan subnet yang sudah ada dan telah menonaktifkan variabel ini di langkah 1.

            /*"nicPrefixOverride": "[parameters('subnet0Prefix')]",*/
    
  3. Ubah variabel vnetID agar mengarah ke jaringan virtual yang sudah ada:

            /*old "vnetID": "[resourceId('Microsoft.Network/virtualNetworks',parameters('virtualNetworkName'))]",*/
            "vnetID": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('existingVNetRGName'), '/providers/Microsoft.Network/virtualNetworks/', parameters('existingVNetName'))]",
    
  4. Hapus Microsoft.Network/virtualNetworks dari sumber daya Anda, sehingga Azure tidak membuat jaringan virtual baru:

    /*{
    "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. Komentari jaringan virtual dari atribut dependsOn dari Microsoft.Compute/virtualMachineScaleSets, sehingga Anda tidak bergantung pada pembuatan jaringan virtual baru:

    "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. Sebarkan templat:

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

    Setelah penyebaran, jaringan virtual Anda harus menyertakan VM set skala baru. Jenis node set skala komputer virtual harus menunjukkan subnet dan jaringan virtual yang sudah ada. Anda juga dapat menggunakan Protokol Desktop Jauh (RDP) untuk mengakses VM yang sudah ada di jaringan virtual, dan untuk mem-ping VM set skala baru:

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

Untuk contoh lain, lihat contoh yang tidak spesifik untuk Service Fabric.

Alamat IP publik statis

  1. Tambahkan parameter untuk nama grup sumber daya IP statis yang sudah ada, nama, dan nama domain yang sepenuhnya memenuhi syarat (FQDN):

    "existingStaticIPResourceGroup": {
                "type": "string"
            },
            "existingStaticIPName": {
                "type": "string"
            },
            "existingStaticIPDnsFQDN": {
                "type": "string"
    }
    
  2. Hapus parameter dnsName. (Alamat IP statis sudah memilikinya.)

    /*
    "dnsName": {
        "type": "string"
    },
    */
    
  3. Tambahkan variabel untuk mereferensikan alamat IP statis yang sudah ada:

    "existingStaticIP": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('existingStaticIPResourceGroup'), '/providers/Microsoft.Network/publicIPAddresses/', parameters('existingStaticIPName'))]",
    
  4. Hapus Microsoft.Network/publicIPAddresses dari sumber daya Anda, sehingga Azure tidak membuat alamat IP baru:

    /*
    {
        "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. Komentari alamat IP dari atribut dependsOn dari Microsoft.Network/loadBalancers, sehingga Anda tidak bergantung pada pembuatan alamat IP baru:

    "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. Di sumber daya Microsoft.Network/loadBalancers, ubah elemen publicIPAddress dari frontendIPConfigurations untuk mereferensikan alamat IP statis yang sudah ada, bukan yang baru dibuat:

                "frontendIPConfigurations": [
                        {
                            "name": "LoadBalancerIPConfig",
                            "properties": {
                                "publicIPAddress": {
                                    /*"id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]"*/
                                    "id": "[variables('existingStaticIP')]"
                                }
                            }
                        }
                    ],
    
  7. Di sumber daya Microsoft.ServiceFabric/clusters, ubah managementEndpoint menjadi FQDN DNS dari alamat IP statis. Jika Anda menggunakan kluster aman, pastikan Anda mengubah http:// menjadi https:// . (Perhatikan bahwa langkah ini hanya berlaku untuk kluster Service Fabric. Jika Anda menggunakan set skala mesin virtual, lewati langkah ini.)

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

    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
    

Setelah penyebaran, Anda dapat melihat bahwa penyeimbang beban Anda terikat dengan alamat IP statis publik dari grup sumber daya lainnya. Titik akhir koneksi klien Service Fabric dan titik akhir Service Fabric Explorer ke FQDN DNS dari alamat IP statis.

Penyeimbang bebas khusus internal

Skenario ini menggantikan penyeimbang beban eksternal dalam templat Service Fabric default dengan penyeimbang beban khusus internal. Lihat sebelumnya dalam artikel untuk mengetahui implikasi untuk portal Azure dan untuk penyedia sumber daya Service Fabric.

  1. Hapus parameter dnsName. (Ini tidak diperlukan.)

    /*
    "dnsName": {
        "type": "string"
    },
    */
    
  2. Secara opsional, jika menggunakan metode alokasi statis, Anda dapat menambahkan parameter alamat IP statis. Jika menggunakan metode alokasi dinamis, Anda tidak perlu melakukan langkah ini.

            "internalLBAddress": {
                "type": "string",
                "defaultValue": "10.0.0.250"
            }
    
  3. Hapus Microsoft.Network/publicIPAddresses dari sumber daya Anda, sehingga Azure tidak membuat alamat IP baru:

    /*
    {
        "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. Hapus alamat IP dari atribut dependsOn dari Microsoft.Network/loadBalancers, sehingga Anda tidak bergantung pada pembuatan alamat IP baru. Tambahkan atribut dependsOn jaringan virtual karena penyeimbang beban kini tergantung pada subnet dari jaringan virtual:

                "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. Ubah pengaturan frontendIPConfigurations penyeimbang beban dari menggunakan publicIPAddress menjadi menggunakan subnet dan privateIPAddress. privateIPAddress menggunakan alamat IP internal statis yang telah ditentukan sebelumnya. Untuk menggunakan alamat IP dinamis, hapus elemen privateIPAddress, lalu ubah privateIPAllocationMethod menjadi Dinamis.

                "frontendIPConfigurations": [
                        {
                            "name": "LoadBalancerIPConfig",
                            "properties": {
                                /*
                                "publicIPAddress": {
                                    "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]"
                                } */
                                "subnet" :{
                                    "id": "[variables('subnet0Ref')]"
                                },
                                "privateIPAddress": "[parameters('internalLBAddress')]",
                                "privateIPAllocationMethod": "Static"
                            }
                        }
                    ],
    
  6. Di sumber daya Microsoft.ServiceFabric/clusters, ubah managementEndpoint agar mengarah ke alamat penyeimbang beban internal. Jika menggunakan kluster aman, pastikan Anda mengubah http:// menjadi https:// . (Perhatikan bahwa langkah ini hanya berlaku untuk kluster Service Fabric. Jika Anda menggunakan set skala mesin virtual, lewati langkah ini.)

                    "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. Sebarkan templat:

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

Setelah penyebaran, penyeimbang beban Anda menggunakan alamat IP pribadi statis 10.0.0.250. Jika memiliki komputer lain dalam jaringan virtual yang sama, Anda dapat membuka titik akhir Service Fabric Explorer internal. Perhatikan bahwa itu terhubung ke salah satu node di belakang penyeimbang beban.

Penyeimbang beban internal dan eksternal

Dalam skenario ini, Anda memulai dengan penyeimbang beban eksternal jenis node tunggal yang sudah ada, dan menambahkan penyeimbang beban internal untuk jenis node yang sama. Port back-end yang dilampirkan ke kumpulan alamat back-end hanya dapat ditetapkan ke penyeimbang beban tunggal. Pilih penyeimbang beban mana yang akan memiliki port aplikasi Anda, dan penyeimbang beban mana yang akan memiliki titik akhir manajemen Anda (port 19000 dan 19080). Jika Anda menempatkan titik akhir manajemen pada penyeimbang beban internal, perlu diingat bahwa pembatasan penyedia sumber daya Service Fabric telah membahas sebelumnya dalam artikel tersebut. Dalam contoh yang kami gunakan, titik akhir manajemen tetap berada di penyeimbang beban eksternal. Anda juga menambahkan port aplikasi port 80, dan menempatkannya pada penyeimbang beban internal.

Dalam kluster jenis dua node, satu jenis node berada pada penyeimbang beban eksternal. Jenis node lainnya ada pada penyeimbang beban internal. Untuk menggunakan kluster jenis dua node, di templat jenis dua node yang dibuat portal (yang dilengkapi dengan dua penyeimbang beban), alihkan penyeimbang beban kedua ke penyeimbang beban internal. Untuk informasi selengkapnya, lihat bagian Penyeimbang beban khusus internal.

  1. Tambahkan parameter alamat IP penyeimbang beban internal statis. (Untuk catatan yang terkait dengan menggunakan alamat IP dinamis, lihat bagian sebelumnya dari artikel ini.)

            "internalLBAddress": {
                "type": "string",
                "defaultValue": "10.0.0.250"
            }
    
  2. Tambahkan parameter port 80 aplikasi.

  3. Untuk menambahkan versi internal variabel jaringan yang ada, salin dan tempel versi, dan tambahkan "-Int" ke nama:

    /* 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. Jika Anda memulai dengan templat buatan portal yang menggunakan port 80 aplikasi, templat portal default menambahkan AppPort1 (port 80) pada penyeimbang beban eksternal. Dalam hal ini, hapus AppPort1 dari penyeimbang beban eksternal loadBalancingRules dan periksa, sehingga Anda dapat menambahkannya ke penyeimbang beban internal:

    "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. Tambahkan sumber daya Microsoft.Network/loadBalancers kedua. Ini terlihat mirip dengan penyeimbang beban internal yang dibuat di bagian Penyeimbang beban khusus internal, tetapi menggunakan variabel penyeimbang beban "-Int", dan hanya mengimplementasikan port 80 aplikasi. Ini juga menghapus inboundNatPools, untuk mempertahankan titik akhir RDP pada penyeimbang beban publik. Jika Anda ingin RDP pada penyeimbang beban internal, pindahkan inboundNatPools dari penyeimbang beban eksternal ke penyeimbang beban internal ini:

            /* 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. Pada networkProfile untuk sumber daya Microsoft.Compute/virtualMachineScaleSets, tambahkan kumpulan alamat back-end internal:

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

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

Setelah penyebaran, Anda dapat melihat dua penyeimbang beban dalam grup sumber daya. Jika menelusuri penyeimbang beban, Anda dapat melihat alamat IP publik dan titik akhir manajemen (port 19000 dan 19080) yang ditetapkan ke alamat IP publik. Anda juga dapat melihat alamat IP internal statis dan titik akhir aplikasi (port 80) yang ditetapkan ke penyeimbang beban internal. Kedua penyeimbang beban menggunakan kumpulan back-end set skala komputer virtual yang sama.

Catatan untuk beban kerja produksi

Templat GitHub di atas dirancang untuk bekerja dengan SKU default untuk Azure Standard Load Balancer (SLB), SKU Dasar. SKU LB Dasar tidak memiliki SLA, sehingga SKU Standar harus digunakan untuk beban kerja produksi. Untuk informasi selengkapnya tentang ini, lihat gambaran umum Azure Standard Load Balancer. Kluster Service Fabric apa pun yang menggunakan SKU Standar untuk SLB perlu memastikan bahwa setiap jenis node memiliki aturan yang memungkinkan lalu lintas keluar pada port 443. Ini diperlukan untuk menyelesaikan pengaturan kluster, dan penyebaran apa pun tanpa aturan seperti itu akan gagal. Dalam contoh penyeimbang beban "khusus internal" di atas, penyeimbang beban eksternal tambahan harus ditambahkan ke templat dengan aturan yang memungkinkan lalu lintas keluar untuk port 443.

Langkah berikutnya

Membuat kluster