Membuat jaringan virtual untuk kluster Azure HDInsight

Artikel ini menyediakan contoh dan sampel kode untuk membuat dan mengonfigurasi Azure Virtual Networks. Untuk digunakan dengan kluster Azure HDInsight. Contoh terperinci dalam membuat grup keamanan jaringan (NSGs) dan mengonfigurasi DNS disajikan.

Untuk informasi latar belakang tentang menggunakan jaringan virtual dengan Azure HDInsight, lihat Merencanakan jaringan virtual untuk Azure HDInsight.

Prasyarat untuk sampel dan contoh kode

Sebelum mengeksekusi salah satu sampel kode dalam artikel ini, miliki pemahaman tentang jaringan TCP/IP. Jika Anda tidak terbiasa dengan jaringan TCP/IP, konsultasikan dengan seseorang sebelum melakukan modifikasi pada jaringan produksi.

Prasyarat lain untuk sampel dalam artikel ini mencakup item berikut:

  • Jika Anda menggunakan PowerShell, Anda harus memasang Modul AZ.
  • Jika ingin menggunakan Azure CLI dan Anda belum memasangnya, lihat Memasang Azure CLI.

Penting

Jika Anda mencari panduan langkah demi langkah tentang menyambungkan HDInsight ke jaringan lokal Anda menggunakan Azure Virtual Network, lihat dokumen Sambungkan HDInsight ke jaringan lokal Anda.

Contoh: grup keamanan jaringan dengan HDInsight

Contoh dalam bagian ini menunjukkan cara membuat aturan grup keamanan jaringan. Aturan memungkinkan HDInsight berkomunikasi dengan layanan manajemen Azure. Sebelum menggunakan contoh, sesuaikan alamat IP agar sesuai dengan alamat untuk wilayah Azure yang Anda gunakan. Anda dapat menemukan informasi ini di alamat IP manajemen HDInsight.

Templat Azure Resource Manager

Templat Resource Manager berikut membuat jaringan virtual yang membatasi lalu lintas masuk, tetapi mengizinkan lalu lintas dari alamat IP yang diperlukan oleh HDInsight. Templat ini juga membuat kluster HDInsight di jaringan virtual.

Azure PowerShell

Gunakan skrip PowerShell berikut untuk membuat jaringan virtual yang membatasi lalu lintas masuk dan memungkinkan lalu lintas dari alamat IP untuk wilayah Eropa Utara.

Penting

Ubah alamat IP untuk hdirule1 dan hdirule2dalam contoh ini agar sesuai dengan wilayah Azure yang Anda gunakan. Anda dapat menemukan informasi ini alamat IP manajemen 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

Contoh ini menunjukkan cara menambahkan aturan untuk memungkinkan lalu lintas masuk pada alamat IP yang diperlukan. Ini tidak berisi aturan untuk membatasi akses masuk dari sumber lain. Kode berikut menunjukkan cara mengaktifkan akses SSH dari Internet:

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

Gunakan langkah-langkah berikut untuk membuat jaringan virtual yang membatasi lalu lintas masuk, tetapi memungkinkan lalu lintas dari alamat IP yang diperlukan oleh HDInsight.

  1. Gunakan perintah berikut ini untuk membuat grup keamanan jaringan baru bernama hdisecure. Ganti RESOURCEGROUP dengan grup sumber daya yang berisi Azure Virtual Network. Ganti LOCATION dengan lokasi (wilayah) tempat grup dibuat.

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

    Setelah grup dibuat, Anda menerima informasi tentang grup baru.

  2. Gunakan yang berikut ini untuk menambahkan aturan ke grup keamanan jaringan baru yang memungkinkan komunikasi masuk pada port 443 dari layanan kesehatan dan manajemen Azure HDInsight. Ganti RESOURCEGROUP dengan nama grup sumber daya yang berisi Azure Virtual Network.

    Penting

    Ubah alamat IP untuk hdirule1 dan hdirule2dalam contoh ini agar sesuai dengan wilayah Azure yang Anda gunakan. Anda dapat menemukan informasi ini di alamat IP manajemen 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. Untuk mengambil pengidentifikasi unik untuk grup keamanan jaringan ini, gunakan perintah berikut:

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

    Perintah ini mengembalikan nilai yang mirip dengan URI berikut:

    "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
    
  4. Gunakan perintah berikut ini untuk menerapkan grup keamanan jaringan ke subnet. Ganti nilai GUID dan RESOURCEGROUP dengan nilai yang dikembalikan dari langkah sebelumnya. Ganti VNETNAME dan SUBNETNAME dengan nama jaringan virtual dan nama subnet yang ingin Anda buat.

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

    Setelah perintah ini selesai, Anda dapat memasang HDInsight ke dalam Microsoft Azure Virtual Network.

Langkah-langkah ini hanya membuka akses ke layanan kesehatan dan manajemen HDInsight di cloud Azure. Akses lain ke kluster HDInsight dari luar Microsoft Azure Virtual Network diblokir. Untuk mengaktifkan akses dari luar jaringan virtual, Anda harus menambahkan aturan Grup Keamanan Jaringan tambahan.

