Skapa en offentlig lastbalanserare med IPv6 med Hjälp av Azure CLI

Kommentar

I den här artikeln beskrivs en introduktionsfunktion för IPv6 som gör det möjligt för Basic Load Balancers att tillhandahålla både IPv4- och IPv6-anslutning. Omfattande IPv6-anslutning är nu tillgänglig med IPv6 för virtuella Azure-nätverk som integrerar IPv6-anslutning med dina virtuella nätverk och innehåller viktiga funktioner som IPv6 Network Security Group-regler, IPv6 Användardefinierad routning, IPv6 Basic- och Standard-belastningsutjämning med mera. IPv6 för virtuella Azure-nätverk är den rekommenderade standarden för IPv6-program i Azure. Se IPv6 för Azure VNET PowerShell-distribution

En Azure Load Balancer är en Layer 4-lastbalanserare (TCP, UDP). Lastbalanserare ger hög tillgänglighet genom att distribuera inkommande trafik mellan felfria tjänstinstanser i molntjänster eller virtuella datorer i en lastbalanserare. Lastbalanserare kan också presentera dessa tjänster på flera portar eller flera IP-adresser eller båda.

Exempel på distributionsscenario

Följande diagram illustrerar den belastningsutjämningslösning som distribueras med hjälp av exempelmallen som beskrivs i den här artikeln.

Load balancer scenario

I det här scenariot skapar du följande Azure-resurser:

  • Två virtuella datorer
  • Ett virtuellt nätverksgränssnitt för varje virtuell dator med både IPv4- och IPv6-adresser tilldelade
  • En offentlig lastbalanserare med en offentlig IPv4- och IPv6-ip-adress
  • En tillgänglighetsuppsättning som innehåller de två virtuella datorerna
  • Två regler för belastningsutjämning för att mappa offentliga VIP:er till de privata slutpunkterna

Distribuera lösningen med hjälp av Azure CLI

Följande steg visar hur du skapar en offentlig lastbalanserare med hjälp av Azure CLI. Med CLI skapar och konfigurerar du varje objekt individuellt och sätter sedan ihop dem för att skapa en resurs.

Om du vill distribuera en lastbalanserare skapar och konfigurerar du följande objekt:

  • Ip-konfiguration för klientdelen: Innehåller offentliga IP-adresser för inkommande nätverkstrafik.
  • Serverdelsadresspool: Innehåller nätverksgränssnitt (NIC) för de virtuella datorerna för att ta emot nätverkstrafik från lastbalanseraren.
  • Belastningsutjämningsregler: Innehåller regler som mappar en offentlig port på lastbalanseraren till en port i serverdelsadresspoolen.
  • Regler för inkommande NAT: Innehåller NAT-regler (Network Address Translation) som mappar en offentlig port på lastbalanseraren till en port för en specifik virtuell dator i serverdelsadresspoolen.
  • Avsökningar: Innehåller hälsoavsökningar som används för att kontrollera tillgängligheten för virtuella datorinstanser i serverdelsadresspoolen.

Konfigurera Azure CLI

I det här exemplet kör du Azure CLI-verktygen i ett PowerShell-kommandofönster. För att förbättra läsbarheten och återanvändningen använder du PowerShells skriptfunktioner, inte Azure PowerShell-cmdletarna.

  1. Installera och konfigurera Azure CLI genom att följa stegen i den länkade artikeln och logga in på ditt Azure-konto.

  2. Konfigurera PowerShell-variabler för användning med Azure CLI-kommandon:

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

Skapa en resursgrupp, en lastbalanserare, ett virtuellt nätverk och undernät

  1. Skapa en resursgrupp:

    az group create --name $rgName --location $location
    
  2. Skapa en lastbalanserare:

    $lb = az network lb create --resource-group $rgname --location $location --name $lbName
    
  3. Skapa ett virtuellt nätverk:

    $vnet = az network vnet create  --resource-group $rgname --name $vnetName --location $location --address-prefixes $vnetPrefix
    
  4. I det här virtuella nätverket skapar du två undernät:

    $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
    

Skapa offentliga IP-adresser för klientdelspoolen

  1. Konfigurera PowerShell-variablerna:

    $publicIpv4Name = "myIPv4Vip"
    $publicIpv6Name = "myIPv6Vip"
    
  2. Skapa en offentlig IP-adress för klientdels-IP-poolen:

    $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
    

    Viktigt!

    Lastbalanseraren använder domänetiketten för den offentliga IP-adressen som sitt fullständigt kvalificerade domännamn (FQDN). Detta är en ändring från den klassiska distributionen, som använder molntjänstnamnet som lastbalanserarens FQDN.

    I det här exemplet är det fullständiga domännamnet contoso09152016.southcentralus.cloudapp.azure.com.

