Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial, creas un Registro Enlazado del Gestor de Tráfico en Azure DNS usando Azure PowerShell. Un Registro Enlazado de Traffic Manager conecta un registro DNS establecido directamente a un perfil de Azure Traffic Manager, devolviendo direcciones IP a clientes sin una resolución CNAME intermedia.
Para ver un tutorial con Azure Portal, consulte Creación de un registro vinculado de Traffic Manager mediante Azure Portal. Para una visión conceptual, véase Visión general de Registros Enlazados del Gestor de Tráfico.
En este tutorial, obtendrá información sobre cómo:
- Crear la infraestructura de red y máquinas virtuales.
- Crea un perfil de Traffic Manager con puntos de conexión.
- Crea un registro vinculado del gestor de tráfico usando Azure PowerShell.
- Pruebe el registro enlazado de Traffic Manager.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Prerequisites
- Una cuenta de Azure con una suscripción activa.
- Azure PowerShell versión 12.0.0 o posterior instalada localmente, o use Azure Cloud Shell. Ejecute
Get-Module -ListAvailable Azpara comprobar la versión. Si necesita instalarla o actualizarla, consulte Instalación de Azure PowerShell. - Un nombre de dominio hospedado en Azure DNS. Si no tienes una zona de Azure DNS, crea una y delega tu dominio a Azure DNS.
Nota:
En este tutorial, contoso.com se usa como nombre de dominio de ejemplo. Reemplace contoso.com por su propio nombre de dominio.
Nota:
Se recomienda usar el módulo de PowerShell de Azure Az para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para obtener información sobre cómo migrar al módulo Az PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Azure Cloud Shell
Azure hospeda Azure Cloud Shell, un entorno de shell interactivo que puede usar a través del explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con servicios de Azure. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.
Para iniciar Azure Cloud Shell:
| Opción | Ejemplo o vínculo |
|---|---|
| Seleccione Pruébelo en la esquina superior derecha de un código o bloque de comandos. Al seleccionar Inténtalo, no se copia automáticamente el código o el comando en Cloud Shell. |
|
| Vaya a https://shell.azure.com o seleccione el botón Launch Cloud Shell para abrir Cloud Shell en el explorador. |
|
| Seleccione el botón Cloud Shell en la barra de menús en la parte superior derecha del Azure portal. |
|
Para usar Azure Cloud Shell:
Inicie Cloud Shell.
Seleccione el botón Copiar en un bloque de código (o bloque de comandos) para copiar el código o comando.
Pegue el código o comando en la sesión de Cloud Shell seleccionando Ctrl+Shift+V en Windows y Linux, o seleccionando Cmd+Shift+V en macOS.
Seleccione Enter para ejecutar el código o comando.
Establecer variables
Define variables para los nombres de los recursos y las ubicaciones que se usan a lo largo de este tutorial.
$ResourceGroup = "test-rg"
$Location = "eastus"
$VNetName = "vnet-1"
$TmProfileName = "tm-profile"
$DnsZone = "contoso.com"
$DnsZoneResourceGroup = "<dns-zone-resource-group>"
Nota:
Sustituye <dns-zone-resource-group> por el grupo de recursos que contiene tu zona Azure DNS existente.
Creación del grupo de recursos
New-AzResourceGroup -Name $ResourceGroup -Location $Location
Crear la red virtual
$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
Creación de máquinas virtuales de servidor web
Crear las direcciones IP públicas
$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
Creación del grupo de seguridad de red
$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
Crear las interfaces de red y las máquinas virtuales
$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 las configuraciones de la máquina virtual y despliega las máquinas virtuales. Cuando se lo pida, introduce una contraseña para la cuenta de administrador.
$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
Instala NGINX en las máquinas virtuales
$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
Recuperar las direcciones IP públicas
$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"
Crear el perfil del Gestor de Tráfico
$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
Agregar puntos de conexión al perfil de 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
Crear el Registro Vinculado del Gestor de Tráfico
Use New-AzDnsRecordSet con el parámetro -TrafficManagementProfile para crear el registro vinculado de Traffic Manager. El siguiente comando crea un registro A en el ápice de la zona (@).
Nota:
El -TrafficManagementProfile parámetro está disponible en Az.Dns 5.0.0 y posteriores, y requiere una versión de la API que soporte Traffic Manager Linked Records (2024-06-01-preview o posterior).
$TmProfileId = $TmProfile.Id
$apex = @{
ResourceGroupName = $DnsZoneResourceGroup
ZoneName = $DnsZone
Name = "@"
RecordType = "A"
Ttl = 30
TrafficManagementProfile = $TmProfileId
}
New-AzDnsRecordSet @apex
Para crear el registro de un subdominio en lugar del ápice de zona, sustituyal "@" por el nombre del subdominio. Por ejemplo:
$www = @{
ResourceGroupName = $DnsZoneResourceGroup
ZoneName = $DnsZone
Name = "www"
RecordType = "A"
Ttl = 30
TrafficManagementProfile = $TmProfileId
}
New-AzDnsRecordSet @www
Verifica el registro vinculado
$record = @{
ResourceGroupName = $DnsZoneResourceGroup
ZoneName = $DnsZone
Name = "@"
RecordType = "A"
}
Get-AzDnsRecordSet @record
La salida incluye una TrafficManagementProfile propiedad que muestra el ID de recurso del perfil del Gestor de Tráfico, confirmando que el enlace está establecido.
Nota:
El valor TTL en el registro refleja el valor TTL del perfil de Traffic Manager. Cualquier TTL especificado durante la creación de registros se reemplaza por el valor TTL DNS del perfil del Gestor de Tráfico.
Prueba el registro enlazado del Traffic Manager
Recupera los servidores de nombres de tu zona DNS y consulta uno directamente.
$ns = @{
ResourceGroupName = $DnsZoneResourceGroup
ZoneName = $DnsZone
Name = "@"
RecordType = "NS"
}
$NameServer = (Get-AzDnsRecordSet @ns).Records[0].Nsdname
Resolve-DnsName -Name $DnsZone -Server $NameServer -Type A
La respuesta contiene registros A con direcciones IP, confirmando que los Registros Enlazados del Gestor de Tráfico devuelven direcciones IP directamente sin un salto CNAME.
Conmutación por error de prueba
Navega por tu dominio. Deberías ver la página NGINX de VM-1.
Detener la VM vm-1:
Stop-AzVM -ResourceGroupName $ResourceGroup -Name "vm-1" -ForceEspera unos minutos a que Traffic Manager detecte el endpoint como poco saludable.
Vacía tu caché DNS local si es necesario y luego vuelve a navegar por tu dominio. Ahora deberías ver la página de VM-2.
Reinicia VM-1 para restaurar la configuración original:
Start-AzVM -ResourceGroupName $ResourceGroup -Name "vm-1"
Limpieza de recursos
Cuando ya no necesites los recursos, elimina el grupo de recursos y el registro 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
Pasos siguientes
En este tutorial, creaste un Registro Enlazado del Gestor de Tráfico usando Azure PowerShell. El registro vincula tu zona DNS a un perfil de Traffic Manager, devolviendo direcciones IP directamente a los clientes.
- Infórmate más sobre los Registros Vinculados del Gestor de Tráfico.
- Crea un registro enlazado del Gestor de Tráfico usando CLI de Azure o el portal de Azure.
- Más información sobre los métodos de enrutamiento de Traffic Manager.
- Infártese más sobre Strictly Typed Profiles.