Criar redes virtuais para clusters do Azure HDInsight
Este artigo fornece exemplos e exemplos de código para criar e configurar Redes Virtuais do Azure. Para utilizar 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 em segundo plano sobre como utilizar redes virtuais com o Azure HDInsight, veja Planear 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, compreenda as redes TCP/IP. Se não estiver familiarizado com a rede TCP/IP, consulte alguém antes de efetuar modificações nas redes de produção.
Outros pré-requisitos para os exemplos neste artigo incluem os seguintes itens:
- Se estiver a utilizar o PowerShell, terá de instalar o Módulo AZ.
- Se quiser utilizar a CLI do Azure e ainda não a tiver instalado, veja Instalar a CLI do Azure.
Importante
Se estiver à procura de orientações passo a passo sobre como ligar o HDInsight à sua rede no local com um Rede Virtual do Azure, veja o documento Ligar o HDInsight à sua rede no local.
Exemplo: grupos de segurança de rede com o HDInsight
Os exemplos nesta secção demonstram como criar regras de grupo de segurança de rede. As regras permitem que o HDInsight comunique com os serviços de gestão do Azure. Antes de utilizar os exemplos, ajuste os endereços IP para corresponder aos da região do Azure que está a utilizar. Pode encontrar estas informações em endereços IP de gestão do HDInsight.
Modelo Azure Resource Manager
O modelo de Resource Manager seguinte 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 do HDInsight na rede virtual.
Azure PowerShell
Utilize o seguinte script do PowerShell para criar uma rede virtual que restringe o tráfego de entrada e permite o tráfego dos endereços IP para a região Europa do Norte.
Importante
Altere os endereços IP para hdirule1
e hdirule2
neste exemplo para corresponder à região do Azure que está a utilizar. Pode encontrar estas informações endereços IP de gestão 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. Não contém uma regra para restringir o acesso de entrada a partir de outras origens. O código seguinte demonstra como ativar o acesso SSH a partir 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
Utilize os seguintes passos para criar uma rede virtual que restringe o tráfego de entrada, mas permite o tráfego dos endereços IP exigidos pelo HDInsight.
Utilize o seguinte comando para criar um novo grupo de segurança de rede com o nome
hdisecure
. SubstituaRESOURCEGROUP
pelo grupo de recursos que contém o Rede Virtual do Azure. Substitua pelaLOCATION
localização (região) na qual o grupo foi criado.az network nsg create -g RESOURCEGROUP -n hdisecure -l LOCATION
Assim que o grupo tiver sido criado, receberá informações sobre o novo grupo.
Utilize o seguinte para adicionar regras ao novo grupo de segurança de rede que permite a comunicação de entrada na porta 443 a partir do serviço de estado de funcionamento e gestão do Azure HDInsight. Substitua
RESOURCEGROUP
pelo nome do grupo de recursos que contém o Rede Virtual do Azure.Importante
Altere os endereços IP para
hdirule1
ehdirule2
neste exemplo para corresponder à região do Azure que está a utilizar. Pode encontrar estas informações em endereços IP de gestão 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 obter o identificador exclusivo para este grupo de segurança de rede, utilize o seguinte comando:
az network nsg show -g RESOURCEGROUP -n hdisecure --query "id"
Este comando devolve um valor semelhante ao seguinte texto:
"/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Network/networkSecurityGroups/hdisecure"
Utilize o seguinte comando para aplicar o grupo de segurança de rede a uma sub-rede. Substitua os
GUID
valores eRESOURCEGROUP
pelos valores devolvidos do passo anterior. SubstituaVNETNAME
eSUBNETNAME
pelo nome da rede virtual e o nome da sub-rede que pretende 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"
Assim que este comando for concluído, pode instalar o HDInsight no Rede Virtual.
Estes passos só abrem o acesso ao serviço de estado de funcionamento e gestão do HDInsight na cloud do Azure. Qualquer outro acesso ao cluster do HDInsight fora do Rede Virtual é bloqueado. Para ativar o acesso de fora da rede virtual, tem de adicionar regras adicionais do Grupo de Segurança de Rede.
O código seguinte demonstra como ativar o acesso SSH a partir 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 no local ligada
Este exemplo faz os seguintes pressupostos:
Tem um Rede Virtual do Azure que está ligado a uma rede no local através de um gateway de VPN.
O servidor DNS personalizado na rede virtual está a executar Linux ou Unix como o sistema operativo.
O enlace está instalado no servidor DNS personalizado.
No servidor DNS personalizado na rede virtual:
Utilize 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, em seguida, introduza 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, utilize o seguinte texto como o conteúdo do
/etc/bind/named.conf.local
ficheiro:// 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.Esta configuração encaminha todos os pedidos DNS para o sufixo DNS da rede virtual para a resolução recursiva do Azure.
No servidor DNS personalizado para a rede virtual, utilize o seguinte texto como o conteúdo do
/etc/bind/named.conf.options
ficheiro:// 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 endereços de pedidos de resolução de nomes dentro deste intervalo.Adicione o intervalo de endereços IP da rede no local à
acl goodclients { ... }
secção . A entrada permite pedidos de resolução de nomes de recursos na rede no local.Substitua o valor
192.168.0.1
pelo endereço IP do servidor DNS no local. Esta entrada encaminha todos os outros pedidos DNS para o servidor DNS no local.
Para utilizar a configuração, reinicie o Enlace. Por exemplo,
sudo service bind9 restart
.Adicione um reencaminhador condicional ao servidor DNS no local. Configure o reencaminhador condicional para enviar pedidos para o sufixo DNS do passo 1 para o servidor DNS personalizado.
Nota
Consulte a documentação do software DNS para obter informações específicas sobre como adicionar um reencaminhador condicional.
Depois de concluir estes passos, pode ligar a recursos em qualquer uma das redes com nomes de domínio completamente qualificados (FQDN). Agora pode instalar o HDInsight na rede virtual.
Resolução de nomes entre duas redes virtuais ligadas
Este exemplo faz os seguintes pressupostos:
Tem duas Redes Virtuais do Azure que estão ligadas através de um gateway de VPN ou peering.
O servidor DNS personalizado em ambas as redes está a executar Linux ou Unix como o sistema operativo.
O enlace é instalado nos servidores DNS personalizados.
Utilize 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, em seguida, introduza o comando:$NICs = Get-AzNetworkInterface -ResourceGroupName "RESOURCEGROUP" $NICs[0].DnsSettings.InternalDomainNameSuffix
az network nic list --resource-group RESOURCEGROUP --query "[0].dnsSettings.internalDomainNameSuffix"
Utilize o seguinte texto como o conteúdo do
/etc/bind/named.config.local
ficheiro no servidor DNS personalizado. Efetue esta 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 os pedidos para o sufixo DNS da rede remota para o DNS personalizado nessa rede.Nos servidores DNS personalizados em ambas as redes virtuais, utilize o seguinte texto como o conteúdo do
/etc/bind/named.conf.options
ficheiro:// 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 das suas redes virtuais. Esta entrada permite que os recursos em cada rede façam pedidos aos servidores DNS.Quaisquer pedidos que não sejam para os sufixos DNS das redes virtuais (por exemplo, microsoft.com) são processados pela resolução recursiva do Azure.
Para utilizar a configuração, reinicie o Enlace. Por exemplo,
sudo service bind9 restart
em ambos os servidores DNS.
Depois de concluir estes passos, pode ligar-se aos recursos na rede virtual com nomes de domínio completamente qualificados (FQDN). Agora pode instalar o HDInsight na rede virtual.
Testar as definições antes de implementar um cluster do HDInsight
Antes de implementar o cluster, pode verificar se muitas das definições de configuração de rede estão corretas ao executar a ferramenta Validador de Rede do HDInsight numa máquina virtual do Linux do Azure na mesma VNet e sub-rede que o cluster planeado.
Passos seguintes
Para obter um exemplo completo de configuração do HDInsight para ligar a uma rede no local, veja Connect HDInsight to an on-premises network (Ligar o HDInsight a uma rede no local).
Para configurar clusters do Apache HBase em redes virtuais do Azure, veja Criar clusters do Apache HBase no HDInsight no Azure Rede Virtual.
Para configurar a georreplicação do Apache HBase, veja Configurar a replicação de clusters do Apache HBase em redes virtuais do Azure.
Para obter mais informações sobre as redes virtuais do Azure, veja Descrição geral do Azure Rede Virtual.
Para obter mais informações sobre grupos de segurança de rede, veja Grupos de segurança de rede.
Para obter mais informações sobre rotas definidas pelo utilizador, veja Rotas definidas pelo utilizador e reencaminhamento IP.