Руководство. Создание кластера 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
Вход в вашу подписку Azure.
az login # If you have multiple subscriptions, set the one to use # az account set --subscription "SUBSCRIPTIONID"
Задайте переменные среды. В этом учебнике используются переменные, характерные для 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
Создайте группу ресурсов, введя следующую команду:
az group create \ --location $location \ --name $resourceGroupName
Создайте учетную запись хранения 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
Извлеките первичный ключ из учетной записи службы хранилища Azure и сохраните его в переменной, введя следующую команду:
export storageAccountKey=$(az storage account keys list \ --account-name $storageAccount \ --resource-group $resourceGroupName \ --query [0].value -o tsv)
Создайте контейнер хранилища Azure, введя следующую команду:
az storage container create \ --name $storageContainer \ --account-key $storageAccountKey \ --account-name $storageAccount
Создайте кластер HDInsight. Прежде чем вводить эту команду, укажите следующие параметры.
Обязательные параметры для кластеров Kafka:
Параметр Описание --type Необходимо задать значение Kafka. --workernode-data-disks-per-node Количество дисков данных, используемых для каждого рабочего узла. Kafka поддерживается в HDInsight только с дисками данных. В этом учебнике используется значение 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
.Если у вас уже есть виртуальная сеть, добавьте параметры
--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: