Sdílet prostřednictvím


Vytvoření virtuálních sítí pro clustery Azure HDInsight

Tento článek obsahuje příklady a ukázky kódu pro vytváření a konfiguraci virtuálních sítí Azure. Použití s clustery Azure HDInsight Zobrazí se podrobné příklady vytváření skupin zabezpečení sítě (NSG) a konfigurace DNS.

Základní informace o používání virtuálních sítí s Azure HDInsight najdete v tématu Plánování virtuální sítě pro Azure HDInsight.

Předpoklady pro ukázky kódu a příklady

Před spuštěním některého z ukázek kódu v tomto článku pochopili sítě TCP/IP. Pokud sítě TCP/IP neznáte, obraťte se před úpravami produkčních sítí na někoho jiného.

Mezi další požadavky ukázek v tomto článku patří následující položky:

  • Pokud používáte PowerShell, musíte nainstalovat modul AZ.
  • Pokud chcete použít Azure CLI a ještě jste ho nenainstalovali, přečtěte si téma Instalace Azure CLI.

Důležité

Pokud hledáte podrobné pokyny k připojení SLUŽBY HDInsight k místní síti pomocí služby Azure Virtual Network, přečtěte si téma Postup připojení SLUŽBY HDInsight k místní síti.

Příklad: Skupiny zabezpečení sítě se službou HDInsight

Příklady v této části ukazují, jak vytvořit pravidla skupiny zabezpečení sítě. Pravidla umožňují službě HDInsight komunikovat se službami pro správu Azure. Než použijete příklady, upravte IP adresy tak, aby odpovídaly ip adresě pro oblast Azure, kterou používáte. Tyto informace najdete v IP adresách pro správu SLUŽBY HDInsight.

Šablona Azure Resource Manageru

Následující šablona Resource Manageru vytvoří virtuální síť, která omezuje příchozí provoz, ale povoluje provoz z IP adres požadovaných službou HDInsight. Tato šablona také vytvoří cluster HDInsight ve virtuální síti.

Azure PowerShell

Pomocí následujícího skriptu PowerShellu vytvořte virtuální síť, která omezuje příchozí provoz a povoluje provoz z IP adres pro oblast Severní Evropa.

Důležité

Změňte IP adresy pro hdirule1 a hdirule2 v tomto příkladu tak, aby odpovídaly oblasti Azure, kterou používáte. Tyto informace najdete v IP adresách pro správu SLUŽBY HDInsight.

$vnetName = "Replace with your virtual network name"
$resourceGroupName = "Replace with the resource group the virtual network is in"
$subnetName = "Replace with the name of the subnet that you plan to use for HDInsight"

# Get the Virtual Network object
$vnet = Get-AzVirtualNetwork `
    -Name $vnetName `
    -ResourceGroupName $resourceGroupName

# Get the region the Virtual network is in.
$location = $vnet.Location

# Get the subnet object
$subnet = $vnet.Subnets | Where-Object Name -eq $subnetName

