Azure HDInsight クラスターの仮想ネットワークの作成Create virtual networks for Azure HDInsight clusters

この記事では、Azure HDInsight クラスターで使用する Azure Virtual Network を作成および構成するための例とコード サンプルを紹介します。This article provides examples and code samples for creating and configuring Azure Virtual Networks for use with Azure HDInsight clusters. ネットワーク セキュリティ グループ (NSG) を作成し、DNS を構成する方法の詳細な例を紹介します。Detailed examples of creating network security groups (NSGs) and configuring DNS are presented.

Azure HDInsight での仮想ネットワークの使用に関する背景情報については、Azure HDInsight 用仮想ネットワークの計画に関する記事を参照してください。For background information on using virtual networks with Azure HDInsight, see Plan a virtual network for Azure HDInsight.

コード サンプルと例についての前提条件Prerequisites for code samples and examples

この記事のコード サンプルを実行する前に、TCP/IP ネットワークについて理解している必要があります。Before executing any of the code samples in this article, ou should have an understanding of TCP/IP networking. TCP/IP ネットワークに詳しくない方は、実稼働ネットワークに変更を加えた経験のある方に相談してください。If you are not familiar with TCP/IP networking, consult someone who is before making modifications to production networks.

この記事のサンプルに関するその他の前提条件には、次のものがあります。Other prerequisites for the samples in this article include the following:

  • PowerShell を使用する場合は、AZ モジュールをインストールする必要があります。If you are using PowerShell, you will need to install the AZ Module.
  • Azure CLI を使用する予定でまだインストールしていない場合は、「Azure CLI のインストール」を参照してください。If you want to use Azure CLI and have not yet installed it, see Install the Azure CLI.

重要

Azure Virtual Network を使用して HDInsight をオンプレミス ネットワークに接続するための詳しい手順については、「オンプレミス ネットワークへの HDInsight の接続」を参照してください。If you are looking for step by step guidance on connecting HDInsight to your on-premises network using an Azure Virtual Network, see the Connect HDInsight to your on-premises network document.

例: HDInsight でのネットワーク セキュリティ グループExample: network security groups with HDInsight

このセクションの例は、HDInsight に Azure 管理サービスとの通信を許可するネットワーク セキュリティ グループのルールを作成する方法を示します。The examples in this section demonstrate how to create network security group rules that allow HDInsight to communicate with the Azure management services. 例を使用する前に、IP アドレスを、使用している Azure のリージョンの IP アドレスに合わせて変更してください。Before using the examples, adjust the IP addresses to match the ones for the Azure region you are using. この情報については、HDInsight 管理 IP アドレスに関する記事を参照してください。You can find this information in HDInsight management IP addresses.

Azure Resource Management テンプレートAzure Resource Management template

次の Resource Management テンプレートは、受信トラフィックを制限するが HDInsight が必要とする IP アドレスからのトラフィックは許可する仮想ネットワークを作成します。The following Resource Management template creates a virtual network that restricts inbound traffic, but allows traffic from the IP addresses required by HDInsight. さらに、このテンプレートは、仮想ネットワークに HDInsight クラスターを作成します。This template also creates an HDInsight cluster in the virtual network.

Azure PowerShellAzure PowerShell

次の PowerShell スクリプトを使用して、受信トラフィックを制限しながら北ヨーロッパ リージョンの IP アドレスからのトラフィックは許可する仮想ネットワークを作成します。Use the following PowerShell script to create a virtual network that restricts inbound traffic and allows traffic from the IP addresses for the North Europe region.

重要

この例の hdirule1hdirule2 の IP アドレスを、使用している Azure のリージョンに合わせて変更してください。Change the IP addresses for hdirule1 and hdirule2 in this example to match the Azure region you are using. この情報については、HDInsight 管理 IP アドレスに関する記事を参照してください。You can find this information HDInsight management IP addresses.

$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

この例は、ルールを追加して、必要な IP アドレスの受信トラフィックを許可する方法を示しています。This example demonstrates how to add rules to allow inbound traffic on the required IP addresses. この方法には、他のソースからの着信アクセスを制限するルールは含まれていません。It does not contain a rule to restrict inbound access from other sources. 次のコードでは、インターネットからの SSH アクセスを可能にする方法を示します。The following code demonstrates how to enable SSH access from the 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 CLIAzure CLI

次の手順を使用して、受信トラフィックを制限するが HDInsight が必要とする IP アドレスからのトラフィックは許可する仮想ネットワークを作成します。Use the following steps to create a virtual network that restricts inbound traffic, but allows traffic from the IP addresses required by HDInsight.

  1. 次のコマンドを使用して、 hdisecureという名前の新しいネットワーク セキュリティ グループを作成します。Use the following command to create a new network security group named hdisecure. RESOURCEGROUP を、Azure 仮想ネットワークが含まれているリソース グループに置き換えます。Replace RESOURCEGROUP with the resource group that contains the Azure Virtual Network. LOCATION を、グループが作成された場所 (リージョン) に置き換えます。Replace LOCATION with the location (region) that the group was created in.

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

    グループが作成されたら、新しいグループに関する情報が表示されます。Once the group has been created, you receive information on the new group.

  2. ポート 443 上で Azure HDInsight の正常性と管理サービスからのインバウンド通信を許可する新しいネットワーク セキュリティ グループにルールを追加するには、次を使用します。Use the following to add rules to the new network security group that allow inbound communication on port 443 from the Azure HDInsight health and management service. RESOURCEGROUP を、Azure 仮想ネットワークが含まれているリソース グループの名前に置き換えます。Replace RESOURCEGROUP with the name of the resource group that contains the Azure Virtual Network.

    重要

    この例の hdirule1hdirule2 の IP アドレスを、使用している Azure のリージョンに合わせて変更してください。Change the IP addresses for hdirule1 and hdirule2 in this example to match the Azure region you are using. この情報については、HDInsight 管理 IP アドレスに関する記事を参照してください。You can find this information in HDInsight management IP addresses.

    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. このネットワーク セキュリティ グループの一意識別子を取得するには、次のコマンドを使用します。To retrieve the unique identifier for this network security group, use the following command:

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

    このコマンドにより、次のテキストのような値が返されます。This command returns a value similar to the following text:

     "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
    
  4. 次のコマンドを使用して、ネットワーク セキュリティ グループをサブネットに適用します。Use the following command to apply the network security group to a subnet. GUIDRESOURCEGROUP の値を、前の手順で返された値に置き換えます。Replace the GUID and RESOURCEGROUP values with the ones returned from the previous step. VNETNAMESUBNETNAME を、作成する仮想ネットワーク名とサブネット名に置き換えます。Replace VNETNAME and SUBNETNAME with the virtual network name and subnet name that you want to create.

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

    このコマンドが完了すると、仮想ネットワークに HDInsight をインストールできます。Once this command completes, you can install HDInsight into the Virtual Network.

これらの手順を実行すると、Azure クラウドの HDInsight 正常性と管理サービスへのアクセスのみが開きます。These steps only open access to the HDInsight health and management service on the Azure cloud. それ以外の Virtual Network 外から HDInsight クラスターへのアクセスはすべてブロックされます。Any other access to the HDInsight cluster from outside the Virtual Network is blocked. 仮想ネットワーク外からのアクセスを有効にする場合は、追加のネットワーク セキュリティ グループ ルールを追加する必要があります。To enable access from outside the virtual network, you must add additional Network Security Group rules.

次のコードでは、インターネットからの SSH アクセスを可能にする方法を示します。The following code demonstrates how to enable SSH access from the 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"

例:DNS の構成Example: DNS configuration

仮想ネットワークとそれに接続されているオンプレミス ネットワークの間で名前解決Name resolution between a virtual network and a connected on-premises network

この例は、次のことを前提としています。This example makes the following assumptions:

  • VPN ゲートウェイを使用して、オンプレミスのネットワークに接続している Azure Virtual Network がある。You have an Azure Virtual Network that is connected to an on-premises network using a VPN gateway.

  • 仮想ネットワーク内のカスタム DNS サーバーは、オペレーティング システムとして Linux または Unis を実行している。The custom DNS server in the virtual network is running Linux or Unix as the operating system.

  • バインドがカスタム DNS サーバーにインストールされている。Bind is installed on the custom DNS server.

仮想ネットワークのカスタム DNS サーバーで次を実行します。On the custom DNS server in the virtual network:

  1. Azure PowerShell または Azure CLI を使用して、仮想ネットワークの DNS サフィックスを見つけます。Use either Azure PowerShell or Azure CLI to find the DNS suffix of the virtual network:

    RESOURCEGROUP を仮想ネットワークが含まれるリソース グループの名前に置き換えてから、コマンドを入力します。Replace RESOURCEGROUP with the name of the resource group that contains the virtual network, and then enter the command:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. 仮想ネットワークのカスタム DNS サーバーで、/etc/bind/named.conf.localファイルの内容として次のテキストを使用します。On the custom DNS server for the virtual network, use the following text as the contents of the /etc/bind/named.conf.local file:

    // 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の値を、使用している仮想ネットワークの DNS サフィックスと置き換えます。Replace the 0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net value with the DNS suffix of your virtual network.

    この構成により、仮想ネットワークの DNS サフィックスのすべての DNS 要求は Azure の再帰リゾルバーにルーティングされます。This configuration routes all DNS requests for the DNS suffix of the virtual network to the Azure recursive resolver.

  3. 仮想ネットワークのカスタム DNS サーバーで、/etc/bind/named.conf.optionsファイルの内容として次のテキストを使用します。On the custom DNS server for the virtual network, use the following text as the contents of the /etc/bind/named.conf.options file:

    // 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の値を、使用している仮想ネットワークの IP アドレス範囲と置き換えます。Replace the 10.0.0.0/16 value with the IP address range of your virtual network. このエントリにより、この範囲内のアドレスの名前解決要求が許可されます。This entry allows name resolution requests addresses within this range.

    • acl goodclients { ... }セクションに、オンプレミス ネットワークの IP アドレス範囲を追加します。Add the IP address range of the on-premises network to the acl goodclients { ... } section. このエントリにより、オンプレミス ネットワーク内のリソースからの名前解決要求が許可されます。entry allows name resolution requests from resources in the on-premises network.

    • 192.168.0.1 の値を、オンプレミスの DNS サーバーの IP アドレス と置き換えます。Replace the value 192.168.0.1 with the IP address of your on-premises DNS server. このエントリにより、その他の DNS 要求はすべて、オンプレミスの DNS サーバーにルーティングされます。This entry routes all other DNS requests to the on-premises DNS server.

  4. 構成を使用するには、バインドを再起動します。To use the configuration, restart Bind. たとえば、「 sudo service bind9 restart 」のように入力します。For example, sudo service bind9 restart.

  5. オンプレミスの DNS サーバーに、条件付きフォワーダーを追加します。Add a conditional forwarder to the on-premises DNS server. 手順 1 で見つけた DNS サフィックスへの要求をカスタム DNS サーバーに送信するように条件付きフォワーダーを構成します。Configure the conditional forwarder to send requests for the DNS suffix from step 1 to the custom DNS server.

    注意

    条件付きフォワーダーを追加する方法の詳細については、DNS ソフトウェアのマニュアルをご覧ください。Consult the documentation for your DNS software for specifics on how to add a conditional forwarder.

これらの手順を完了した後には、完全修飾ドメイン名 (FQDN) を使用して、両方のネットワーク内のリソースに接続できます。After completing these steps, you can connect to resources in either network using fully qualified domain names (FQDN). これで、仮想ネットワークに HDInsight をインストールできるようになりました。You can now install HDInsight into the virtual network.

2 つの接続されている仮想ネットワーク間で名前解決Name resolution between two connected virtual networks

この例は、次のことを前提としています。This example makes the following assumptions:

  • VPN ゲートウェイまたはピアリングを使用して接続している 2 つの Azure Virtual Network がある。You have two Azure Virtual Networks that are connected using either a VPN gateway or peering.

  • 両方のネットワーク内のカスタム DNS サーバーは、オペレーティング システムとして Linux または Unis を実行している。The custom DNS server in both networks is running Linux or Unix as the operating system.

  • バインドがカスタム DNS サーバーにインストールされている。Bind is installed on the custom DNS servers.

  1. Azure PowerShell または Azure CLI を使用して、両方の仮想ネットワークの DNS サフィックスを見つけます。Use either Azure PowerShell or Azure CLI to find the DNS suffix of both virtual networks:

    RESOURCEGROUP を仮想ネットワークが含まれるリソース グループの名前に置き換えてから、コマンドを入力します。Replace RESOURCEGROUP with the name of the resource group that contains the virtual network, and then enter the command:

    $NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP"
    $NICs[0].DnsSettings.InternalDomainNameSuffix
    
    az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
    
  2. カスタム DNS サーバーの /etc/bind/named.config.local ファイルの内容として、次のテキストを使用します。Use the following text as the contents of the /etc/bind/named.config.local file on the custom DNS server. 両方の仮想ネットワークのカスタム DNS サーバーでこの変更を行います。Make this change on the custom DNS server in both virtual networks.

    // 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 の値を、別の 仮想ネットワークの DNS サフィックスに置き換えます。Replace the 0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net value with the DNS suffix of the other virtual network. このエントリにより、リモート ネットワークの DNS サフィックスへの要求はそのネットワークのカスタム DNS にルーティングされます。This entry routes requests for the DNS suffix of the remote network to the custom DNS in that network.

  3. 両方の仮想ネットワークのカスタム DNS サーバーで、/etc/bind/named.conf.options ファイルの内容として次のテキストを使用します。On the custom DNS servers in both virtual networks, use the following text as the contents of the /etc/bind/named.conf.options file:

    // 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/1610.1.0.0/16の値を、使用している仮想ネットワークの IP アドレス範囲と置き換えます。Replace the 10.0.0.0/16 and 10.1.0.0/16 values with the IP address ranges of your virtual networks. このエントリにより、それぞれのネットワーク内のリソースは DNS サーバーに要求を送信できるようになります。This entry allows resources in each network to make requests of the DNS servers.

    仮想ネットワークの DNS サフィックス以外 (microsoft.com など) の要求は、Azure の再帰リゾルバーによって処理されます。Any requests that are not for the DNS suffixes of the virtual networks (for example, microsoft.com) is handled by the Azure recursive resolver.

  4. 構成を使用するには、バインドを再起動します。To use the configuration, restart Bind. たとえば、「sudo service bind9 restart 」のように、両方の DNS サーバーで入力します。For example, sudo service bind9 restart on both DNS servers.

これらの手順を完了した後には、完全修飾ドメイン名 (FQDN) を使用して、仮想ネットワーク内のリソースに接続できます。After completing these steps, you can connect to resources in the virtual network using fully qualified domain names (FQDN). これで、仮想ネットワークに HDInsight をインストールできるようになりました。You can now install HDInsight into the virtual network.

次の手順Next steps