Nyilvános terheléselosztó létrehozása IPv6-tal az Azure CLI használatával

Feljegyzés

Ez a cikk egy bevezető IPv6-funkciót ismertet, amely lehetővé teszi, hogy az alapszintű terheléselosztók IPv4- és IPv6-kapcsolatot is biztosítsanak. Az átfogó IPv6-kapcsolat mostantól elérhető az Azure-beli IPv6 virtuális hálózatokhoz, amelyek integrálják az IPv6-kapcsolatot a virtuális hálózatokkal, és olyan kulcsfontosságú funkciókat tartalmaznak, mint az IPv6 hálózati biztonsági csoport szabályai, az IPv6 felhasználó által definiált útválasztás, az IPv6 Alapszintű és a Standard terheléselosztás stb. Az Azure-beli IPv6 VNETs az azure-beli IPv6-alkalmazások ajánlott szabványa. Lásd: IPv6 for Azure VNET PowerShell deployment

Az Azure Load Balancer 4. szintű (TCP, UDP) terheléselosztónak minősül. A terheléselosztók magas rendelkezésre állást biztosítanak a bejövő forgalom elosztott állapotú szolgáltatáspéldányok között a felhőszolgáltatásokban vagy a terheléselosztó-készletben lévő virtuális gépeken. A terheléselosztók ezeket a szolgáltatásokat több porton, több IP-címen vagy mindkettőn is megjeleníthetik.

Példa üzembe helyezési forgatókönyvre

Az alábbi ábra az ebben a cikkben ismertetett példasablon használatával üzembe helyezett terheléselosztási megoldást mutatja be.

Load balancer scenario

Ebben a forgatókönyvben a következő Azure-erőforrásokat hozza létre:

  • Két virtuális gép (virtuális gép)
  • Virtuális hálózati adapter minden virtuális géphez IPv4- és IPv6-címekkel
  • Nyilvános terheléselosztó IPv4 és IPv6 nyilvános IP-címmel
  • Rendelkezésre állási csoport, amely a két virtuális gépet tartalmazza
  • Két terheléselosztási szabály a nyilvános VIP-k privát végpontokhoz való leképezéséhez

A megoldás üzembe helyezése az Azure CLI használatával

Az alábbi lépések bemutatják, hogyan hozhat létre nyilvános terheléselosztót az Azure CLI használatával. A parancssori felület használatával egyenként hozhat létre és konfigurálhat minden objektumot, majd össze kell őket állítania egy erőforrás létrehozásához.

Terheléselosztó üzembe helyezéséhez hozza létre és konfigurálja a következő objektumokat:

  • Előtérbeli IP-konfiguráció: Nyilvános IP-címeket tartalmaz a bejövő hálózati forgalomhoz.
  • Háttércímkészlet: Hálózati adaptereket (NIC-ket) tartalmaz a virtuális gépek számára, hogy hálózati forgalmat fogadjanak a terheléselosztótól.
  • Terheléselosztási szabályok: Olyan szabályokat tartalmaz, amelyek a terheléselosztón lévő nyilvános portot a háttércímkészlet egyik portjára képezik le.
  • Bejövő NAT-szabályok: Olyan hálózati címfordítási (NAT-) szabályokat tartalmaz, amelyek a terheléselosztón lévő nyilvános portot egy adott virtuális gép portjához rendelik le a háttércímkészletben.
  • Mintavételek: Állapotmintákat tartalmaz, amelyek a virtuálisgép-példányok rendelkezésre állásának ellenőrzésére szolgálnak a háttércímkészletben.

Az Azure CLI beállítása

Ebben a példában az Azure CLI-eszközöket egy PowerShell-parancsablakban futtatja. Az olvashatóság és az újrafelhasználás javítása érdekében a PowerShell szkriptelési képességeit használja, nem az Azure PowerShell-parancsmagokat.

  1. Telepítse és konfigurálja az Azure CLI-t a hivatkozott cikkben leírt lépések követésével, és jelentkezzen be az Azure-fiókjába.

  2. PowerShell-változók beállítása az Azure CLI-parancsokkal való használatra:

    $subscriptionid = "########-####-####-####-############"  # enter subscription id
    $location = "southcentralus"
    $rgName = "pscontosorg1southctrlus09152016"
    $vnetName = "contosoIPv4Vnet"
    $vnetPrefix = "10.0.0.0/16"
    $subnet1Name = "clicontosoIPv4Subnet1"
    $subnet1Prefix = "10.0.0.0/24"
    $subnet2Name = "clicontosoIPv4Subnet2"
    $subnet2Prefix = "10.0.1.0/24"
    $dnsLabel = "contoso09152016"
    $lbName = "myIPv4IPv6Lb"
    

Erőforráscsoport, terheléselosztó, virtuális hálózat és alhálózat létrehozása

  1. Erőforráscsoport létrehozása:

    az group create --name $rgName --location $location
    
  2. Terheléselosztó létrehozása:

    $lb = az network lb create --resource-group $rgname --location $location --name $lbName
    
  3. Virtuális hálózat létrehozása:

    $vnet = az network vnet create  --resource-group $rgname --name $vnetName --location $location --address-prefixes $vnetPrefix
    
  4. Ebben a virtuális hálózatban hozzon létre két alhálózatot:

    $subnet1 = az network vnet subnet create --resource-group $rgname --name $subnet1Name --address-prefix $subnet1Prefix --vnet-name $vnetName
    $subnet2 = az network vnet subnet create --resource-group $rgname --name $subnet2Name --address-prefix $subnet2Prefix --vnet-name $vnetName
    

Nyilvános IP-címek létrehozása az előtérkészlethez

  1. A PowerShell-változók beállítása:

    $publicIpv4Name = "myIPv4Vip"
    $publicIpv6Name = "myIPv6Vip"
    
  2. Hozzon létre egy nyilvános IP-címet az előtérbeli IP-készlethez:

    $publicipV4 = az network public-ip create --resource-group $rgname --name $publicIpv4Name --location $location --version IPv4 --allocation-method Dynamic --dns-name $dnsLabel
    $publicipV6 = az network public-ip create --resource-group $rgname --name $publicIpv6Name --location $location --version IPv6 --allocation-method Dynamic --dns-name $dnsLabel
    

    Fontos

    A terheléselosztó a nyilvános IP-cím tartománycímkéjét használja teljes tartománynévként (FQDN). Ez egy változás a klasszikus üzembe helyezésről, amely a felhőszolgáltatás nevét használja terheléselosztó teljes tartományneveként.

    Ebben a példában a teljes tartománynév contoso09152016.southcentralus.cloudapp.azure.com.

Előtér- és háttérkészletek létrehozása

Ebben a szakaszban a következő IP-készleteket hozza létre:

  • Az előtérbeli IP-készlet, amely fogadja a bejövő hálózati forgalmat a terheléselosztón.
  • Az a háttérBELI IP-készlet, amelyben az előtérkészlet elküldi a terheléselosztásos hálózati forgalmat.
  1. A PowerShell-változók beállítása:

    $frontendV4Name = "FrontendVipIPv4"
    $frontendV6Name = "FrontendVipIPv6"
    $backendAddressPoolV4Name = "BackendPoolIPv4"
    $backendAddressPoolV6Name = "BackendPoolIPv6"
    
  2. Hozzon létre egy előtérbeli IP-készletet, és társítsa az előző lépésben létrehozott nyilvános IP-címhez és a terheléselosztóhoz.

    $frontendV4 = az network lb frontend-ip create --resource-group $rgname --name $frontendV4Name --public-ip-address $publicIpv4Name --lb-name $lbName
    $frontendV6 = az network lb frontend-ip create --resource-group $rgname --name $frontendV6Name --public-ip-address $publicIpv6Name --lb-name $lbName
    $backendAddressPoolV4 = az network lb address-pool create --resource-group $rgname --name $backendAddressPoolV4Name --lb-name $lbName
    $backendAddressPoolV6 = az network lb address-pool create --resource-group $rgname --name $backendAddressPoolV6Name --lb-name $lbName
    

A mintavételi, NAT-szabályok és terheléselosztó-szabályok létrehozása

Ez a példa a következő elemeket hozza létre:

  • Mintavételi szabály a 80-ás TCP-porthoz való kapcsolódás ellenőrzéséhez.
  • NAT-szabály a 3389-s porton érkező összes bejövő forgalom rdp-hez készült 3389-s portra való fordításához.*
  • Nat-szabály a 3391-s porton érkező összes bejövő forgalom lefordításához a távoli asztali protokoll (RDP) 3389-ös portjára.*
  • Terheléselosztó-szabály a 80-as porton érkező összes bejövő forgalom és a háttérkészlet címeinek 80-80-a közötti elosztásához.

* A NAT-szabályok egy adott virtuálisgép-példányhoz vannak társítva a terheléselosztó mögött. A 3389-as portra érkező hálózati forgalom a NAT-szabályhoz társított adott virtuális gépre és portra lesz küldve. A NAT-szabályhoz meg kell adnia egy protokollt (UDP vagy TCP). Nem rendelhet mindkét protokollt ugyanahhoz a porthoz.

  1. A PowerShell-változók beállítása:

    $probeV4V6Name = "ProbeForIPv4AndIPv6"
    $natRule1V4Name = "NatRule-For-Rdp-VM1"
    $natRule2V4Name = "NatRule-For-Rdp-VM2"
    $lbRule1V4Name = "LBRuleForIPv4-Port80"
    $lbRule1V6Name = "LBRuleForIPv6-Port80"
    
  2. Hozza létre a mintavételt.

    Az alábbi példa létrehoz egy TCP-mintavételt, amely 15 másodpercenként ellenőrzi a háttérbeli TCP-porthoz való kapcsolódást. Két egymást követő hiba után elérhetetlenként jelöli meg a háttérerőforrást.

    $probeV4V6 = az network lb probe create --resource-group $rgname --name $probeV4V6Name --protocol tcp --port 80 --interval 15 --threshold 2 --lb-name $lbName
    
  3. Hozzon létre bejövő NAT-szabályokat, amelyek lehetővé teszik az RDP-kapcsolatokat a háttérerőforrásokhoz:

    $inboundNatRuleRdp1 = az network lb inbound-nat-rule create --resource-group $rgname --name $natRule1V4Name --frontend-ip-name $frontendV4Name --protocol Tcp --frontend-port 3389 --backend-port 3389 --lb-name $lbName
    $inboundNatRuleRdp2 = az network lb inbound-nat-rule create --resource-group $rgname --name $natRule2V4Name --frontend-ip-name $frontendV4Name --protocol Tcp --frontend-port 3391 --backend-port 3389 --lb-name $lbName
    
  4. Olyan terheléselosztó-szabályok létrehozása, amelyek a kérést kapott előtértől függően különböző háttérportokra küldik a forgalmat.

    $lbruleIPv4 = az network lb rule create --resource-group $rgname --name $lbRule1V4Name --frontend-ip-name $frontendV4Name --backend-pool-name $backendAddressPoolV4Name --probe-name $probeV4V6Name --protocol Tcp --frontend-port 80 --backend-port 80 --lb-name $lbName
    $lbruleIPv6 = az network lb rule create --resource-group $rgname --name $lbRule1V6Name --frontend-ip-name $frontendV6Name --backend-pool-name $backendAddressPoolV6Name --probe-name $probeV4V6Name --protocol Tcp --frontend-port 80 --backend-port 8080 --lb-name $lbName
    
  5. Ellenőrizze a beállításokat:

    az network lb show --resource-group $rgName --name $lbName
    

    Várt kimenet:

    info:    Executing command network lb show
    info:    Looking up the load balancer "myIPv4IPv6Lb"
    data:    Id                              : /subscriptions/########-####-####-####-############/resourceGroups/pscontosorg1southctrlus09152016/providers/Microsoft.Network/loadBalancers/myIPv4IPv6Lb
    data:    Name                            : myIPv4IPv6Lb
    data:    Type                            : Microsoft.Network/loadBalancers
    data:    Location                        : southcentralus
    data:    Provisioning state              : Succeeded
    data:
    data:    Frontend IP configurations:
    data:    Name             Provisioning state  Private IP allocation  Private IP   Subnet  Public IP
    data:    ---------------  ------------------  ---------------------  -----------  ------  ---------
    data:    FrontendVipIPv4  Succeeded           Dynamic                                     myIPv4Vip
    data:    FrontendVipIPv6  Succeeded           Dynamic                                     myIPv6Vip
    data:
    data:    Probes:
    data:    Name                 Provisioning state  Protocol  Port  Path  Interval  Count
    data:    -------------------  ------------------  --------  ----  ----  --------  -----
    data:    ProbeForIPv4AndIPv6  Succeeded           Tcp       80          15        2
    data:
    data:    Backend Address Pools:
    data:    Name             Provisioning state
    data:    ---------------  ------------------
    data:    BackendPoolIPv4  Succeeded
    data:    BackendPoolIPv6  Succeeded
    data:
    data:    Load Balancing Rules:
    data:    Name                  Provisioning state  Load distribution  Protocol  Frontend port  Backend port  Enable floating IP  Idle timeout in minutes
    data:    --------------------  ------------------  -----------------  --------  -------------  ------------  ------------------  -----------------------
    data:    LBRuleForIPv4-Port80  Succeeded           Default            Tcp       80             80            false               4
    data:    LBRuleForIPv6-Port80  Succeeded           Default            Tcp       80             8080          false               4
    data:
    data:    Inbound NAT Rules:
    data:    Name                 Provisioning state  Protocol  Frontend port  Backend port  Enable floating IP  Idle timeout in minutes
    data:    -------------------  ------------------  --------  -------------  ------------  ------------------  -----------------------
    data:    NatRule-For-Rdp-VM1  Succeeded           Tcp       3389           3389          false               4
    data:    NatRule-For-Rdp-VM2  Succeeded           Tcp       3391           3389          false               4
    info:    network lb show
    

Hálózati adapterek létrehozása

Hozzon létre hálózati adaptereket, és társítsa őket NAT-szabályokhoz, terheléselosztó-szabályokhoz és mintavételekhez.

  1. A PowerShell-változók beállítása:

    $nic1Name = "myIPv4IPv6Nic1"
    $nic2Name = "myIPv4IPv6Nic2"
    $subnet1Id = "/subscriptions/$subscriptionid/resourceGroups/$rgName/providers/Microsoft.Network/VirtualNetworks/$vnetName/subnets/$subnet1Name"
    $subnet2Id = "/subscriptions/$subscriptionid/resourceGroups/$rgName/providers/Microsoft.Network/VirtualNetworks/$vnetName/subnets/$subnet2Name"
    $backendAddressPoolV4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/backendAddressPools/$backendAddressPoolV4Name"
    $backendAddressPoolV6Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/backendAddressPools/$backendAddressPoolV6Name"
    $natRule1V4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/inboundNatRules/$natRule1V4Name"
    $natRule2V4Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/loadbalancers/$lbName/inboundNatRules/$natRule2V4Name"
    
  2. Hozzon létre egy hálózati adaptert minden háttérrendszerhez, és adjon hozzá egy IPv6-konfigurációt:

    $nic1 = az network nic create --name $nic1Name --resource-group $rgname --location $location --private-ip-address-version "IPv4" --subnet $subnet1Id --lb-address-pools $backendAddressPoolV4Id --lb-inbound-nat-rules $natRule1V4Id
    $nic1IPv6 = az network nic ip-config create --resource-group $rgname --name "IPv6IPConfig" --private-ip-address-version "IPv6" --lb-address-pools $backendAddressPoolV6Id --nic-name $nic1Name
    
    $nic2 = az network nic create --name $nic2Name --resource-group $rgname --location $location --private-ip-address-version "IPv4" --subnet $subnet2Id --lb-address-pools $backendAddressPoolV4Id --lb-inbound-nat-rules $natRule2V4Id
    $nic2IPv6 = az network nic ip-config create --resource-group $rgname --name "IPv6IPConfig" --private-ip-address-version "IPv6" --lb-address-pools $backendAddressPoolV6Id --nic-name $nic2Name
    

Hozza létre a háttérbeli virtuálisgép-erőforrásokat, és csatolja az egyes hálózati adaptereket

Virtuális gépek létrehozásához rendelkeznie kell tárfiókokkal. A terheléselosztáshoz a virtuális gépeknek egy rendelkezésre állási csoport tagjainak kell lenniük. További információ a virtuális gépek létrehozásáról: Azure-beli virtuális gép létrehozása a PowerShell használatával.

  1. A PowerShell-változók beállítása:

    $availabilitySetName = "myIPv4IPv6AvailabilitySet"
    $vm1Name = "myIPv4IPv6VM1"
    $vm2Name = "myIPv4IPv6VM2"
    $nic1Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/networkInterfaces/$nic1Name"
    $nic2Id = "/subscriptions/$subscriptionid/resourceGroups/$rgname/providers/Microsoft.Network/networkInterfaces/$nic2Name"
    $imageurn = "MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest"
    $vmUserName = "vmUser"
    $mySecurePassword = "PlainTextPassword*1"
    

    Figyelmeztetés

    Ez a példa a virtuális gépek felhasználónevét és jelszavát használja egyértelmű szövegként. Ügyeljen arra, hogy ezeket a hitelesítő adatokat egyértelmű szövegként használja. A Hitelesítő adatok PowerShellben való kezelésének biztonságosabb módjáért tekintse meg a Get-Credential parancsmagot.

  2. Hozza létre a rendelkezésre állási csoportot:

    $availabilitySet = az vm availability-set create --name $availabilitySetName --resource-group $rgName --location $location
    
  3. Hozza létre a virtuális gépeket a társított hálózati adapterekkel:

    az vm create --resource-group $rgname --name $vm1Name --image $imageurn --admin-username $vmUserName --admin-password $mySecurePassword --nics $nic1Id --location $location --availability-set $availabilitySetName --size "Standard_A1" 
    
    az vm create --resource-group $rgname --name $vm2Name --image $imageurn --admin-username $vmUserName --admin-password $mySecurePassword --nics $nic2Id --location $location --availability-set $availabilitySetName --size "Standard_A1"