このチュートリアルでは、Azure CLI を使用して、Azure HDInsight で Apache Kafka REST プロキシが有効な クラスターを作成する方法について説明します。 Azure HDInsight は、企業向けのマネージドで幅広いオープンソースの分析サービスです。 Apache Kafka は、オープンソースの分散ストリーミング プラットフォームです。 発行/サブスクライブ メッセージ キューと同様の機能を提供するため、メッセージ ブローカーとしてよく使用されます。 Kafka REST プロキシを使用すると、HTTP 経由で REST API を使用して Kafka クラスターと対話できます。 Azure CLI は、Azure リソースを管理するための Microsoft のクロスプラットフォーム コマンド ライン エクスペリエンスです。
Apache Kafka API には、同じ仮想ネットワーク内のリソースのみがアクセスできます。 SSH を使用してクラスターに直接アクセスできます。 他のサービス、ネットワーク、または仮想マシンを Apache Kafka に接続するには、まず仮想ネットワークを作成してから、ネットワーク内にリソースを作成する必要があります。 詳細については、「 仮想ネットワークを使用して Apache Kafka に接続する」を参照してください。
このチュートリアルで学習する内容は次のとおりです。
- Kafka REST プロキシの前提条件
- Azure CLI を使用して Apache Kafka クラスターを作成する
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
[前提条件]
Microsoft Entra ID に登録されているアプリケーション。 Kafka REST プロキシと対話するために作成したクライアント アプリケーションは、このアプリケーションの ID とシークレットを使用して Azure に対する認証を行います。 詳細については、Microsoft ID プラットフォームにアプリケーションを登録する方法に関するページを参照してください。
登録したアプリケーションをメンバーとして持つ Microsoft Entra セキュリティ グループ。 このセキュリティ グループは、REST プロキシとの対話を許可されるアプリケーションを制御するために使用されます。 Microsoft Entra グループの作成の詳細については、「 基本的なグループを作成し、Microsoft Entra ID を使用してメンバーを追加する」を参照してください。
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 に基づいています。 他の環境では、わずかなバリエーションが必要になります。
Variable Description resourceGroupName RESOURCEGROUPNAME を新しいリソース グループの名前に置き換えます。 位置 LOCATION をクラスターが作成されるリージョンに置き換えます。 有効な場所の一覧については、 az account list-locationsコマンドを使用します。クラスターネーム CLUSTERNAME を、新しいクラスターのグローバルに一意の名前に置き換えます。 storageAccount STORAGEACCOUNTNAME を新しいストレージ アカウントの名前に置き換えます。 httpPassword PASSWORD をクラスター ログイン管理者のパスワードに置き換えます。 sshPassword PASSWORD を、secure shell ユーザー名 sshuser のパスワードに置き換えます。 セキュリティグループ名 SECURITYGROUPNAME を Kafka REST プロキシのクライアント Microsoft Entra セキュリティ グループ名に置き換えます。 変数は、 --kafka-client-group-nameのaz-hdinsight-createパラメーターに渡されます。セキュリティグループID (securityGroupID) SECURITYGROUPID を Kafka REST プロキシのクライアント Microsoft Entra セキュリティ グループ ID に置き換えます。 変数は、 --kafka-client-group-idのaz-hdinsight-createパラメーターに渡されます。ストレージコンテナ クラスターが使用するストレージ コンテナーは、このチュートリアルでは as-is のままにしておきます。 この変数は、クラスターの名前で設定されます。 ワーカーノードカウント クラスター内のワーカー ノードの数は、このチュートリアルでは as-is のままにします。 高可用性を保証するために、Kafka には少なくとも 3 つのワーカー ノードが必要です clusterType HDInsight クラスターの種類は、このチュートリアルでは as-is のままにします。 clusterVersion HDInsight クラスターのバージョンは、このチュートリアルで変更せずそのままにしておきます。 Kafka REST プロキシには、4.0 の最小クラスター バージョンが必要です。 componentVersion Kafka バージョンは、このチュートリアルではそのままにしておきます。 Kafka REST プロキシには、最小コンポーネント バージョン 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次のコマンドを入力して、リソース グループを作成します。
az group create \ --location $location \ --name $resourceGroupName次のコマンドを入力して、Azure Storage アカウントを作成します。
# 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 Storage アカウントから主キーを抽出し、変数に格納します。
export storageAccountKey=$(az storage account keys list \ --account-name $storageAccount \ --resource-group $resourceGroupName \ --query [0].value -o tsv)次のコマンドを入力して、Azure Storage コンテナーを作成します。
az storage container create \ --name $storageContainer \ --account-key $storageAccountKey \ --account-name $storageAccountHDInsight クラスターを作成します。 コマンドを入力する前に、次のパラメーターに注意してください。
Kafka クラスターに必要なパラメーター:
パラメーター Description --type 値は Kafka である必要があります。 --workernode-data-disks-per-node ワーカー ノードごとに使用するデータ ディスクの数。 HDInsight Kafka は、データ ディスクでのみサポートされます。 このチュートリアルでは、値 2 を使用 します。 Kafka REST プロキシに必要なパラメーター:
パラメーター Description --kafka-management-node-size ノードのサイズ。 このチュートリアルでは、Standard_D4_v2値を使用 します。 --kafka-client-group-id Kafka REST プロキシの Microsoft Entra セキュリティ グループのクライアント ID。 値は変数 $securityGroupIDから渡されます。 --kafka-client-group-name Kafka REST プロキシ用のMicrosoft Entraクライアントセキュリティグループ名。 値は変数 $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 Storage に格納されるため、クラスターは、使用されていない場合に安全に削除できます。 また、HDInsight クラスターは、使用していない場合でも課金されます。 クラスターの料金は Storage の料金の何倍にもなるため、クラスターを使用しない場合は削除するのが経済的にも合理的です。
次のコマンドのすべてまたは一部を入力して、リソースを削除します。
# 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 CLI を使用して Azure HDInsight で Apache Kafka REST プロキシ対応クラスターを正常に作成したので、Python コードを使用して REST プロキシを操作します。