Kode berikut menunjukkan cara mengaktifkan akses SSH dari Internet:

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"

Contoh: Konfigurasi DNS

Resolusi nama antara jaringan virtual dan jaringan lokal yang tersambung

Artikel ini membuat asumsi berikut:

  • Anda memiliki Azure Virtual Network yang tersambung ke jaringan lokal menggunakan gateway VPN.

  • Server DNS kustom di jaringan virtual menjalankan Linux atau Unix sebagai sistem operasi.

  • Bind dipasang pada server DNS kustom.

Membuat server DNS di jaringan virtual:

  1. Gunakan Azure PowerShell atau Azure CLI untuk menemukan akhiran DNS jaringan virtual:

    Ganti RESOURCEGROUP dengan nama grup sumber daya yang berisi jaringan virtual, lalu masukkan perintah:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. Di server DNS kustom untuk jaringan virtual, gunakan teks berikut sebagai konten file /etc/bind/named.conf.local:

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

    Ganti nilai 0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net dengan akhiran DNS jaringan virtual Anda.

    Konfigurasi ini merutekan semua permintaan DNS untuk akhiran DNS jaringan virtual ke pemecah masalah rekursif Azure.

  3. Di server DNS kustom untuk jaringan virtual, gunakan teks berikut sebagai konten file /etc/bind/named.conf.options:

    // 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; };
    };
    
    • Ganti nilai 10.0.0.0/16 dengan rentang alamat IP jaringan virtual Anda. Entri ini memungkinkan alamat permintaan resolusi nama dalam rentang ini.

    • Tambahkan rentang alamat IP jaringan lokal ke bagian acl goodclients { ... } tersebut. entri memungkinkan permintaan resolusi nama dari sumber daya di jaringan lokal.

    • Ganti nilai 192.168.0.1 dengan alamat IP server DNS lokal Anda. Entri ini merutekan semua permintaan DNS lainnya ke server DNS lokal.

  4. Untuk menggunakan konfigurasi, mulai ulang Bind. Contohnya,sudo service bind9 restart.

  5. Tambahkan penerus bersyarat ke server DNS lokal. Konfigurasikan penerus bersyarat untuk mengirim permintaan akhiran DNS dari langkah 1 ke server DNS kustom.

    Catatan

    Lihat dokumentasi untuk perangkat lunak DNS Anda secara spesifik tentang cara menambahkan penerus bersyarat.

Setelah menyelesaikan langkah-langkah ini, Anda dapat terhubung ke sumber daya di salah satu jaringan menggunakan nama domain yang sepenuhnya memenuhi syarat (FQDN). Anda sekarang dapat memasang HDInsight ke jaringan virtual.

Resolusi nama antara dua jaringan virtual yang terhubung

Artikel ini membuat asumsi berikut:

  • Anda memiliki dua Azure Virtual Networks yang tersambung menggunakan gateway VPN atau peering.

  • Server DNS kustom di kedua jaringan menjalankan Linux atau Unix sebagai sistem operasi.

  • Bind dipasang pada server DNS kustom.

  1. Gunakan Azure PowerShell atau Azure CLI untuk menemukan akhiran DNS dari kedua jaringan virtual:

    Ganti RESOURCEGROUP dengan nama grup sumber daya yang berisi jaringan virtual, lalu masukkan perintah:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. Gunakan teks berikut sebagai konten file /etc/bind/named.config.local di server DNS kustom. Buat perubahan ini pada server DNS kustom di kedua jaringan virtual.

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

    Ganti nilai 0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net dengan akhiran DNS dari jaringan virtual lainnya. Entri ini merutekan permintaan akhiran DNS dari jaringan jarak jauh ke DNS kustom di jaringan tersebut.

  3. Pada server DNS kustom di kedua jaringan virtual, gunakan teks berikut sebagai konten file /etc/bind/named.conf.options:

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

    Ganti nilai 10.0.0.0/16 dan nilai 10.1.0.0/16 dengan rentang alamat IP jaringan virtual Anda. Entri ini memungkinkan sumber daya di setiap jaringan untuk membuat permintaan server DNS.

    Setiap permintaan yang bukan untuk akhiran DNS jaringan virtual (misalnya, microsoft.com) ditangani oleh resolver rekursif Azure.

  4. Untuk menggunakan konfigurasi, hidupkan ulang Bind. Misalnya, sudo service bind9 restart di kedua server DNS.

Setelah menyelesaikan langkah-langkah ini, Anda dapat terhubung ke sumber daya di jaringan virtual menggunakan nama domain yang sepenuhnya memenuhi syarat (FQDN). Anda sekarang dapat memasang HDInsight ke jaringan virtual.

Uji pengaturan Anda sebelum menyebarkan kluster HDInsight

Sebelum menyebarkan kluster Anda, Anda dapat memeriksa apakah banyak pengaturan konfigurasi jaringan Anda sudah benar dengan menjalankan alat Validator Jaringan HDInsight pada mesin virtual Azure Linux di VNet dan subnet yang sama dengan kluster yang direncanakan.

Langkah berikutnya