# Create a Network Security Group.
# And add exemptions for the HDInsight health and management services.
$nsg = New-AzNetworkSecurityGroup `
    -Name "hdisecure" `
    -ResourceGroupName $resourceGroupName `
    -Location $location `
    | Add-AzNetworkSecurityRuleConfig `
        -name "hdirule1" `
        -Description "HDI health and management address 52.164.210.96" `
        -Protocol "*" `
        -SourcePortRange "*" `
        -DestinationPortRange "443" `
        -SourceAddressPrefix "52.164.210.96" `
        -DestinationAddressPrefix "VirtualNetwork" `
        -Access Allow `
        -Priority 300 `
        -Direction Inbound `
    | Add-AzNetworkSecurityRuleConfig `
        -Name "hdirule2" `
        -Description "HDI health and management 13.74.153.132" `
        -Protocol "*" `
        -SourcePortRange "*" `
        -DestinationPortRange "443" `
        -SourceAddressPrefix "13.74.153.132" `
        -DestinationAddressPrefix "VirtualNetwork" `
        -Access Allow `
        -Priority 301 `
        -Direction Inbound `
    | Add-AzNetworkSecurityRuleConfig `
        -Name "hdirule3" `
        -Description "HDI health and management 168.61.49.99" `
        -Protocol "*" `
        -SourcePortRange "*" `
        -DestinationPortRange "443" `
        -SourceAddressPrefix "168.61.49.99" `
        -DestinationAddressPrefix "VirtualNetwork" `
        -Access Allow `
        -Priority 302 `
        -Direction Inbound `
    | Add-AzNetworkSecurityRuleConfig `
        -Name "hdirule4" `
        -Description "HDI health and management 23.99.5.239" `
        -Protocol "*" `
        -SourcePortRange "*" `
        -DestinationPortRange "443" `
        -SourceAddressPrefix "23.99.5.239" `
        -DestinationAddressPrefix "VirtualNetwork" `
        -Access Allow `
        -Priority 303 `
        -Direction Inbound `
    | Add-AzNetworkSecurityRuleConfig `
        -Name "hdirule5" `
        -Description "HDI health and management 168.61.48.131" `
        -Protocol "*" `
        -SourcePortRange "*" `
        -DestinationPortRange "443" `
        -SourceAddressPrefix "168.61.48.131" `
        -DestinationAddressPrefix "VirtualNetwork" `
        -Access Allow `
        -Priority 304 `
        -Direction Inbound `
    | Add-AzNetworkSecurityRuleConfig `
        -Name "hdirule6" `
        -Description "HDI health and management 138.91.141.162" `
        -Protocol "*" `
        -SourcePortRange "*" `
        -DestinationPortRange "443" `
        -SourceAddressPrefix "138.91.141.162" `
        -DestinationAddressPrefix "VirtualNetwork" `
        -Access Allow `
        -Priority 305 `
        -Direction Inbound `

# Set the changes to the security group
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg

# Apply the NSG to the subnet
Set-AzVirtualNetworkSubnetConfig `
    -VirtualNetwork $vnet `
    -Name $subnetName `
    -AddressPrefix $subnet.AddressPrefix `
    -NetworkSecurityGroup $nsg
$vnet | Set-AzVirtualNetwork

Tento příklad ukazuje, jak přidat pravidla umožňující příchozí provoz na požadovaných IP adresách. Neobsahuje pravidlo pro omezení příchozího přístupu z jiných zdrojů. Následující kód ukazuje, jak povolit přístup SSH z internetu:

Get-AzNetworkSecurityGroup -Name hdisecure -ResourceGroupName RESOURCEGROUP |
Add-AzNetworkSecurityRuleConfig -Name "SSH" -Description "SSH" -Protocol "*" -SourcePortRange "*" -DestinationPortRange "22" -SourceAddressPrefix "*" -DestinationAddressPrefix "VirtualNetwork" -Access Allow -Priority 306 -Direction Inbound

Azure CLI

Pomocí následujících kroků vytvořte virtuální síť, která omezuje příchozí provoz, ale umožňuje provoz z IP adres požadovaných službou HDInsight.

  1. Pomocí následujícího příkazu vytvořte novou skupinu zabezpečení sítě s názvem hdisecure. Nahraďte RESOURCEGROUP skupinou prostředků, která obsahuje službu Azure Virtual Network. Nahraďte LOCATION umístěním (oblastí), ve které byla skupina vytvořena.

    az network nsg create -g RESOURCEGROUP -n hdisecure -l LOCATION
    

    Po vytvoření skupiny obdržíte informace o nové skupině.

  2. Pomocí následujícího příkazu přidejte pravidla do nové skupiny zabezpečení sítě, která umožňuje příchozí komunikaci na portu 443 ze služby Stavu a správy Azure HDInsight. Nahraďte RESOURCEGROUP názvem skupiny prostředků, která obsahuje službu Azure Virtual Network.

    Důležité

    Změňte IP adresy pro hdirule1 a hdirule2 v tomto příkladu tak, aby odpovídaly oblasti Azure, kterou používáte. Tyto informace najdete v IP adresách pro správu SLUŽBY HDInsight.

    az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule1 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "52.164.210.96" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 300 --direction "Inbound"
    az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule2 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "13.74.153.132" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 301 --direction "Inbound"
    az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule3 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "168.61.49.99" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 302 --direction "Inbound"
    az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule4 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "23.99.5.239" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 303 --direction "Inbound"
    az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule5 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "168.61.48.131" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 304 --direction "Inbound"
    az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n hdirule6 --protocol "*" --source-port-range "*" --destination-port-range "443" --source-address-prefix "138.91.141.162" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 305 --direction "Inbound"
    
  3. Pokud chcete načíst jedinečný identifikátor této skupiny zabezpečení sítě, použijte následující příkaz:

    az network nsg show -g RESOURCEGROUP -n hdisecure --query "id"
    

    Tento příkaz vrátí hodnotu podobnou následujícímu textu:

    "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
    
  4. Pomocí následujícího příkazu použijte skupinu zabezpečení sítě na podsíť. GUID Nahraďte hodnoty RESOURCEGROUP hodnotami vrácenými z předchozího kroku. Nahraďte VNETNAME název SUBNETNAME virtuální sítě a název podsítě, kterou chcete vytvořit.

    az network vnet subnet update -g RESOURCEGROUP --vnet-name VNETNAME --name SUBNETNAME --set networkSecurityGroup.id="/subscriptions/GUID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
    

    Po dokončení tohoto příkazu můžete hdInsight nainstalovat do virtuální sítě.

Tyto kroky otevřou přístup pouze ke službě stavu a správy SLUŽBY HDInsight v cloudu Azure. Veškerý jiný přístup ke clusteru HDInsight mimo virtuální síť je zablokovaný. Pokud chcete povolit přístup mimo virtuální síť, musíte přidat další pravidla skupiny zabezpečení sítě.

Následující kód ukazuje, jak povolit přístup SSH z internetu:

az network nsg rule create -g RESOURCEGROUP --nsg-name hdisecure -n ssh --protocol "*" --source-port-range "*" --destination-port-range "22" --source-address-prefix "*" --destination-address-prefix "VirtualNetwork" --access "Allow" --priority 306 --direction "Inbound"

Příklad: Konfigurace DNS

Překlad názvů mezi virtuální sítí a připojenou místní sítí

V tomto příkladu se předpokládá následující předpoklady:

  • Máte virtuální síť Azure, která je připojená k místní síti pomocí brány VPN.

  • Vlastní server DNS ve virtuální síti používá jako operační systém Linux nebo Unix.

  • Vazba se nainstaluje na vlastní server DNS.

Na vlastním serveru DNS ve virtuální síti:

  1. K vyhledání přípony DNS virtuální sítě použijte Azure PowerShell nebo Azure CLI:

    Nahraďte RESOURCEGROUP názvem skupiny prostředků, která obsahuje virtuální síť, a pak zadejte příkaz:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. Na vlastním serveru DNS pro virtuální síť použijte jako obsah /etc/bind/named.conf.local souboru následující text:

    // Forward requests for the virtual network suffix to Azure recursive resolver
    zone "0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net" {
        type forward;
        forwarders {168.63.129.16;}; # Azure recursive resolver
    };
    

    0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net Nahraďte hodnotu příponou DNS vaší virtuální sítě.

    Tato konfigurace směruje všechny požadavky DNS na příponu DNS virtuální sítě do rekurzivního překladače Azure.

  3. Na vlastním serveru DNS pro virtuální síť použijte jako obsah /etc/bind/named.conf.options souboru následující text:

    // Clients to accept requests from
    // TODO: Add the IP range of the joined network to this list
    acl goodclients {
        10.0.0.0/16; # IP address range of the virtual network
        localhost;
        localnets;
    };
    
    options {
            directory "/var/cache/bind";
    
            recursion yes;
    
            allow-query { goodclients; };
    
            # All other requests are sent to the following
            forwarders {
                192.168.0.1; # Replace with the IP address of your on-premises DNS server
            };
    
            dnssec-validation auto;
    
            auth-nxdomain no;    # conform to RFC1035
            listen-on { any; };
    };
    
    • 10.0.0.0/16 Nahraďte hodnotu rozsahem IP adres vaší virtuální sítě. Tato položka umožňuje adresy požadavků na překlad ip adres v rámci tohoto rozsahu.

    • Do oddílu přidejte rozsah IP adres místní sítě acl goodclients { ... } . Entry umožňuje požadavky na překlad ip adres z prostředků v místní síti.

    • Nahraďte hodnotu 192.168.0.1 IP adresou místního serveru DNS. Tato položka směruje všechny ostatní požadavky DNS na místní server DNS.

  4. Pokud chcete použít konfiguraci, restartujte vazbu. Například sudo service bind9 restart.

  5. Přidejte podmíněný předávací nástroj na místní server DNS. Nakonfigurujte podmíněný předávač tak, aby odesílal požadavky na příponu DNS z kroku 1 na vlastní server DNS.

    Poznámka:

    Konkrétní informace o tom, jak přidat podmíněný předávací program, najdete v dokumentaci k vašemu softwaru DNS.

Po dokončení těchto kroků se můžete připojit k prostředkům v obou sítích pomocí plně kvalifikovaných názvů domén (FQDN). HdInsight teď můžete nainstalovat do virtuální sítě.

Překlad názvů mezi dvěma připojenými virtuálními sítěmi

V tomto příkladu se předpokládá následující předpoklady:

  • Máte dvě virtuální sítě Azure, které jsou připojené pomocí brány VPN nebo partnerského vztahu.

  • Vlastní server DNS v obou sítích používá jako operační systém Linux nebo Unix.

  • Vazba se nainstaluje na vlastní servery DNS.

  1. K vyhledání přípony DNS obou virtuálních sítí použijte Azure PowerShell nebo Azure CLI:

    Nahraďte RESOURCEGROUP názvem skupiny prostředků, která obsahuje virtuální síť, a pak zadejte příkaz:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. Jako obsah /etc/bind/named.config.local souboru na vlastním serveru DNS použijte následující text. Proveďte tuto změnu na vlastním serveru DNS v obou virtuálních sítích.

    // Forward requests for the virtual network suffix to Azure recursive resolver
    zone "0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net" {
        type forward;
        forwarders {10.0.0.4;}; # The IP address of the DNS server in the other virtual network
    };
    

    0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net Nahraďte hodnotu příponou DNS druhé virtuální sítě. Tato položka směruje požadavky na příponu DNS vzdálené sítě do vlastního DNS v této síti.

  3. Na vlastních serverech DNS v obou virtuálních sítích použijte jako obsah /etc/bind/named.conf.options souboru následující text:

    // Clients to accept requests from
    acl goodclients {
        10.1.0.0/16; # The IP address range of one virtual network
        10.0.0.0/16; # The IP address range of the other virtual network
        localhost;
        localnets;
    };
    
    options {
            directory "/var/cache/bind";
    
            recursion yes;
    
            allow-query { goodclients; };
    
            forwarders {
            168.63.129.16;   # Azure recursive resolver
            };
    
            dnssec-validation auto;
    
            auth-nxdomain no;    # conform to RFC1035
            listen-on { any; };
    };
    

    10.0.0.0/16 Nahraďte hodnoty 10.1.0.0/16 rozsahy IP adres virtuálních sítí. Tato položka umožňuje prostředkům v každé síti provádět požadavky serverů DNS.

    Všechny požadavky, které nejsou určené pro přípony DNS virtuálních sítí (například microsoft.com), zpracovává rekurzivní překladač Azure.

  4. Pokud chcete použít konfiguraci, restartujte vazbu. Například sudo service bind9 restart na obou serverech DNS.

Po dokončení těchto kroků se můžete připojit k prostředkům ve virtuální síti pomocí plně kvalifikovaných názvů domén (FQDN). HdInsight teď můžete nainstalovat do virtuální sítě.

Testování nastavení před nasazením clusteru HDInsight

Před nasazením clusteru můžete zkontrolovat správnost mnoha nastavení konfigurace sítě spuštěním nástroje HDInsight Network Validator na virtuálním počítači Azure s Linuxem ve stejné virtuální síti a podsíti jako plánovaný cluster.

Další kroky