Questo articolo illustra come distribuire un'applicazione dual stack (IPv4 + IPv6) usando Load Balancer Standard in Azure. Lo scenario include una rete virtuale a doppio stack con una subnet a doppio stack, un Load Balancer Standard con configurazioni front-end doppie (IPv4 + IPv6), macchine virtuali con NIC che hanno una doppia configurazione IP, regole di gruppo di sicurezza di rete a doppio stack e indirizzi IP pubblici doppi.
Seguire queste istruzioni in Azure PowerShell per distribuire un'applicazione dual stack (IPv4 + IPv6) usando Load Balancer Standard in Azure.
Creare un gruppo di risorse
Prima di poter creare la rete virtuale dual stack, è necessario creare un gruppo di risorse con New-AzResourceGroup. L'esempio seguente crea un gruppo di risorse denominato myRGDualStack nella località Stati Uniti orientali :
$rg = New-AzResourceGroup `
-ResourceGroupName "dsRG1" `
-Location "east us"
Creare indirizzi IP pubblici IPv4 e IPv6
Per accedere alle macchine virtuali da Internet, sono necessari indirizzi IP pubblici IPv4 e IPv6 per il servizio di bilanciamento del carico. Creare indirizzi IP pubblici con New-AzPublicIpAddress. L'esempio seguente crea l'indirizzo IP pubblico IPv4 e IPv6 denominato dsPublicIP_v4 e dsPublicIP_v6 nel gruppo di risorse dsRG1 :
$PublicIP_v4 = New-AzPublicIpAddress `
-Name "dsPublicIP_v4" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-IpAddressVersion IPv4 `
-Sku Standard
$PublicIP_v6 = New-AzPublicIpAddress `
-Name "dsPublicIP_v6" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-IpAddressVersion IPv6 `
-Sku Standard
Per accedere alle macchine virtuali usando una connessione RDP, creare un indirizzo IP pubblico IPV4 per le macchine virtuali con New-AzPublicIpAddress.
$RdpPublicIP_1 = New-AzPublicIpAddress `
-Name "RdpPublicIP_1" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-Sku Standard `
-IpAddressVersion IPv4
$RdpPublicIP_2 = New-AzPublicIpAddress `
-Name "RdpPublicIP_2" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-AllocationMethod Static `
-Sku Standard `
-IpAddressVersion IPv4
Creare un'istanza di Load Balancer Standard
In questa sezione, configuri il front-end doppio IP (IPv4 e IPv6) e il pool di indirizzi back-end per il servizio di bilanciamento del carico e poi crei un Load Balancer Standard.
Creare un indirizzo IP front-end
Creare un IP front-end con New-AzLoadBalancerFrontendIpConfig. L'esempio seguente crea configurazioni IP front-end IPv4 e IPv6 denominate dsLbFrontEnd_v4 e dsLbFrontEnd_v6:
$frontendIPv4 = New-AzLoadBalancerFrontendIpConfig `
-Name "dsLbFrontEnd_v4" `
-PublicIpAddress $PublicIP_v4
$frontendIPv6 = New-AzLoadBalancerFrontendIpConfig `
-Name "dsLbFrontEnd_v6" `
-PublicIpAddress $PublicIP_v6
Creare un pool di indirizzi backend con New-AzLoadBalancerBackendAddressPoolConfig per le macchine virtuali che verranno distribuite in un secondo momento. L'esempio seguente crea pool di indirizzi back-end denominati dsLbBackEndPool_v4 e dsLbBackEndPool_v6 per includere macchine virtuali con configurazioni della scheda di interfaccia di rete IPV4 e IPv6:
$backendPoolv4 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v4"
$backendPoolv6 = New-AzLoadBalancerBackendAddressPoolConfig `
-Name "dsLbBackEndPool_v6"
Creare un probe di integrità
Usare Add-AzLoadBalancerProbeConfig per creare una sonda di integrità per monitorare la salute delle macchine virtuali.
$probe = New-AzLoadBalancerProbeConfig -Name MyProbe -Protocol tcp -Port 3389 -IntervalInSeconds 15 -ProbeCount 2
Creare una regola di bilanciamento del carico
Una regola di bilanciamento del carico consente di definire come il traffico verrà distribuito alle VM. Definire la configurazione IP front-end per il traffico in ingresso e il pool IP back-end che riceve il traffico, insieme alle porte di origine e di destinazione necessarie. Per assicurarsi che solo le macchine virtuali funzionanti ricevano traffico, è possibile facoltativamente definire una sonda di integrità. Il Bilanciatore di Carico Basic usa una sonda IPv4 per valutare lo stato di integrità degli endpoint IPv4 e IPv6 nelle macchine virtuali. Il Load Balancer Standard include il supporto per i controlli dell'integrità IPv6 espliciti.
Creare una regola di bilanciamento del carico con Add-AzLoadBalancerRuleConfig. L'esempio seguente crea regole di bilanciamento del carico denominate dsLBrule_v4 e dsLBrule_v6 e bilancia il traffico sulla porta TCP80 alle configurazioni IP front-end IPv4 e IPv6:
$lbrule_v4 = New-AzLoadBalancerRuleConfig `
-Name "dsLBrule_v4" `
-FrontendIpConfiguration $frontendIPv4 `
-BackendAddressPool $backendPoolv4 `
-Protocol Tcp `
-FrontendPort 80 `
-BackendPort 80 `
-probe $probe
$lbrule_v6 = New-AzLoadBalancerRuleConfig `
-Name "dsLBrule_v6" `
-FrontendIpConfiguration $frontendIPv6 `
-BackendAddressPool $backendPoolv6 `
-Protocol Tcp `
-FrontendPort 80 `
-BackendPort 80 `
-probe $probe
Creare un servizio di bilanciamento del carico
Crea un Load Balancer Standard con New-AzLoadBalancer. L'esempio seguente crea un load Balancer Standard pubblico denominato myLoadBalancer usando le configurazioni IP front-end IPv4 e IPv6, i pool back-end e le regole di bilanciamento del carico create nei passaggi precedenti:
$lb = New-AzLoadBalancer `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "MyLoadBalancer" `
-Sku "Standard" `
-FrontendIpConfiguration $frontendIPv4,$frontendIPv6 `
-BackendAddressPool $backendPoolv4,$backendPoolv6 `
-LoadBalancingRule $lbrule_v4,$lbrule_v6 `
-Probe $probe
Creare risorse di rete
Prima di distribuire alcune macchine virtuali e testare il servizio di bilanciamento, è necessario creare risorse di rete di supporto: set di disponibilità, gruppo di sicurezza di rete, rete virtuale e schede di interfaccia di rete virtuali.
Creare un set di disponibilità
Per migliorare l'alta disponibilità dell'app, posiziona le macchine virtuali in un set di disponibilità.
Creare un set di disponibilità con New-AzAvailabilitySet. L'esempio seguente crea un set di disponibilità denominato myAvailabilitySet:
$avset = New-AzAvailabilitySet `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsAVset" `
-PlatformFaultDomainCount 2 `
-PlatformUpdateDomainCount 2 `
-Sku aligned
Creare un gruppo di sicurezza di rete
Creare un gruppo di sicurezza di rete per le regole che regolano le comunicazioni in ingresso e in uscita nella rete virtuale.
Creare una regola del gruppo di sicurezza di rete per la porta 3389
Creare una regola del gruppo di sicurezza di rete per consentire le connessioni RDP tramite la porta 3389 con New-AzNetworkSecurityRuleConfig.
$rule1 = New-AzNetworkSecurityRuleConfig `
-Name 'myNetworkSecurityGroupRuleRDP' `
-Description 'Allow RDP' `
-Access Allow `
-Protocol Tcp `
-Direction Inbound `
-Priority 100 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 3389
Creare una regola del gruppo di sicurezza di rete per la porta 80
Creare una regola del gruppo di sicurezza di rete per consentire le connessioni Internet tramite la porta 80 con New-AzNetworkSecurityRuleConfig.
$rule2 = New-AzNetworkSecurityRuleConfig `
-Name 'myNetworkSecurityGroupRuleHTTP' `
-Description 'Allow HTTP' `
-Access Allow `
-Protocol Tcp `
-Direction Inbound `
-Priority 200 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 80
Creare un gruppo di sicurezza di rete
Creare un gruppo di sicurezza di rete con New-AzNetworkSecurityGroup.
$nsg = New-AzNetworkSecurityGroup `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsNSG1" `
-SecurityRules $rule1,$rule2
Creare una rete virtuale
Creare una rete virtuale con New-AzVirtualNetwork. L'esempio seguente crea una rete virtuale denominata dsVnet con mySubnet:
# Create dual stack subnet
$subnet = New-AzVirtualNetworkSubnetConfig `
-Name "dsSubnet" `
-AddressPrefix "10.0.0.0/24","fd00:db8:deca:deed::/64"
# Create the virtual network
$vnet = New-AzVirtualNetwork `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-Name "dsVnet" `
-AddressPrefix "10.0.0.0/16","fd00:db8:deca::/48" `
-Subnet $subnet
Creare NIC
Creare schede di rete virtuali con New-AzNetworkInterface. L'esempio seguente crea due schede di interfaccia di rete virtuali con configurazioni IPv4 e IPv6. Una scheda di interfaccia di rete virtuale per ogni macchina virtuale creata per l'app nei passaggi seguenti.
$Ip4Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp4Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv4 `
-LoadBalancerBackendAddressPool $backendPoolv4 `
-PublicIpAddress $RdpPublicIP_1
$Ip6Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp6Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv6 `
-LoadBalancerBackendAddressPool $backendPoolv6
$NIC_1 = New-AzNetworkInterface `
-Name "dsNIC1" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-NetworkSecurityGroupId $nsg.Id `
-IpConfiguration $Ip4Config,$Ip6Config
$Ip4Config=New-AzNetworkInterfaceIpConfig `
-Name dsIp4Config `
-Subnet $vnet.subnets[0] `
-PrivateIpAddressVersion IPv4 `
-LoadBalancerBackendAddressPool $backendPoolv4 `
-PublicIpAddress $RdpPublicIP_2
$NIC_2 = New-AzNetworkInterface `
-Name "dsNIC2" `
-ResourceGroupName $rg.ResourceGroupName `
-Location $rg.Location `
-NetworkSecurityGroupId $nsg.Id `
-IpConfiguration $Ip4Config,$Ip6Config
Creare macchine virtuali
Impostare un nome utente e una password di amministratore per le macchine virtuali con Get-Credential:
$cred = get-credential -Message "DUAL STACK VNET SAMPLE: Please enter the Administrator credential to log into the VMs."
È ora possibile creare le macchine virtuali con New-AzVM. Nell'esempio seguente vengono create due macchine virtuali e i componenti di rete virtuale necessari, se non esistono già.
$vmsize = "Standard_A2"
$ImagePublisher = "MicrosoftWindowsServer"
$imageOffer = "WindowsServer"
$imageSKU = "2019-Datacenter"
$vmName= "dsVM1"
$VMconfig1 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage 3> $null | Add-AzVMNetworkInterface -Id $NIC_1.Id 3> $null
$VM1 = New-AzVM -ResourceGroupName $rg.ResourceGroupName -Location $rg.Location -VM $VMconfig1
$vmName= "dsVM2"
$VMconfig2 = New-AzVMConfig -VMName $vmName -VMSize $vmsize -AvailabilitySetId $avset.Id 3> $null | Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred -ProvisionVMAgent 3> $null | Set-AzVMSourceImage -PublisherName $ImagePublisher -Offer $imageOffer -Skus $imageSKU -Version "latest" 3> $null | Set-AzVMOSDisk -Name "$vmName.vhd" -CreateOption fromImage 3> $null | Add-AzVMNetworkInterface -Id $NIC_2.Id 3> $null
$VM2 = New-AzVM -ResourceGroupName $rg.ResourceGroupName -Location $rg.Location -VM $VMconfig2
Determinare gli indirizzi IP degli endpoint IPv4 e IPv6
Ottenere tutti gli oggetti dell'interfaccia di rete nel gruppo di risorse per riepilogare gli indirizzi IP usati in questa distribuzione con get-AzNetworkInterface. Ottieni anche gli indirizzi front-end del Load Balancer degli endpoint IPv4 e IPv6 con get-AzpublicIpAddress.
$rgName= "dsRG1"
$NICsInRG= get-AzNetworkInterface -resourceGroupName $rgName
write-host `nSummary of IPs in this Deployment:
write-host ******************************************
foreach ($NIC in $NICsInRG) {
$VMid= $NIC.virtualmachine.id
$VMnamebits= $VMid.split("/")
$VMname= $VMnamebits[($VMnamebits.count-1)]
write-host `nPrivate IP addresses for $VMname
$IPconfigsInNIC= $NIC.IPconfigurations
foreach ($IPconfig in $IPconfigsInNIC) {
$IPaddress= $IPconfig.privateipaddress
write-host " "$IPaddress
IF ($IPconfig.PublicIpAddress.ID) {
$IDbits= ($IPconfig.PublicIpAddress.ID).split("/")
$PipName= $IDbits[($IDbits.count-1)]
$PipObject= get-azPublicIpAddress -name $PipName -resourceGroup $rgName
write-host " "RDP address: $PipObject.IpAddress
}
}
}
write-host `nPublic IP addresses on Load Balancer:
(get-AzpublicIpAddress -resourcegroupname $rgName | where { $_.name -notlike "RdpPublicIP*" }).IpAddress
La figura seguente mostra un output di esempio che elenca gli indirizzi IPv4 e IPv6 privati delle due macchine virtuali e gli indirizzi IP IPv4 front-end e IPv6 del servizio di bilanciamento del carico.
Visualizzare la rete virtuale dual stack IPv6 nel portale di Azure
È possibile visualizzare la rete virtuale dual stack IPv6 nel portale di Azure come indicato di seguito:
- Nella barra di ricerca del portale immettere dsVnet.
- Quando dsVnet viene visualizzato nei risultati della ricerca, selezionarlo. Verrà avviata la pagina Panoramica della rete virtuale dual stack denominata dsVnet. La rete virtuale dual stack mostra le due schede di interfaccia di rete con configurazioni IPv4 e IPv6 che si trovano nella subnet dual stack denominata dsSubnet.
Pulire le risorse
Quando non è più necessario, è possibile usare il comando Remove-AzResourceGroup per rimuovere il gruppo di risorse, la macchina virtuale e tutte le risorse correlate.
Remove-AzResourceGroup -Name dsRG1
Seguire queste istruzioni nell'interfaccia della riga di comando di Azure per distribuire un'applicazione dual stack (IPv4 + IPv6) usando Load Balancer Standard in Azure.
Creare un gruppo di risorse
Prima di poter creare la rete virtuale dual-stack, è necessario creare un gruppo di risorse con az group create. L'esempio seguente crea un gruppo di risorse denominato DsResourceGroup01 nella località eastus :
az group create \
--name DsResourceGroup01 \
--___location eastus
Creare indirizzi IP pubblici IPv4 e IPv6 per il servizio di bilanciamento del carico
Per accedere agli endpoint IPv4 e IPv6 in Internet, sono necessari indirizzi IP pubblici IPv4 e IPv6 per il servizio di bilanciamento del carico. Creare un indirizzo IP pubblico con az network public-ip create. L'esempio seguente crea l'indirizzo IP pubblico IPv4 e IPv6 denominato dsPublicIP_v4 e dsPublicIP_v6 nel gruppo di risorse DsResourceGroup01 :
# Create an IPV4 IP address
az network public-ip create \
--name dsPublicIP_v4 \
--resource-group DsResourceGroup01 \
--___location eastus \
--sku STANDARD \
--allocation-method static \
--version IPv4
# Create an IPV6 IP address
az network public-ip create \
--name dsPublicIP_v6 \
--resource-group DsResourceGroup01 \
--___location eastus \
--sku STANDARD \
--allocation-method static \
--version IPv6
Creare indirizzi IP pubblici per le macchine virtuali
Per accedere in remoto alle macchine virtuali in Internet, sono necessari indirizzi IP pubblici IPv4 per le macchine virtuali. Creare un indirizzo IP pubblico con az network public-ip create.
az network public-ip create \
--name dsVM0_remote_access \
--resource-group DsResourceGroup01 \
--___location eastus \
--sku Standard \
--allocation-method static \
--version IPv4
az network public-ip create \
--name dsVM1_remote_access \
--resource-group DsResourceGroup01 \
--___location eastus \
--sku Standard \
--allocation-method static \
--version IPv4
Creare un'istanza di Load Balancer Standard
In questa sezione, configuri il front-end doppio IP (IPv4 e IPv6) e il pool di indirizzi back-end per il servizio di bilanciamento del carico e poi crei un Load Balancer Standard.
Creare un servizio di bilanciamento del carico
Creare Load Balancer Standard con az network lb create denominato dsLB che include un pool front-end denominato dsLbFrontEnd_v4, un pool back-end denominato dsLbBackEndPool_v4 associato all'indirizzo IP pubblico IPv4 dsPublicIP_v4 creato nel passaggio precedente.
az network lb create \
--name dsLB \
--resource-group DsResourceGroup01 \
--sku Standard \
--___location eastus \
--frontend-ip-name dsLbFrontEnd_v4 \
--public-ip-address dsPublicIP_v4 \
--backend-pool-name dsLbBackEndPool_v4
Creare un front-end IPv6
Creare un indirizzo IP front-end IPV6 con az network lb frontend-ip create. L'esempio seguente crea una configurazione IP front-end denominata dsLbFrontEnd_v6 e collega l'indirizzo dsPublicIP_v6 :
az network lb frontend-ip create \
--lb-name dsLB \
--name dsLbFrontEnd_v6 \
--resource-group DsResourceGroup01 \
--public-ip-address dsPublicIP_v6
Creare un pool di indirizzi back-end IPv6 con il comando az network lb address-pool create. L'esempio seguente crea un pool di indirizzi back-end denominato dsLbBackEndPool_v6 per includere le macchine virtuali con configurazioni della scheda di interfaccia di rete IPv6:
az network lb address-pool create \
--lb-name dsLB \
--name dsLbBackEndPool_v6 \
--resource-group DsResourceGroup01
Creare un probe di integrità
Creare una sonda di integrità con az network lb probe create per controllare lo stato delle macchine virtuali.
az network lb probe create -g DsResourceGroup01 --lb-name dsLB -n dsProbe --protocol tcp --port 3389
Creare una regola di bilanciamento del carico
Una regola di bilanciamento del carico consente di definire come il traffico verrà distribuito alle VM. Definire la configurazione IP front-end per il traffico in ingresso e il pool IP back-end che riceve il traffico, insieme alle porte di origine e di destinazione necessarie.
Creare una regola di bilanciamento del carico con az network lb rule create. L'esempio seguente crea regole di bilanciamento del carico denominate dsLBrule_v4 e dsLBrule_v6 e bilancia il traffico sulla porta TCP80 alle configurazioni IP front-end IPv4 e IPv6:
az network lb rule create \
--lb-name dsLB \
--name dsLBrule_v4 \
--resource-group DsResourceGroup01 \
--frontend-ip-name dsLbFrontEnd_v4 \
--protocol Tcp \
--frontend-port 80 \
--backend-port 80 \
--probe-name dsProbe \
--backend-pool-name dsLbBackEndPool_v4
az network lb rule create \
--lb-name dsLB \
--name dsLBrule_v6 \
--resource-group DsResourceGroup01 \
--frontend-ip-name dsLbFrontEnd_v6 \
--protocol Tcp \
--frontend-port 80 \
--backend-port 80 \
--probe-name dsProbe \
--backend-pool-name dsLbBackEndPool_v6
Creare risorse di rete
Prima di distribuire alcune macchine virtuali, è necessario creare risorse di rete di supporto: set di disponibilità, gruppo di sicurezza di rete, rete virtuale e schede di interfaccia di rete virtuali.
Creare un set di disponibilità
Per migliorare la disponibilità della tua app, inserisci le tue macchine virtuali in un set di disponibilità.
Crea un set di disponibilità con az vm availability-set create. L'esempio seguente crea un set di disponibilità chiamato dsAVset:
az vm availability-set create \
--name dsAVset \
--resource-group DsResourceGroup01 \
--___location eastus \
--platform-fault-___domain-count 2 \
--platform-update-___domain-count 2
Creare un gruppo di sicurezza di rete
Creare un gruppo di sicurezza di rete per le regole che regolano le comunicazioni in ingresso e in uscita nella rete virtuale.
Creare un gruppo di sicurezza di rete
Creare un gruppo di sicurezza di rete con az network nsg create
az network nsg create \
--name dsNSG1 \
--resource-group DsResourceGroup01 \
--___location eastus
Creare una regola del gruppo di sicurezza di rete per le connessioni in ingresso e in uscita
Creare una regola del gruppo di sicurezza di rete per consentire le connessioni RDP tramite la porta 3389, la connessione Internet tramite la porta 80 e per le connessioni in uscita con az network nsg rule create.
# Create inbound rule for port 3389
az network nsg rule create \
--name allowRdpIn \
--nsg-name dsNSG1 \
--resource-group DsResourceGroup01 \
--priority 100 \
--description "Allow Remote Desktop In" \
--access Allow \
--protocol "*" \
--direction Inbound \
--source-address-prefixes "*" \
--source-port-ranges "*" \
--destination-address-prefixes "*" \
--destination-port-ranges 3389
# Create inbound rule for port 80
az network nsg rule create \
--name allowHTTPIn \
--nsg-name dsNSG1 \
--resource-group DsResourceGroup01 \
--priority 200 \
--description "Allow HTTP In" \
--access Allow \
--protocol "*" \
--direction Inbound \
--source-address-prefixes "*" \
--source-port-ranges 80 \
--destination-address-prefixes "*" \
--destination-port-ranges 80
# Create outbound rule
az network nsg rule create \
--name allowAllOut \
--nsg-name dsNSG1 \
--resource-group DsResourceGroup01 \
--priority 300 \
--description "Allow All Out" \
--access Allow \
--protocol "*" \
--direction Outbound \
--source-address-prefixes "*" \
--source-port-ranges "*" \
--destination-address-prefixes "*" \
--destination-port-ranges "*"
Creare una rete virtuale
Creare una rete virtuale con az network vnet create. L'esempio seguente crea una rete virtuale denominata dsVNET con subnet dsSubNET_v4 e dsSubNET_v6:
# Create the virtual network
az network vnet create \
--name dsVNET \
--resource-group DsResourceGroup01 \
--___location eastus \
--address-prefixes "10.0.0.0/16" "fd00:db8:deca::/48"
# Create a single dual stack subnet
az network vnet subnet create \
--name dsSubNET \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--address-prefixes "10.0.0.0/24" "fd00:db8:deca:deed::/64" \
--network-security-group dsNSG1
Creare NIC
Creare NIC virtuali per ogni macchina virtuale con az network nic create. Nell'esempio seguente viene creata una scheda di interfaccia di rete virtuale per ogni macchina virtuale. Ogni scheda di interfaccia di rete ha due configurazioni IP (1 configurazione IPv4, 1 configurazione IPv6). Si crea la configurazione IPV6 con az network nic ip-config create.
# Create NICs
az network nic create \
--name dsNIC0 \
--resource-group DsResourceGroup01 \
--network-security-group dsNSG1 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv4 \
--lb-address-pools dsLbBackEndPool_v4 \
--lb-name dsLB \
--public-ip-address dsVM0_remote_access
az network nic create \
--name dsNIC1 \
--resource-group DsResourceGroup01 \
--network-security-group dsNSG1 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv4 \
--lb-address-pools dsLbBackEndPool_v4 \
--lb-name dsLB \
--public-ip-address dsVM1_remote_access
# Create IPV6 configurations for each NIC
az network nic ip-config create \
--name dsIp6Config_NIC0 \
--nic-name dsNIC0 \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv6 \
--lb-address-pools dsLbBackEndPool_v6 \
--lb-name dsLB
az network nic ip-config create \
--name dsIp6Config_NIC1 \
--nic-name dsNIC1 \
--resource-group DsResourceGroup01 \
--vnet-name dsVNET \
--subnet dsSubNet \
--private-ip-address-version IPv6 \
--lb-address-pools dsLbBackEndPool_v6 \
--lb-name dsLB
Creare macchine virtuali
Creare le macchine virtuali con az vm create. Nell'esempio seguente vengono create due macchine virtuali e i componenti di rete virtuale necessari, se non esistono già.
Creare una macchina virtuale dsVM0 come indicato di seguito:
az vm create \
--name dsVM0 \
--resource-group DsResourceGroup01 \
--nics dsNIC0 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest
Creare una macchina virtuale dsVM1 come indicato di seguito:
az vm create \
--name dsVM1 \
--resource-group DsResourceGroup01 \
--nics dsNIC1 \
--size Standard_A2 \
--availability-set dsAVset \
--image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest
Visualizzare la rete virtuale dual stack IPv6 nel portale di Azure
È possibile visualizzare la rete virtuale dual stack IPv6 nel portale di Azure come indicato di seguito:
- Nella barra di ricerca del portale immettere dsVnet.
- Selezionare myVirtualNetwork quando viene visualizzato nei risultati della ricerca. Verrà avviata la pagina Panoramica della rete virtuale dual stack denominata dsVnet. La rete virtuale dual stack mostra le due schede di interfaccia di rete con configurazioni IPv4 e IPv6 che si trovano nella subnet dual stack denominata dsSubnet.
Pulire le risorse
Quando non è più necessario, è possibile usare il comando az group delete per rimuovere il gruppo di risorse, la macchina virtuale e tutte le risorse correlate.
az group delete --name DsResourceGroup01
Usare il modello descritto in questo articolo per distribuire un'applicazione dual stack (IPv4 + IPv6) usando Load Balancer Standard in Azure.
Configurazioni necessarie
Cerca le sezioni del modello nel modello per vedere dove devono trovarsi.
Spazio degli indirizzi IPv6 per la rete virtuale
Sezione Modello da aggiungere:
"addressSpace": {
"addressPrefixes": [
"[variables('vnetv4AddressRange')]",
"[variables('vnetv6AddressRange')]"
Subnet IPv6 all'interno dello spazio degli indirizzi della rete virtuale IPv6
Sezione Modello da aggiungere:
{
"name": "V6Subnet",
"properties": {
"addressPrefix": "[variables('subnetv6AddressRange')]"
}
Configurazione IPv6 per la scheda di interfaccia di rete
Sezione Modello da aggiungere:
{
"name": "ipconfig-v6",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"privateIPAddressVersion":"IPv6",
"subnet": {
"id": "[variables('v6-subnet-id')]"
},
"loadBalancerBackendAddressPools": [
{
"id": "[concat(resourceId('Microsoft.Network/loadBalancers','loadBalancer'),'/backendAddressPools/LBBAP-v6')]"
}
Regole del gruppo di sicurezza di rete IPv6
{
"name": "default-allow-rdp",
"properties": {
"description": "Allow RDP",
"protocol": "Tcp",
"sourcePortRange": "33819-33829",
"destinationPortRange": "5000-6000",
"sourceAddressPrefix": "fd00:db8:deca:deed::/64",
"destinationAddressPrefix": "fd00:db8:deca:deed::/64",
"access": "Allow",
"priority": 1003,
"direction": "Inbound"
}
Configurazione condizionale
Se si usa un'appliance virtuale di rete, aggiungere route IPv6 nella tabella di route. In caso contrario, questa configurazione è facoltativa.
{
"type": "Microsoft.Network/routeTables",
"name": "v6route",
"apiVersion": "[variables('ApiVersion')]",
"___location": "[resourceGroup().___location]",
"properties": {
"routes": [
{
"name": "v6route",
"properties": {
"addressPrefix": "fd00:db8:deca:deed::/64",
"nextHopType": "VirtualAppliance",
"nextHopIpAddress": "fd00:db8:ace:f00d::1"
}
Configurazione facoltativa
Accesso Internet IPv6 per la rete virtuale
{
"name": "LBFE-v6",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses','lbpublicip-v6')]"
}
Indirizzi IP pubblici IPv6
{
"apiVersion": "[variables('ApiVersion')]",
"type": "Microsoft.Network/publicIPAddresses",
"name": "lbpublicip-v6",
"___location": "[resourceGroup().___location]",
"sku": {
"name": "Standard"
},
"properties": {
"publicIPAllocationMethod": "Static",
"publicIPAddressVersion": "IPv6"
}
Front-end IPv6 per bilanciamento del carico
{
"name": "LBFE-v6",
"properties": {
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses','lbpublicip-v6')]"
}
Pool di indirizzi back-end IPv6 per il Load Balancer
"backendAddressPool": {
"id": "[concat(resourceId('Microsoft.Network/loadBalancers', 'loadBalancer'), '/backendAddressPools/LBBAP-v6')]"
},
"protocol": "Tcp",
"frontendPort": 8080,
"backendPort": 8080
},
"name": "lbrule-v6"
Regole del servizio di bilanciamento del carico IPv6 per associare le porte in ingresso e in uscita
{
"name": "ipconfig-v6",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"privateIPAddressVersion":"IPv6",
"subnet": {
"id": "[variables('v6-subnet-id')]"
},
"loadBalancerBackendAddressPools": [
{
"id": "[concat(resourceId('Microsoft.Network/loadBalancers','loadBalancer'),'/backendAddressPools/LBBAP-v6')]"
}
Modello di esempio di JSON per macchina virtuale
Per distribuire un'applicazione dual stack IPv6 nella rete virtuale di Azure usando il modello di Azure Resource Manager, vedere il modello di esempio qui.