Tutorial: Criar um cluster habilitado para proxy Apache Kafka REST no HDInsight usando a CLI do Azure

Neste tutorial, você aprenderá a criar um cluster habilitado para proxy Apache Kafka REST no Azure HDInsight usando a CLI do Azure. O Azure HDInsight é um serviço de análise gerido, de espectro completo e de código aberto para empresas. O Apache Kafka é uma plataforma de código aberto de transmissão em fluxo distribuída. É frequentemente utilizado como mediador de mensagens, uma vez que fornece funcionalidades semelhantes a uma fila de mensagens de publicação-subscrição. O Kafka REST Proxy permite que você interaja com seu cluster Kafka por meio de uma API REST sobre HTTP. A CLI do Azure é a experiência de linha de comandos para várias plataformas da Microsoft para a gestão de recursos do Azure.

Só os recursos dentro da mesma rede virtual podem aceder à API do Apache Kafka. Você pode acessar o cluster diretamente usando SSH. Para ligar outros serviços, redes ou máquinas virtuais ao Apache Kafka, tem primeiro de criar uma rede virtual e, em seguida, criar os recursos dentro da rede. Para obter mais informações, consulte Conectar-se ao Apache Kafka usando uma rede virtual.

Neste tutorial, você aprende:

  • Pré-requisitos para proxy Kafka REST
  • Criar um cluster Apache Kafka usando a CLI do Azure

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

  • Uma aplicação registada com o Microsoft Entra ID. Os aplicativos cliente que você escreve para interagir com o proxy REST Kafka usarão a ID e o segredo desse aplicativo para autenticar no Azure. Para obter mais informações, consulte Registrar um aplicativo com a plataforma de identidade da Microsoft.

  • Um grupo de segurança do Microsoft Entra com seu aplicativo registrado como membro. Esse security group será usado para controlar quais aplicativos têm permissão para interagir com o proxy REST. Para obter mais informações sobre como criar grupos do Microsoft Entra, consulte Criar um grupo básico e adicionar membros usando o Microsoft Entra ID.

  • CLI do Azure. Certifique-se de ter pelo menos a versão 2.0.79. Consulte Instalar a CLI do Azure.

