Поделиться через


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

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

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

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

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

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

Предпосылки

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

  1. Войдите в свою подписку Azure.

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

    Переменная Описание
    resourceGroupName Замените RESOURCEGROUPNAME именем новой группы ресурсов.
    расположение Замените LOCATION регионом, в котором будет создан кластер. Для списка допустимых расположений используйте az account list-locations команду
    Имя кластера Замените CLUSTERNAME глобальным уникальным именем для нового кластера.
    storageAccount Замените STORAGEACCOUNTNAME именем новой учетной записи хранения.
    httpPassword Замените PASSWORD паролем для имени входа в кластер, администратора.
    sshPassword Замените ПАРОЛЬ паролем для имени пользователя безопасной оболочки sshuser.
    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 Количество рабочих узлов в кластере оставьте as-is для этого руководства. Для обеспечения высокой доступности Kafka требует не менее 3 рабочих узлов
    тип кластера Тип кластера HDInsight, оставьте как есть для этого урока.
    clusterVersion Версию кластера HDInsight оставьте как есть для этого руководства. Для прокси-сервера REST Kafka требуется минимальная версия кластера 4.0.
    componentVersion Версию Kafka оставьте без изменений для этого руководства. Для прокси-сервера REST Kafka требуется минимальная версия компонента 2.1.

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

    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 Количество дисков данных, используемых для каждого рабочего узла. HDInsight Kafka поддерживается только с дисками данных. В этом руководстве используется значение 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 для прокси-сервера Kafka REST. Значение передается из переменной $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

Дальнейшие действия

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