Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo tutorial, crei un record collegato di Traffic Manager in DNS di Azure usando Azure PowerShell. Un Record Collegato di Traffic Manager collega direttamente un record DNS a un profilo Gestione traffico di Azure, restituendo indirizzi IP ai client senza una risoluzione CNAME intermedia.
Important
I Record collegati di Gestione traffico sono attualmente in ANTEPRIMA. Vedi le Condizioni supplementari d'uso per le anteprime di Microsoft Azure per conoscere le condizioni legali applicabili alle funzionalità di Azure che sono in beta, in anteprima o non ancora rilasciate nella disponibilità generale.
Per una guida basata su portale, vedi Crea un Record Collegato del Traffic Manager usando il portale Azure. Per una panoramica concettuale, vedi Traffic Manager Linked Records Overview.
In questa esercitazione apprenderai a:
- Crea l'infrastruttura di rete e delle macchine virtuali.
- Crea un profilo Traffic Manager con endpoint.
- Crea un record collegato al Traffic Manager usando Azure PowerShell.
- Provare il record collegato di Gestione traffico.
Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Prerequisiti
- Un account Azure con una sottoscrizione attiva.
- Azure PowerShell versione 12.0.0 o successiva installata localmente, oppure usa Azure Cloud Shell. Esegui
Get-Module -ListAvailable Azper verificare la versione. Per eseguire l'installazione o l'aggiornamento, vedere Installare Azure PowerShell. - Nome di dominio ospitato in DNS di Azure. Se non hai una zona DNS di Azure, creala e delega il tuo dominio ad DNS di Azure.
Note
In questa esercitazione viene usato contoso.com come nome di dominio di esempio. Sostituire contoso.com con il proprio nome di dominio.
Note
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo Az PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Azure Cloud Shell
Azure ospita Azure Cloud Shell, un ambiente shell interattivo che è possibile usare tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi preinstallati di Cloud Shell per eseguire il codice contenuto in questo articolo senza dover installare strumenti nell'ambiente locale.
Per avviare Azure Cloud Shell:
| Option | Esempio/collegamento |
|---|---|
| Selezionare Prova nell'angolo superiore destro di un codice o di un blocco di comandi. Quando si seleziona Prova, il codice o il comando non viene copiato automaticamente in Cloud Shell. |
|
| Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. |
|
| Selezionare il pulsante Cloud Shell nella barra dei menu in alto a destra nel portale di Azure. |
|
Per usare Azure Cloud Shell:
Avviare Cloud Shell.
Selezionare il pulsante Copia in un blocco di codice (o blocco di comandi) per copiare il codice o il comando.
Incollare il codice o il comando nella sessione di Cloud Shell selezionando Ctrl+Shift+V in Windows e Linux oppure selezionando Cmd+Shift+V in macOS.
Premere INVIO per eseguire il codice o il comando.
Impostare variabili
Definisci variabili per i nomi delle risorse e le posizioni utilizzate in questo tutorial.
$ResourceGroup = "test-rg"
$Location = "eastus"
$VNetName = "vnet-1"
$TmProfileName = "tm-profile"
$DnsZone = "contoso.com"
$DnsZoneResourceGroup = "<dns-zone-resource-group>"
Note
Sostituisci <dns-zone-resource-group> con il gruppo di risorse che contiene la tua attuale zona DNS di Azure.
Creare il gruppo di risorse
New-AzResourceGroup -Name $ResourceGroup -Location $Location
Creare la rete virtuale
$subnet = @{
Name = "subnet-1"
AddressPrefix = "10.10.0.0/24"
}
$SubnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
$vnet = @{
ResourceGroupName = $ResourceGroup
Name = $VNetName
Location = $Location
AddressPrefix = "10.10.0.0/16"
Subnet = $SubnetConfig
}
New-AzVirtualNetwork @vnet
Creare macchine virtuali server Web
Crea gli indirizzi IP pubblici
$pip1 = @{
ResourceGroupName = $ResourceGroup
Name = "public-ip-1"
Location = $Location
Sku = "Standard"
AllocationMethod = "Static"
DomainNameLabel = "vm-1-tmlink"
}
$Vm1Pip = New-AzPublicIpAddress @pip1
$pip2 = @{
ResourceGroupName = $ResourceGroup
Name = "public-ip-2"
Location = $Location
Sku = "Standard"
AllocationMethod = "Static"
DomainNameLabel = "vm-2-tmlink"
}
$Vm2Pip = New-AzPublicIpAddress @pip2
Creare il gruppo di sicurezza di rete
$httpRule = @{
Name = "AllowHTTP"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 100
SourceAddressPrefix = "*"
SourcePortRange = "*"
DestinationAddressPrefix = "*"
DestinationPortRange = 80
Access = "Allow"
}
$HttpRule = New-AzNetworkSecurityRuleConfig @httpRule
$httpsRule = @{
Name = "AllowHTTPS"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 110
SourceAddressPrefix = "*"
SourcePortRange = "*"
DestinationAddressPrefix = "*"
DestinationPortRange = 443
Access = "Allow"
}
$HttpsRule = New-AzNetworkSecurityRuleConfig @httpsRule
$nsg = @{
ResourceGroupName = $ResourceGroup
Location = $Location
Name = "nsg-1"
SecurityRules = $HttpRule, $HttpsRule
}
$Nsg = New-AzNetworkSecurityGroup @nsg
Creare le interfacce di rete e le macchine virtuali
$VNet = Get-AzVirtualNetwork -ResourceGroupName $ResourceGroup -Name $VNetName
$Subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $VNet -Name "subnet-1"
$nic1 = @{
ResourceGroupName = $ResourceGroup
Name = "nic-1"
Location = $Location
SubnetId = $Subnet.Id
PublicIpAddressId = $Vm1Pip.Id
NetworkSecurityGroupId = $Nsg.Id
}
$Vm1Nic = New-AzNetworkInterface @nic1
$nic2 = @{
ResourceGroupName = $ResourceGroup
Name = "nic-2"
Location = $Location
SubnetId = $Subnet.Id
PublicIpAddressId = $Vm2Pip.Id
NetworkSecurityGroupId = $Nsg.Id
}
$Vm2Nic = New-AzNetworkInterface @nic2
Crea le configurazioni delle macchine virtuali e distribuisci le VM. Quando richiesto, inserisci una password per l'account amministratore.
$Credential = Get-Credential -Message "Enter a username and password for the VMs"
$image = @{
PublisherName = "Canonical"
Offer = "ubuntu-24_04-lts"
Skus = "server"
Version = "latest"
}
$Vm1Config = New-AzVMConfig -VMName "vm-1" -VMSize "Standard_B1s" |
Set-AzVMOperatingSystem -Linux -ComputerName "vm-1" -Credential $Credential |
Set-AzVMSourceImage @image |
Add-AzVMNetworkInterface -Id $Vm1Nic.Id
New-AzVM -ResourceGroupName $ResourceGroup -Location $Location -VM $Vm1Config -AsJob
$Vm2Config = New-AzVMConfig -VMName "vm-2" -VMSize "Standard_B1s" |
Set-AzVMOperatingSystem -Linux -ComputerName "vm-2" -Credential $Credential |
Set-AzVMSourceImage @image |
Add-AzVMNetworkInterface -Id $Vm2Nic.Id
New-AzVM -ResourceGroupName $ResourceGroup -Location $Location -VM $Vm2Config
Installa NGINX sulle macchine virtuali
$run1 = @{
ResourceGroupName = $ResourceGroup
VMName = "vm-1"
CommandId = "RunShellScript"
ScriptString = "sudo apt-get update && sudo apt-get install -y nginx && echo 'Hello World from vm-1' | sudo tee /var/www/html/index.html"
}
Invoke-AzVMRunCommand @run1
$run2 = @{
ResourceGroupName = $ResourceGroup
VMName = "vm-2"
CommandId = "RunShellScript"
ScriptString = "sudo apt-get update && sudo apt-get install -y nginx && echo 'Hello World from vm-2' | sudo tee /var/www/html/index.html"
}
Invoke-AzVMRunCommand @run2
Recupera gli indirizzi IP pubblici
$Vm1IPAddress = (Get-AzPublicIpAddress -ResourceGroupName $ResourceGroup -Name "public-ip-1").IpAddress
$Vm2IPAddress = (Get-AzPublicIpAddress -ResourceGroupName $ResourceGroup -Name "public-ip-2").IpAddress
Write-Output "vm-1 IP: $Vm1IPAddress"
Write-Output "vm-2 IP: $Vm2IPAddress"
Crea il profilo del Traffic Manager
$tm = @{
Name = $TmProfileName
ResourceGroupName = $ResourceGroup
TrafficRoutingMethod = "Priority"
RelativeDnsName = "tm-profile-$(Get-Random)"
Ttl = 30
MonitorProtocol = "HTTP"
MonitorPort = 80
MonitorPath = "/"
RecordType = "A"
}
$TmProfile = New-AzTrafficManagerProfile @tm
Aggiungi endpoint al profilo di Traffic Manager
$ep1 = @{
EndpointName = "tmendpoint-1"
TrafficManagerProfile = $TmProfile
Type = "ExternalEndpoints"
Target = $Vm1IPAddress
EndpointStatus = "Enabled"
Priority = 1
}
Add-AzTrafficManagerEndpointConfig @ep1
$ep2 = @{
EndpointName = "tmendpoint-2"
TrafficManagerProfile = $TmProfile
Type = "ExternalEndpoints"
Target = $Vm2IPAddress
EndpointStatus = "Enabled"
Priority = 2
}
Add-AzTrafficManagerEndpointConfig @ep2
Set-AzTrafficManagerProfile -TrafficManagerProfile $TmProfile
Crea il record associato di Traffic Manager
Usa New-AzDnsRecordSet con il -TrafficManagementProfile parametro per creare il Record Collegato del Traffic Manager. Il seguente comando crea un record A all'apice della zona (@).
Note
Il parametro -TrafficManagementProfile è disponibile in Az.Dns 5.0.0 e successivi e richiede l'API di anteprima dei Record Collegati del Traffic Manager (2024-06-01-preview o successiva).
$TmProfileId = $TmProfile.Id
$apex = @{
ResourceGroupName = $DnsZoneResourceGroup
ZoneName = $DnsZone
Name = "@"
RecordType = "A"
Ttl = 30
TrafficManagementProfile = $TmProfileId
}
New-AzDnsRecordSet @apex
Per creare il record per un sottodominio invece dell'apice della zona, sostituisci "@" con il nome del sottodominio. Per esempio:
$www = @{
ResourceGroupName = $DnsZoneResourceGroup
ZoneName = $DnsZone
Name = "www"
RecordType = "A"
Ttl = 30
TrafficManagementProfile = $TmProfileId
}
New-AzDnsRecordSet @www
Verifica il record collegato
$record = @{
ResourceGroupName = $DnsZoneResourceGroup
ZoneName = $DnsZone
Name = "@"
RecordType = "A"
}
Get-AzDnsRecordSet @record
L'output contiene una proprietà TrafficManagementProfile che mostra l'ID della risorsa del profilo Traffic Manager, confermando che il collegamento è stato stabilito.
Note
Il valore TTL nel record riflette il profilo TTL del Traffic Manager. Qualsiasi TTL specificato durante la creazione del record viene sostituito dal valore DNS TTL del profilo Traffic Manager.
Testa il record collegato al Traffic Manager
Recupera i server di nomi della tua zona DNS e consulta direttamente uno di essi.
$ns = @{
ResourceGroupName = $DnsZoneResourceGroup
ZoneName = $DnsZone
Name = "@"
RecordType = "NS"
}
$NameServer = (Get-AzDnsRecordSet @ns).Records[0].Nsdname
Resolve-DnsName -Name $DnsZone -Server $NameServer -Type A
La risposta contiene record A con indirizzi IP, confermando che i Record Collegati del Traffic Manager restituiscono direttamente gli indirizzi IP senza un salto CNAME.
Failover di test
Naviga nel tuo dominio. Dovresti vedere la pagina NGINX per VM-1.
Ferma la VM-1 VM:
Stop-AzVM -ResourceGroupName $ResourceGroup -Name "vm-1" -ForceAspetta qualche minuto che Traffic Manager rilevi l'endpoint come non sano.
Scarica la cache DNS locale se necessario, poi naviga di nuovo sul tuo dominio. Dovrebbe essere visualizzata la pagina vm-2.
Riavvia VM-1 per ripristinare la configurazione originale:
Start-AzVM -ResourceGroupName $ResourceGroup -Name "vm-1"
Pulire le risorse
Quando non hai più bisogno delle risorse, rimuovi il gruppo di risorse e il record DNS:
# Delete the resource group and all resources within it
Remove-AzResourceGroup -Name $ResourceGroup -Force -AsJob
# Delete the Traffic Manager Linked Record from the DNS zone
$cleanup = @{
ResourceGroupName = $DnsZoneResourceGroup
ZoneName = $DnsZone
Name = "@"
RecordType = "A"
}
Remove-AzDnsRecordSet @cleanup
Passaggi successivi
In questo tutorial, hai creato un Record Collegato al Traffic Manager usando Azure PowerShell. Il record collega la tua zona DNS a un profilo Traffic Manager, restituendo gli indirizzi IP direttamente ai client.
- Scopri di più sui Record Collegati al Traffic Manager.
- Crea un Record Collegato al Traffic Manager usando interfaccia della riga di comando di Azure o il portale Azure.
- Leggere altre informazioni sui metodi di routing di Gestione traffico.
- Scopri di più su Strictly Typed Profiles.