Criar um cluster do Apache Kafka

  1. Entre na sua assinatura do Azure.

    az login
    
    # If you have multiple subscriptions, set the one to use
    # az account set --subscription "SUBSCRIPTIONID"
    
  2. Defina variáveis de ambiente. O uso de variáveis neste tutorial é baseado em Bash. Pequenas variações serão necessárias para outros ambientes.

    Variável Descrição
    resourceGroupName Substitua RESOURCEGROUPNAME pelo nome do seu novo grupo de recursos.
    localização Substitua LOCATION por uma região onde o cluster será criado. Para obter uma lista de locais válidos, use o az account list-locations comando
    clusterName Substitua CLUSTERNAME por um nome globalmente exclusivo para o novo cluster.
    storageAccount Substitua STORAGEACCOUNTNAME por um nome para sua nova conta de armazenamento.
    httpPalavra-passe Substitua PASSWORD por uma senha para o login do cluster, admin.
    sshSenha Substitua PASSWORD por uma senha para o nome de usuário do shell seguro, sshuser.
    securityGroupName Substitua SECURITYGROUPNAME pelo nome do grupo de segurança cliente Microsoft Entra para Kafka REST Proxy. A variável será passada para o --kafka-client-group-name parâmetro para az-hdinsight-create.
    securityGroupID Substitua SECURITYGROUPID pelo ID do grupo de segurança cliente Microsoft Entra para Kafka REST Proxy. A variável será passada para o --kafka-client-group-id parâmetro para az-hdinsight-create.
    storageContainer Contêiner de armazenamento que o cluster usará, deixe como está para este tutorial. Esta variável será definida com o nome do cluster.
    workernodeCount Número de nós de trabalho no cluster, deixe como está para este tutorial. Para garantir alta disponibilidade, Kafka requer um mínimo de 3 nós de trabalho
    tipo de cluster Tipo de cluster HDInsight, deixe como está para este tutorial.
    clusterVersão Versão do cluster HDInsight, deixe como está para este tutorial. Kafka REST Proxy requer uma versão mínima de cluster de 4.0.
    componentVersion Kafka versão, deixe como está para este tutorial. Kafka REST Proxy requer uma versão de componente mínimo de 2.1.

    Atualize as variáveis com os valores desejados. Em seguida, insira os comandos da CLI para definir as variáveis de ambiente.

    export resourceGroupName=RESOURCEGROUPNAME
    export location=LOCATION
    export clusterName=CLUSTERNAME
    export storageAccount=STORAGEACCOUNTNAME
    export httpPassword='PASSWORD'
    export sshPassword='PASSWORD'
    export securityGroupName=SECURITYGROUPNAME
    export securityGroupID=SECURITYGROUPID
    
    export storageContainer=$(echo $clusterName | tr "[:upper:]" "[:lower:]")
    export workernodeCount=3
    export clusterType=kafka
    export clusterVersion=4.0
    export componentVersion=kafka=2.1
    
  3. Crie o grupo de recursos inserindo o comando abaixo:

     az group create \
        --location $location \
        --name $resourceGroupName
    
  4. Crie uma conta de Armazenamento do Azure inserindo o comando abaixo:

    # Note: kind BlobStorage is not available as the default storage account.
    az storage account create \
        --name $storageAccount \
        --resource-group $resourceGroupName \
        --https-only true \
        --kind StorageV2 \
        --location $location \
        --sku Standard_LRS
    
  5. Extraia a chave primária da conta de Armazenamento do Azure e armazene-a em uma variável inserindo o comando abaixo:

    export storageAccountKey=$(az storage account keys list \
        --account-name $storageAccount \
        --resource-group $resourceGroupName \
        --query [0].value -o tsv)
    
  6. Crie um contêiner de Armazenamento do Azure inserindo o comando abaixo:

    az storage container create \
        --name $storageContainer \
        --account-key $storageAccountKey \
        --account-name $storageAccount
    
  7. Crie o cluster HDInsight. Antes de inserir o comando, observe os seguintes parâmetros:

    1. Parâmetros necessários para clusters Kafka:

      Parâmetro Descrição
      --tipo O valor deve ser Kafka.
      --workernode-data-disks-per-node O número de discos de dados a serem usados por nó de trabalho. O HDInsight Kafka só é suportado com discos de dados. Este tutorial usa um valor de 2.
    2. Parâmetros necessários para o proxy Kafka REST:

      Parâmetro Descrição
      --kafka-management-node-size O tamanho do nó. Este tutorial usa o valor Standard_D4_v2.
      --kafka-cliente-grupo-id A ID do grupo de segurança cliente Microsoft Entra para Kafka REST Proxy. O valor é passado da variável $securityGroupID.
      --kafka-cliente-grupo-nome O nome do grupo de segurança cliente Microsoft Entra para Kafka REST Proxy. O valor é passado da variável $securityGroupName.
      --Versão A versão do cluster HDInsight deve ser pelo menos 4.0. O valor é passado da variável $clusterVersion.
      --componente-versão A versão Kafka deve ser pelo menos 2.1. O valor é passado da variável $componentVersion.

      Se você quiser criar o cluster sem proxy REST, elimine --kafka-management-node-size, --kafka-client-group-ide --kafka-client-group-name do az hdinsight create comando.

    3. Se você tiver uma rede virtual existente, adicione os parâmetros --vnet-name e , e --subnetseus valores.

    Digite o seguinte comando para criar o cluster:

    az hdinsight create \
        --name $clusterName \
        --resource-group $resourceGroupName \
        --type $clusterType \
        --component-version $componentVersion \
        --http-password $httpPassword \
        --http-user admin \
        --location $location \
        --ssh-password $sshPassword \
        --ssh-user sshuser \
        --storage-account $storageAccount \
        --storage-account-key $storageAccountKey \
        --storage-container $storageContainer \
        --version $clusterVersion \
        --workernode-count $workernodeCount \
        --workernode-data-disks-per-node 2 \
        --kafka-management-node-size "Standard_D4_v2" \
        --kafka-client-group-id $securityGroupID \
        --kafka-client-group-name "$securityGroupName"
    

    Pode levar vários minutos para que o processo de criação do cluster seja concluído. Geralmente em torno de 15.

Clean up resources (Limpar recursos)

Depois de concluir o artigo, pode achar conveniente eliminar o cluster. Com o HDInsight, seus dados são armazenados no Armazenamento do Azure, para que você possa excluir com segurança um cluster quando ele não estiver em uso. Você também é cobrado por um cluster HDInsight, mesmo quando ele não está em uso. Como as cobranças para o cluster são muitas vezes maiores do que as taxas para armazenamento, faz sentido econômico excluir clusters quando eles não estão em uso.

Insira todos ou alguns dos seguintes comandos para remover recursos:

# Remove cluster
az hdinsight delete \
    --name $clusterName \
    --resource-group $resourceGroupName

# Remove storage container
az storage container delete \
    --account-name $storageAccount  \
    --name $storageContainer

# Remove storage account
az storage account delete \
    --name $storageAccount  \
    --resource-group $resourceGroupName

# Remove resource group
az group delete \
    --name $resourceGroupName

Próximos passos

Agora que você criou com êxito um cluster habilitado para proxy Apache Kafka REST no Azure HDInsight usando a CLI do Azure, use o código Python para interagir com o proxy REST: