Zelfstudie: Een Apache Kafka REST-proxycluster maken in HDInsight met behulp van Azure CLI

In deze zelfstudie leert u hoe u een Apache Kafka REST-proxycluster maakt in Azure HDInsight met behulp van de Azure CLI. Azure HDInsight is een beheerde, zeer uitgebreide open-source analyseservice voor bedrijven. Apache Kafka is een open-source, gedistribueerd streamingplatform. Het wordt vaak gebruikt als een berichtenbroker, omdat het een functionaliteit biedt die vergelijkbaar is met een publicatie-/abonnementswachtrij voor berichten. Met de Kafka REST-proxy kunt u met uw Kafka-cluster communiceren via een REST API over HTTP. De Azure CLI is de platformoverschrijdende opdrachtregelervaring van Microsoft voor het beheren van Azure-resources.

De Apache Kafka-API is alleen toegankelijk voor resources binnen hetzelfde virtuele netwerk. U kunt het cluster rechtstreeks openen via SSH. Als u andere services, netwerken of virtuele machines wilt verbinden met Apache Kafka, moet u eerst een virtueel netwerk maken en vervolgens de resources maken in het netwerk. Zie Verbinding maken met Apache Kafka via een virtueel netwerk voor meer informatie.

In deze zelfstudie komen deze onderwerpen aan bod:

  • Vereisten voor de Kafka REST-proxy
  • Een Apache Kafka-cluster maken met Azure CLI

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten

Een Apache Kafka-cluster maken

  1. Meld u aan bij uw Azure-abonnement.

    az login
    
    # If you have multiple subscriptions, set the one to use
    # az account set --subscription "SUBSCRIPTIONID"
    
  2. Stel omgevingsvariabelen in. Het gebruik van variabelen in deze zelfstudie is gebaseerd op Bash. Er zijn kleine variaties nodig voor andere omgevingen.

    Variabele Omschrijving
    resourceGroupName Vervang RESOURCEGROUPNAME door de naam van uw nieuwe resourcegroep.
    locatie Vervang LOCATION door de regio waar het cluster wordt gemaakt. Gebruik de opdracht az account list-locations voor een lijst met geldige locaties
    clusterName Vervang CLUSTERNAME door een globaal unieke naam voor uw nieuwe cluster.
    storageAccount Vervang STORAGEACCOUNTNAME door een naam voor uw nieuwe opslagaccount.
    httpPassword Vervang PASSWORD door een wachtwoord voor de clusteraanmelding, admin.
    sshPassword Vervang PASSWORD door een wachtwoord voor de gebruikersnaam van de beveiligde shell, sshuser.
    securityGroupName Vervang SECURITYGROUPNAME door de naam van de Microsoft Entra-beveiligingsgroep van de client voor Kafka REST Proxy. De variabele wordt doorgegeven aan de parameter --kafka-client-group-name voor az-hdinsight-create.
    securityGroupID Vervang SECURITYGROUPID door de microsoft Entra-beveiligingsgroep-id van de client voor Kafka REST Proxy. De variabele wordt doorgegeven aan de parameter --kafka-client-group-id voor az-hdinsight-create.
    storageContainer Opslagcontainer die door het cluster wordt gebruikt. Laat deze staan voor deze zelfstudie. Deze variabele wordt ingesteld met de naam van het cluster.
    workernodeCount Het aantal werkknooppunten in het cluster. Laat deze staan voor deze zelfstudie. Voor Kafka zijn minimaal drie werkknooppunten vereist om hoge beschikbaarheid te garanderen
    clusterType Type HDInsight-cluster. Laat dit staan voor deze zelfstudie.
    clusterVersion Versie van het HDInsight-cluster. Laat deze staan voor deze zelfstudie. Kafka REST Proxy vereist een minimumclusterversie van 4.0.
    componentVersion Versie van Kafka. Laat deze staan voor deze zelfstudie. Kafka REST Proxy vereist een minimale onderdeelversie van 2.1.

    Werk de variabelen bij met de gewenste waarden. Voer vervolgens de CLI-opdrachten in om de omgevingsvariabelen in te stellen.

    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. Maak de resourcegroep door de onderstaande opdracht in te voeren:

     az group create \
        --location $location \
        --name $resourceGroupName
    
  4. Maak een Azure Storage-account door de onderstaande opdracht in te voeren:

    # 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. Extraheer de primaire sleutel uit het Azure Storage-account en sla deze op in een variabele door de onderstaande opdracht in te voeren:

    export storageAccountKey=$(az storage account keys list \
        --account-name $storageAccount \
        --resource-group $resourceGroupName \
        --query [0].value -o tsv)
    
  6. Maak een Azure Storage-container door de onderstaande opdracht in te voeren:

    az storage container create \
        --name $storageContainer \
        --account-key $storageAccountKey \
        --account-name $storageAccount
    
  7. Maak het HDInsight-cluster. Noteer de volgende parameters voordat u de opdracht invoert:

    1. Vereiste parameters voor Kafka-clusters:

      Parameter Omschrijving
      --type De waarde moet Kafka zijn.
      --workernode-data-disks-per-node Het aantal gegevensschijven dat per werkknooppunt moet worden gebruikt. HDInsight Kafka wordt alleen ondersteund met gegevensschijven. In deze zelfstudie wordt een waarde van 2 gebruikt.
    2. Vereiste parameters voor de Kafka REST-proxy:

      Parameter Omschrijving
      --kafka-management-node-size De grootte van het knooppunt. In deze zelfstudie wordt de waarde Standard_D4_v2 gebruikt.
      --kafka-client-group-id De client-id van de Microsoft Entra-beveiligingsgroep voor Kafka REST Proxy. De waarde wordt doorgegeven vanuit de variabele $securityGroupID.
      --kafka-client-group-name De naam van de microsoft Entra-beveiligingsgroep van de client voor Kafka REST Proxy. De waarde wordt doorgegeven vanuit de variabele $securityGroupName.
      --version De versie van het HDInsight-cluster moet ten minste 4.0 zijn. De waarde wordt doorgegeven vanuit de variabele $clusterVersion.
      --component-version De Kafka-versie moet ten minste 2.1 zijn. De waarde wordt doorgegeven vanuit de variabele $componentVersion.

      Als u het cluster wilt maken zonder REST-proxy, verwijdert u --kafka-management-node-size, --kafka-client-group-id en --kafka-client-group-name uit de opdracht az hdinsight create.

    3. Als u een bestaand virtueel netwerk hebt, voegt u de parameters --vnet-name en --subnet plus de bijbehorende waarden toe.

    Voer de volgende opdracht in om het cluster te maken:

    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"
    

    Het kan enkele minuten duren voordat het cluster is gemaakt. Meestal ongeveer 15.

Resources opschonen

Nadat u het artikel hebt voltooid, kunt u het cluster verwijderen. Met HDInsight worden uw gegevens opgeslagen in Azure Storage zodat u een cluster veilig kunt verwijderen wanneer deze niet wordt gebruikt. Voor een HDInsight-cluster worden ook kosten in rekening gebracht, zelfs wanneer het niet wordt gebruikt. Aangezien de kosten voor het cluster vaak zoveel hoger zijn dan de kosten voor opslag, is het financieel gezien logischer clusters te verwijderen wanneer ze niet worden gebruikt.

Voer alle of enkele van de volgende opdrachten in om resources te verwijderen:

# 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

Volgende stappen

Nu u een cluster met de Apache Kafka REST-proxy hebt gemaakt in Azure HDInsight met behulp van Azure CLI, kunt u Python-code gebruiken om met de REST-proxy te communiceren: