Руководство. Создание кластера Apache Kafka с поддержкой прокси-сервера REST в HDInsight с помощью Azure CLI

Из этого учебника вы узнаете, как создать кластер Apache Kafka с поддержкой прокси-сервера REST в Azure HDInsight с помощью CLI Azure. Azure HDInsight — это управляемая комплексная служба аналитики с открытым кодом, предназначенная для предприятий. Apache Kafka — это распределенная платформа потоковой передачи с открытым кодом. Она часто используется как брокер сообщений, предоставляя такие же функциональные возможности, как и очередь сообщений типа "публикация-подписка". Прокси-сервер REST для Kafka позволяет взаимодействовать с кластером Kafka через REST API по протоколу HTTP. Azure CLI — это кроссплатформенный интерфейс командной строки от Майкрософт для управления ресурсами Azure.

API Apache Kafka доступен только ресурсам, размещенным в той же виртуальной сети. Вы можете обращаться к кластеру напрямую по протоколу SSH. Чтобы подключить к Apache Kafka другие службы, сети или виртуальные машины, необходимо сначала создать виртуальную сеть, а затем создать в ней эти ресурсы. Дополнительные сведения см. в статье Подключение к Kafka в HDInsight с помощью виртуальной сети Azure.

Из этого руководства вы узнаете:

  • необходимые условия для прокси-сервера REST для Kafka;
  • как создать кластер Apache Kafka с помощью Azure CLI.

Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

Необходимые компоненты

  • Приложение, зарегистрированное с идентификатором Microsoft Entra. Клиентские приложения, которые вы создаете для взаимодействия с прокси-сервером REST для Kafka, будут использовать эти значения идентификатора и секрета приложения для проверки подлинности в Azure. Подробнее см. статью о регистрации приложения на платформе удостоверений Майкрософт.

  • Группа безопасности Microsoft Entra с зарегистрированным приложением в качестве члена. Эта группа безопасности будет использоваться для управления тем, какие приложения могут взаимодействовать с прокси-сервером REST. Дополнительные сведения о создании групп Microsoft Entra см. в статье "Создание базовой группы" и добавление участников с помощью идентификатора Microsoft Entra.

  • Azure CLI. Убедитесь, что у вас установлена версия 2.0.79 или более поздняя. Подробнее см. статью Установка Azure CLI.

Создание кластера Apache Kafka

  1. Вход в вашу подписку Azure.

    az login
    
    # If you have multiple subscriptions, set the one to use
    # az account set --subscription "SUBSCRIPTIONID"
    
  2. Задайте переменные среды. В этом учебнике используются переменные, характерные для Bash. В случае других сред потребуются минимальные изменения.

    Переменная Description
    resourceGroupName Замените RESOURCEGROUPNAME именем новой группы ресурсов.
    Расположение Замените LOCATION регионом, в котором будет создан кластер. Чтобы получить список допустимых расположений, выполните команду az account list-locations.
    clusterName Замените CLUSTERNAME глобально уникальным именем нового кластера.
    storageAccount Замените STORAGEACCOUNTNAME именем новой учетной записи хранения.
    httpPassword Замените PASSWORD паролем для учетной записи admin в кластере.
    sshPassword Замените PASSWORD паролем для учетной записи sshuser для оболочки SSH.
    securityGroupName Замените SECURITYGROUPNAME именем группы безопасности Microsoft Entra для прокси-сервера REST Kafka. Эта переменная будет передана в параметре --kafka-client-group-name оператору az-hdinsight-create.
    securityGroupID Замените SECURITYGROUPID идентификатором группы безопасности Microsoft Entra для прокси-сервера REST Kafka. Эта переменная будет передана в параметре --kafka-client-group-id оператору az-hdinsight-create.
    storageContainer Контейнер хранилища, который будет использоваться кластером. Его не нужно изменять для этого учебника. Эта переменная получит имя кластера.
    workernodeCount Количество рабочих ролей в кластере. Его не нужно изменять для этого учебника. Чтобы гарантировать высокую доступность, Kafka требуется три рабочих узла или более.
    clusterType Тип кластера HDInsight. Его не нужно изменять для этого учебника.
    clusterVersion Версия кластера HDInsight. Ее не нужно изменять для этого учебника. Прокси-серверу REST для Kafka требуется версия кластера не ниже 4.0.
    componentVersion Версия Kafka. Ее не нужно изменять для этого учебника. Прокси-серверу REST для Kafka требуется версия компонента не ниже 2.1.

    Присвойте переменным нужные значения. Затем введите команды командной строки, чтобы задать переменные среды.

    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. Создайте группу ресурсов, введя следующую команду:

     az group create \
        --location $location \
        --name $resourceGroupName
    
  4. Создайте учетную запись хранения Azure, введя следующую команду:

    # 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. Извлеките первичный ключ из учетной записи службы хранилища Azure и сохраните его в переменной, введя следующую команду:

    export storageAccountKey=$(az storage account keys list \
        --account-name $storageAccount \
        --resource-group $resourceGroupName \
        --query [0].value -o tsv)
    
  6. Создайте контейнер хранилища Azure, введя следующую команду:

    az storage container create \
        --name $storageContainer \
        --account-key $storageAccountKey \
        --account-name $storageAccount
    
  7. Создайте кластер HDInsight. Прежде чем вводить эту команду, укажите следующие параметры.

    1. Обязательные параметры для кластеров Kafka:

      Параметр Описание
      --type Необходимо задать значение Kafka.
      --workernode-data-disks-per-node Количество дисков данных, используемых для каждого рабочего узла. Kafka поддерживается в HDInsight только с дисками данных. В этом учебнике используется значение 2.
    2. Обязательные параметры для прокси-сервера REST для Kafka:

      Параметр Описание
      --kafka-management-node-size Размер узла. В этом руководстве используется значение Standard_D4_v2.
      --kafka-client-group-id Идентификатор группы безопасности Microsoft Entra для прокси-сервера REST Kafka. Это значение передается из переменной $securityGroupID.
      --kafka-client-group-name Имя группы безопасности Microsoft Entra для прокси-сервера REST Kafka. Это значение передается из переменной $securityGroupName.
      --version Требуется версия кластера HDInsight не ниже 4.0. Это значение передается из переменной $clusterVersion.
      --component-version Требуется версия Kafka не ниже 2.1. Это значение передается из переменной $componentVersion.

      Если вы хотите создать кластер без прокси-сервера REST, исключите параметры --kafka-management-node-size, --kafka-client-group-id и --kafka-client-group-name из команды az hdinsight create.

    3. Если у вас уже есть виртуальная сеть, добавьте параметры --vnet-name и --subnet с нужными значениями.

    Введите следующую команду, чтобы создать кластер.

    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"
    

    Процесс создания кластера может занять несколько минут. обычно около 15 минут.

Очистка ресурсов

После завершения работы с этой статьей кластер можно удалить. В случае с HDInsight ваши данные хранятся в службе хранилища Azure, что позволяет безопасно удалить неиспользуемый кластер. Плата за кластеры HDInsight взимается, даже когда они не используются. Так как затраты на кластер во много раз превышают затраты на хранилище, экономически целесообразно удалять неиспользуемые кластеры.

Введите все следующие команды или некоторые из них, чтобы удалить ресурсы:

# 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

Следующие шаги

Итак, вы успешно создали в Azure HDInsight кластер с поддержкой прокси-сервера REST для Apache Kafka с помощью Azure CLI. Теперь вы можете взаимодействовать с этим прокси-сервером REST, используя код Python: