Criar redes virtuais para clusters do Azure HDInsight
Este artigo fornece exemplos e exemplos de código para criar e configurar as Redes Virtuais do Azure. Para usar com clusters do Azure HDInsight. São apresentados exemplos detalhados de criação de grupos de segurança de rede (NSGs) e configuração de DNS.
Para obter informações básicas sobre como usar redes virtuais com o Azure HDInsight, consulte Planejar uma rede virtual para o Azure HDInsight.
Pré-requisitos para exemplos e exemplos de código
Antes de executar qualquer um dos exemplos de código neste artigo, tenha uma compreensão da rede TCP/IP. Se você não estiver familiarizado com a rede TCP/IP, consulte alguém antes de fazer modificações nas redes de produção.
Outros pré-requisitos para os exemplos neste artigo incluem os seguintes itens:
- Se você estiver usando o PowerShell, precisará instalar o módulo AZ.
- Se você quiser usar a CLI do Azure e ainda não a tiver instalado, consulte Instalar a CLI do Azure.
Importante
Se você estiver procurando orientação passo a passo sobre como conectar o HDInsight à sua rede local usando uma Rede Virtual do Azure, consulte Como conectar o HDInsight à sua rede local.
Exemplo: grupos de segurança de rede com o HDInsight
Os exemplos nesta seção demonstram como criar regras de grupo de segurança de rede. As regras permitem que o HDInsight se comunique com os serviços de gerenciamento do Azure. Antes de usar os exemplos, ajuste os endereços IP para corresponder aos da região do Azure que você está usando. Você pode encontrar essas informações em Endereços IP de gerenciamento do HDInsight.
Modelo Azure Resource Manager
O modelo do Gerenciador de Recursos a seguir cria uma rede virtual que restringe o tráfego de entrada, mas permite o tráfego dos endereços IP exigidos pelo HDInsight. Este modelo também cria um cluster HDInsight na rede virtual.
Azure PowerShell
Use o seguinte script do PowerShell para criar uma rede virtual que restrinja o tráfego de entrada e permita o tráfego dos endereços IP para a região Norte da Europa.
Importante
Altere os endereços IP de hdirule1
e hdirule2
neste exemplo para corresponder à região do Azure que você está usando. Você pode encontrar essas informações de endereços IP de gerenciamento do 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
Este exemplo demonstra como adicionar regras para permitir o tráfego de entrada nos endereços IP necessários. Ele não contém uma regra para restringir o acesso de entrada de outras fontes. O código a seguir demonstra como habilitar o acesso SSH da 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
CLI do Azure
Use as etapas a seguir para criar uma rede virtual que restrinja o tráfego de entrada, mas permita o tráfego dos endereços IP exigidos pelo HDInsight.
Use o comando a seguir para criar um novo grupo de segurança de rede chamado
hdisecure
. SubstituaRESOURCEGROUP
pelo grupo de recursos que contém a Rede Virtual do Azure. SubstituaLOCATION
pelo local (região) em que o grupo foi criado.az network nsg create -g RESOURCEGROUP -n hdisecure -l LOCATION
Depois que o grupo for criado, você receberá informações sobre o novo grupo.
Use o seguinte para adicionar regras ao novo grupo de segurança de rede que permitem a comunicação de entrada na porta 443 do serviço de integridade e gerenciamento do Azure HDInsight. Substitua
RESOURCEGROUP
pelo nome do grupo de recursos que contém a Rede Virtual do Azure.Importante
Altere os endereços IP de
hdirule1
ehdirule2
neste exemplo para corresponder à região do Azure que você está usando. Você pode encontrar essas informações em Endereços IP de gerenciamento do 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"
Para recuperar o identificador exclusivo para esse grupo de segurança de rede, use o seguinte comando:
az network nsg show -g RESOURCEGROUP -n hdisecure --query "id"
Este comando retorna um valor semelhante ao seguinte texto:
"/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
Use o comando a seguir para aplicar o grupo de segurança de rede a uma sub-rede. Substitua os
GUID
valores eRESOURCEGROUP
pelos retornados da etapa anterior. SubstituaVNETNAME
eSUBNETNAME
pelo nome da rede virtual e nome da sub-rede que você deseja criar.az network vnet subnet update -g RESOURCEGROUP --vnet-name VNETNAME --name SUBNETNAME --set networkSecurityGroup.id="/subscriptions/GUID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
Quando esse comando for concluído, você poderá instalar o HDInsight na Rede Virtual.
Estas etapas abrem apenas o acesso ao serviço de integridade e gerenciamento do HDInsight na nuvem do Azure. Qualquer outro acesso ao cluster HDInsight de fora da Rede Virtual é bloqueado. Para habilitar o acesso de fora da rede virtual, você deve adicionar mais regras do Grupo de Segurança de Rede.
O código a seguir demonstra como habilitar o acesso SSH da 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"
Exemplo: configuração de DNS
Resolução de nomes entre uma rede virtual e uma rede local conectada
Este exemplo faz as seguintes suposições:
Você tem uma Rede Virtual do Azure conectada a uma rede local usando um gateway VPN.
O servidor DNS personalizado na rede virtual está executando Linux ou Unix como o sistema operacional.
A associação é instalada no servidor DNS personalizado.
No servidor DNS personalizado na rede virtual:
Use o Azure PowerShell ou a CLI do Azure para localizar o sufixo DNS da rede virtual:
Substitua
RESOURCEGROUP
pelo nome do grupo de recursos que contém a rede virtual e digite o comando:$NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP" $NICs[0].DnsSettings.InternalDomainNameSuffix
az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
No servidor DNS personalizado para a rede virtual, use o seguinte texto como o conteúdo do
/etc/bind/named.conf.local
arquivo:// 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 };
Substitua o
0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net
valor pelo sufixo DNS da sua rede virtual.Essa configuração roteia todas as solicitações DNS para o sufixo DNS da rede virtual para o resolvedor recursivo do Azure.
No servidor DNS personalizado para a rede virtual, use o seguinte texto como o conteúdo do
/etc/bind/named.conf.options
arquivo:// 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; }; };
Substitua o
10.0.0.0/16
valor pelo intervalo de endereços IP da sua rede virtual. Esta entrada permite a resolução de nomes de endereços de pedidos dentro deste intervalo.Adicione o intervalo de endereços IP da rede local à
acl goodclients { ... }
seção . permite solicitações de resolução de nomes de recursos na rede local.Substitua o valor
192.168.0.1
pelo endereço IP do servidor DNS local. Essa entrada roteia todas as outras solicitações DNS para o servidor DNS local.
Para usar a configuração, reinicie Bind. Por exemplo,
sudo service bind9 restart
.Adicione um encaminhador condicional ao servidor DNS local. Configure o encaminhador condicional para enviar solicitações para o sufixo DNS da etapa 1 para o servidor DNS personalizado.
Nota
Consulte a documentação do seu software DNS para obter detalhes sobre como adicionar um encaminhador condicional.
Depois de concluir essas etapas, você pode se conectar a recursos em qualquer rede usando nomes de domínio totalmente qualificados (FQDN). Agora você pode instalar o HDInsight na rede virtual.
Resolução de nomes entre duas redes virtuais conectadas
Este exemplo faz as seguintes suposições:
Você tem duas Redes Virtuais do Azure que estão conectadas usando um gateway VPN ou emparelhamento.
O servidor DNS personalizado em ambas as redes está executando Linux ou Unix como o sistema operacional.
O Bind é instalado nos servidores DNS personalizados.
Use o Azure PowerShell ou a CLI do Azure para localizar o sufixo DNS de ambas as redes virtuais:
Substitua
RESOURCEGROUP
pelo nome do grupo de recursos que contém a rede virtual e digite o comando:$NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP" $NICs[0].DnsSettings.InternalDomainNameSuffix
az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
Use o texto a seguir como o conteúdo do
/etc/bind/named.config.local
arquivo no servidor DNS personalizado. Faça essa alteração no servidor DNS personalizado em ambas as redes virtuais.// 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 };
Substitua o
0owcbllr5hze3hxdja3mqlrhhe.ex.internal.cloudapp.net
valor pelo sufixo DNS da outra rede virtual. Esta entrada encaminha pedidos para o sufixo DNS da rede remota para o DNS personalizado nessa rede.Nos servidores DNS personalizados em ambas as redes virtuais, use o seguinte texto como o conteúdo do
/etc/bind/named.conf.options
arquivo:// 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; }; };
Substitua os
10.0.0.0/16
valores e10.1.0.0/16
pelos intervalos de endereços IP de suas redes virtuais. Esta entrada permite que os recursos em cada rede para fazer solicitações dos servidores DNS.Todas as solicitações que não são para os sufixos DNS das redes virtuais (por exemplo, microsoft.com) são tratadas pelo resolvedor recursivo do Azure.
Para usar a configuração, reinicie Bind. Por exemplo,
sudo service bind9 restart
em ambos os servidores DNS.
Depois de concluir essas etapas, você pode se conectar a recursos na rede virtual usando nomes de domínio totalmente qualificados (FQDN). Agora você pode instalar o HDInsight na rede virtual.
Teste suas configurações antes de implantar um cluster HDInsight
Antes de implantar seu cluster, você pode verificar se muitas das suas definições de configuração de rede estão corretas executando a ferramenta Validador de Rede HDInsight em uma máquina virtual Linux do Azure na mesma rede virtual e sub-rede que o cluster planejado.
Próximos passos
Para obter um exemplo completo de configuração do HDInsight para se conectar a uma rede local, consulte Conectar o HDInsight a uma rede local.
Para configurar clusters Apache HBase em redes virtuais do Azure, consulte Criar clusters Apache HBase no HDInsight na Rede Virtual do Azure.
Para configurar a replicação geográfica do Apache HBase, consulte Configurar a replicação de cluster do Apache HBase em redes virtuais do Azure.
Para obter mais informações sobre redes virtuais do Azure, consulte a Visão geral da Rede Virtual do Azure.
Para obter mais informações sobre grupos de segurança de rede, consulte Grupos de segurança de rede.
Para obter mais informações sobre rotas definidas pelo usuário, consulte Rotas definidas pelo usuário e encaminhamento de IP.