Skapa klientdels- och serverdelspooler

I det här avsnittet skapar du följande IP-pooler:

  • Klientdels-IP-poolen som tar emot inkommande nätverkstrafik i lastbalanseraren.
  • Serverdels-IP-poolen där klientdelspoolen skickar den belastningsutjämningsbaserade nätverkstrafiken.
  1. Konfigurera PowerShell-variablerna:

    $frontendV4Name = "FrontendVipIPv4"
    $frontendV6Name = "FrontendVipIPv6"
    $backendAddressPoolV4Name = "BackendPoolIPv4"
    $backendAddressPoolV6Name = "BackendPoolIPv6"
    
  2. Skapa en IP-klientdels-IP-pool och associera den med den offentliga IP-adress som du skapade i föregående steg och lastbalanseraren.

    $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
    

Skapa regler för avsökning, NAT-regler och lastbalanserare

I det här exemplet skapas följande objekt:

  • En avsökningsregel för att söka efter anslutning till TCP-port 80.
  • En NAT-regel för att översätta all inkommande trafik på port 3389 till port 3389 för RDP.*
  • En NAT-regel för att översätta all inkommande trafik på port 3391 till port 3389 för fjärrskrivbordsprotokoll (RDP).*
  • En lastbalanseringsregel för att balansera all inkommande trafik på port 80 till port 80 på adresserna i serverdelspoolen.

* NAT-regler är associerade med en specifik virtuell datorinstans bakom lastbalanseraren. Nätverkstrafiken som anländer till port 3389 skickas till den specifika virtuella datorn och porten som är associerad med NAT-regeln. Du måste ange ett protokoll (UDP eller TCP) för en NAT-regel. Du kan inte tilldela båda protokollen till samma port.

  1. Konfigurera PowerShell-variablerna:

    $probeV4V6Name = "ProbeForIPv4AndIPv6"
    $natRule1V4Name = "NatRule-For-Rdp-VM1"
    $natRule2V4Name = "NatRule-For-Rdp-VM2"
    $lbRule1V4Name = "LBRuleForIPv4-Port80"
    $lbRule1V6Name = "LBRuleForIPv6-Port80"
    
  2. Skapa avsökningen.

    I följande exempel skapas en TCP-avsökning som söker efter anslutning till serverdelens TCP-port 80 var 15:e sekund. Efter två på varandra följande fel markerar den serverdelsresursen som otillgänglig.

    $probeV4V6 = az network lb probe create --resource-group $rgname --name $probeV4V6Name --protocol tcp --port 80 --interval 15 --threshold 2 --lb-name $lbName
    
  3. Skapa inkommande NAT-regler som tillåter RDP-anslutningar till serverdelsresurserna:

    $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. Skapa regler för lastbalanserare som skickar trafik till olika serverdelsportar, beroende på klientdelen som tog emot begäran.

    $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. Kontrollera inställningarna:

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

    Förväntad utdata:

    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
    

Skapa nätverkskort

Skapa nätverkskort och associera dem med NAT-regler, lastbalanseringsregler och avsökningar.

  1. Konfigurera PowerShell-variablerna:

    $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. Skapa ett nätverkskort för varje serverdel och lägg till en IPv6-konfiguration:

    $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
    

Skapa de virtuella serverdelsresurserna och koppla varje nätverkskort

Om du vill skapa virtuella datorer måste du ha ett lagringskonto. För belastningsutjämning måste de virtuella datorerna vara medlemmar i en tillgänglighetsuppsättning. Mer information om hur du skapar virtuella datorer finns i Skapa en virtuell Azure-dator med hjälp av PowerShell.

  1. Konfigurera PowerShell-variablerna:

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

    Varning

    I det här exemplet används användarnamnet och lösenordet för de virtuella datorerna i klartext. Var noga när du använder dessa autentiseringsuppgifter i klartext. En säkrare metod för att hantera autentiseringsuppgifter i PowerShell finns i cmdleten Get-Credential .

  2. Skapa tillgänglighetsuppsättningen:

    $availabilitySet = az vm availability-set create --name $availabilitySetName --resource-group $rgName --location $location
    
  3. Skapa de virtuella datorerna med associerade nätverkskort:

    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"