Virtuális hálózatok létrehozása Azure HDInsight-fürtökhöz

Ez a cikk példákat és kódmintákat tartalmaz az Azure-beli virtuális hálózatok létrehozásához és konfigurálásához. Az Azure HDInsight-fürtökkel való használathoz. Részletes példákat mutatunk be a hálózati biztonsági csoportok (NSG-k) létrehozására és a DNS konfigurálására.

A virtuális hálózatok Azure HDInsighttal való használatával kapcsolatos háttérinformációkért lásd: Virtuális hálózat tervezése az Azure HDInsighthoz.

A kódminták és példák előfeltételei

A jelen cikkben szereplő kódminták végrehajtása előtt ismerje meg a TCP/IP-hálózatkezelést. Ha nem ismeri a TCP/IP-hálózatkezelést, az éles hálózatok módosítása előtt konzultáljon valakivel.

A cikkben szereplő minták egyéb előfeltételei közé tartoznak a következő elemek:

  • Ha PowerShellt használ, telepítenie kell az AZ-modult.
  • Ha az Azure CLI-t szeretné használni, de még nem telepítette, tekintse meg az Azure CLI telepítését ismertető cikket.

Fontos

Ha részletes útmutatást keres a HDInsight helyszíni hálózathoz azure-Virtual Network használatával történő csatlakoztatásához, tekintse meg a HDInsight csatlakoztatása a helyszíni hálózati hálózathoz című dokumentumot.

Példa: hálózati biztonsági csoportok a HDInsighttal

Az ebben a szakaszban szereplő példák bemutatják, hogyan hozhat létre hálózati biztonságicsoport-szabályokat. A szabályok lehetővé teszik, hogy a HDInsight kommunikáljon az Azure felügyeleti szolgáltatásokkal. A példák használata előtt módosítsa az IP-címeket a használt Azure-régió ip-címeinek megfelelően. Ezeket az információkat a HDInsight felügyeleti IP-címeiben találja.

Azure Resource Manager-sablon

A következő Resource Manager sablon létrehoz egy virtuális hálózatot, amely korlátozza a bejövő forgalmat, de engedélyezi a HDInsight által igényelt IP-címekről érkező forgalmat. Ez a sablon egy HDInsight-fürtöt is létrehoz a virtuális hálózaton.

Azure PowerShell

Az alábbi PowerShell-szkripttel hozzon létre egy olyan virtuális hálózatot, amely korlátozza a bejövő forgalmat, és engedélyezi az észak-európai régió IP-címéről érkező forgalmat.

Fontos

Módosítsa a és az IP-címét hdirule1hdirule2 ebben a példában úgy, hogy az megfeleljen a használt Azure-régiónak. Ezeket az információkat a HDInsight felügyeleti IP-címei között találja.

$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

Ez a példa bemutatja, hogyan adhat hozzá szabályokat a szükséges IP-címek bejövő forgalmának engedélyezéséhez. Nem tartalmaz olyan szabályt, amely más forrásokból érkező bejövő hozzáférést korlátozná. Az alábbi kód bemutatja, hogyan engedélyezheti az SSH-hozzáférést az internetről:

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

Az alábbi lépésekkel olyan virtuális hálózatot hozhat létre, amely korlátozza a bejövő forgalmat, de engedélyezi a HDInsight által igényelt IP-címekről érkező forgalmat.

  1. Az alábbi paranccsal hozzon létre egy nevű új hálózati biztonsági csoportot hdisecure. Cserélje le RESOURCEGROUP a elemet az Azure Virtual Network tartalmazó erőforráscsoportra. Cserélje le LOCATION a elemet arra a helyre (régióra), amelyben a csoport létre lett hozva.

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

    A csoport létrehozása után megkapja az új csoport adatait.

  2. Az alábbiakban olyan szabályokat adhat hozzá az új hálózati biztonsági csoporthoz, amelyek engedélyezik a bejövő kommunikációt az Azure HDInsight állapot- és felügyeleti szolgáltatás 443-as portján. Cserélje le RESOURCEGROUP a elemet az Azure Virtual Network tartalmazó erőforráscsoport nevére.

    Fontos

    Módosítsa a és az IP-címét hdirule1hdirule2 ebben a példában úgy, hogy az megfeleljen a használt Azure-régiónak. Ezeket az információkat a HDInsight felügyeleti IP-címeiben találja.

    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. A hálózati biztonsági csoport egyedi azonosítójának lekéréséhez használja a következő parancsot:

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

    Ez a parancs az alábbi szöveghez hasonló értéket ad vissza:

    "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
    
  4. A hálózati biztonsági csoport alhálózatra való alkalmazásához használja az alábbi parancsot. Cserélje le a GUID és RESOURCEGROUP az értéket az előző lépésben visszaadott értékekre. Cserélje le VNETNAME a és SUBNETNAME a elemet a létrehozni kívánt virtuális hálózat és alhálózat nevére.

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

    A parancs befejeződése után telepítheti a HDInsightot a Virtual Network.

Ezek a lépések csak a HDInsight állapot- és felügyeleti szolgáltatáshoz való hozzáférést nyitják meg az Azure-felhőben. A HDInsight-fürthöz a Virtual Network kívülről érkező bármely más hozzáférés le van tiltva. A virtuális hálózaton kívülről történő hozzáférés engedélyezéséhez további hálózati biztonsági csoportszabályokat kell hozzáadnia.

Az alábbi kód bemutatja, hogyan engedélyezheti az SSH-hozzáférést az internetről:

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élda: DNS-konfiguráció

Névfeloldás egy virtuális hálózat és egy csatlakoztatott helyszíni hálózat között

Ez a példa a következő feltételezéseket foglalja fel:

  • Rendelkezik egy Azure-Virtual Network, amely VPN-átjáróval csatlakozik egy helyszíni hálózathoz.

  • A virtuális hálózat egyéni DNS-kiszolgálója operációs rendszerként Linuxot vagy Unixot futtat.

  • A Bind telepítve van az egyéni DNS-kiszolgálón.

A virtuális hálózat egyéni DNS-kiszolgálóján:

  1. A virtuális hálózat DNS-utótagjának megkereséséhez használja a Azure PowerShell vagy az Azure CLI-t:

    Cserélje le RESOURCEGROUP a elemet a virtuális hálózatot tartalmazó erőforráscsoport nevére, majd írja be a következő parancsot:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. A virtuális hálózat egyéni DNS-kiszolgálóján a fájl tartalmaként /etc/bind/named.conf.local használja a következő szöveget:

    // 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
    };
    

    Cserélje le az 0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net értéket a virtuális hálózat DNS-utótagjára.

    Ez a konfiguráció a virtuális hálózat DNS-utótagjára vonatkozó összes DNS-kérést az Azure rekurzív feloldójának irányítja.

  3. A virtuális hálózat egyéni DNS-kiszolgálóján a fájl tartalmaként /etc/bind/named.conf.options használja a következő szöveget:

    // 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; };
    };
    
    • Cserélje le az 10.0.0.0/16 értéket a virtuális hálózat IP-címtartományára. Ez a bejegyzés lehetővé teszi a névfeloldási kérelmek e tartományon belüli címét.

    • Adja hozzá a helyszíni hálózat IP-címtartományát a acl goodclients { ... } szakaszhoz. A bejegyzés lehetővé teszi a névfeloldási kéréseket a helyszíni hálózat erőforrásaitól.

    • Cserélje le az értéket 192.168.0.1 a helyszíni DNS-kiszolgáló IP-címére. Ez a bejegyzés az összes többi DNS-kérést a helyszíni DNS-kiszolgálóra irányítja.

  4. A konfiguráció használatához indítsa újra a Kötést. Például: sudo service bind9 restart.

  5. Adjon hozzá egy feltételes továbbítót a helyszíni DNS-kiszolgálóhoz. Konfigurálja a feltételes továbbítót úgy, hogy az 1. lépésben a DNS-utótagra vonatkozó kéréseket küldjön az egyéni DNS-kiszolgálónak.

    Megjegyzés

    A feltételes továbbító hozzáadásáról a DNS-szoftver dokumentációjában tájékozódhat.

A lépések elvégzése után bármelyik hálózat erőforrásaihoz csatlakozhat teljes tartománynevek (FQDN) használatával. Most már telepítheti a HDInsightot a virtuális hálózatba.

Névfeloldás két csatlakoztatott virtuális hálózat között

Ez a példa a következő feltételezéseket foglalja fel:

  • Két Azure-beli virtuális hálózata van, amelyek VPN-átjáróval vagy társviszony-létesítéssel csatlakoznak.

  • Az egyéni DNS-kiszolgáló mindkét hálózatban Linuxot vagy Unixot futtat operációs rendszerként.

  • A Bind telepítve van az egyéni DNS-kiszolgálókon.

  1. Használja a Azure PowerShell vagy az Azure CLI-t mindkét virtuális hálózat DNS-utótagjának megkereséséhez:

    Cserélje le RESOURCEGROUP a elemet a virtuális hálózatot tartalmazó erőforráscsoport nevére, majd írja be a következő parancsot:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. Az egyéni DNS-kiszolgálón lévő fájl tartalmaként használja az /etc/bind/named.config.local alábbi szöveget. Végezze el ezt a módosítást az egyéni DNS-kiszolgálón mindkét virtuális hálózatban.

    // 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
    };
    

    Cserélje le az 0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net értéket a másik virtuális hálózat DNS-utótagjára. Ez a bejegyzés átirányítja a távoli hálózat DNS-utótagjára vonatkozó kéréseket az adott hálózatban lévő egyéni DNS-hez.

  3. Mindkét virtuális hálózat egyéni DNS-kiszolgálóin használja a következő szöveget a /etc/bind/named.conf.options fájl tartalmaként:

    // 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; };
    };
    

    Cserélje le a 10.0.0.0/16 és 10.1.0.0/16 az értéket a virtuális hálózatok IP-címtartományára. Ez a bejegyzés lehetővé teszi, hogy az egyes hálózatok erőforrásai kéréseket intézhessenek a DNS-kiszolgálóktól.

    A virtuális hálózatok DNS-utótagjaihoz nem tartozó kéréseket (például microsoft.com) az Azure rekurzív feloldója kezeli.

  4. A konfiguráció használatához indítsa újra a Kötést. Például sudo service bind9 restart mindkét DNS-kiszolgálón.

A lépések elvégzése után teljes tartománynevekkel (FQDN) csatlakozhat a virtuális hálózat erőforrásaihoz. Most már telepítheti a HDInsightot a virtuális hálózatba.

A beállítások tesztelése HDInsight-fürt üzembe helyezése előtt

A fürt üzembe helyezése előtt ellenőrizheti, hogy a hálózati konfigurációs beállítások közül sok helyes-e. Ehhez futtassa a HDInsight Network Validator eszközt egy Olyan Azure Linux rendszerű virtuális gépen, amely ugyanabban a virtuális hálózatban és alhálózaton található, mint a tervezett fürt.

Következő lépések