在本教學課程中,您將瞭解如何使用 Azure CLI 在 Azure HDInsight 中建立已啟用 Apache Kafka REST Proxy 的叢集。 Azure HDInsight 是企業受控、全方位、開放原始碼的分析服務。 Apache Kafka 是一個開放原始碼的分散式串流平台。 它通常用作訊息代理,因為它提供類似於發布-訂閱訊息佇列的功能。 Kafka REST Proxy可讓您透過HTTP上的 REST API 與Kafka叢集互動。 Azure CLI 是Microsoft管理 Azure 資源的跨平臺命令行體驗。
Apache Kafka API 只能由相同虛擬網路內的資源存取。 您可以使用 SSH 直接存取叢集。 若要將其他服務、網路或虛擬機器連線至 Apache Kafka,您必須先建立虛擬網路,然後在網路內建立資源。 如需詳細資訊,請參閱 使用虛擬網路連線到 Apache Kafka。
在本教學課程中,您將瞭解:
- Kafka REST Proxy 的必要條件
- 使用 Azure CLI 建立 Apache Kafka 叢集
如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
先決條件
使用 Microsoft Entra ID 註冊的應用程式。 您撰寫與 Kafka REST Proxy 互動的用戶端應用程式會使用此應用程式的識別碼和秘密,向 Azure 進行驗證。 如需詳細資訊,請參閱使用 Microsoft 身分識別平台註冊應用程式。
具有您註冊應用程式作為成員的 Microsoft Entra 安全性群組。 此安全群組將用於控制允許哪些應用程式與 REST Proxy 互動。 如需建立 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) 將 CLUSTERNAME 替換為您新叢集的全域唯一名稱。 storageAccount 將 STORAGEACCOUNTNAME 取代為新儲存體帳戶的名稱。 http密碼 將 PASSWORD 取代為叢集登入的密碼,admin。 ssh密碼 將PASSWORD替換為安全Shell使用者名稱 sshuser的密碼。 安全群組名稱 將 SECURITYGROUPNAME 替換為客戶端 Microsoft Entra 的 Kafka REST Proxy 安全群組名稱。 變數會被傳遞到用於 --kafka-client-group-name的az-hdinsight-create參數。安全性群組識別碼 將 SECURITYGROUPID 替換為 Microsoft Entra 用戶端 Kafka REST Proxy 的安全性群組識別碼。 變數會被傳遞到用於 --kafka-client-group-id的az-hdinsight-create參數。儲存容器 叢集將會使用的儲存體容器,在本教學課程中保持原狀。 此變數將設定為叢集的名稱。 workernodeCount (工作節點數量) 叢集中的工作節點數目,請在本教程中保持不變。 為了保證高可用性,Kafka 至少需要 3 個工作節點 clusterType HDInsight 叢集的類型,針對本教學課程請保持不變。 clusterVersion HDInsight 叢集版本,在本教學課程中保持原狀。 Kafka REST Proxy 需要最低叢集版本 4.0。 componentVersion Kafka 版本,請在此教學中保持原樣。 Kafka REST Proxy 需要最低元件版本 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 儲存體帳戶:
# 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 叢集的必要參數:
參數 Description --類型 值必須是 Kafka。 --workernode-data-disks-每個節點 每個工作節點要使用的資料磁碟數目。 HDInsight Kafka 僅支援資料磁碟。 本教程使用值 2。 Kafka REST Proxy 的必要參數:
參數 Description --kafka-management-node-size 節點的大小。 本教學課程使用值 Standard_D4_v2。 --kafka-client-group-id Kafka REST Proxy 的用戶端 Microsoft Entra 安全性群組識別碼。 值是從變數 $securityGroupID 傳遞。 --kafka-client-group-name Kafka REST Proxy 的用戶端 Microsoft Entra 安全性群組名稱。 該值從變數 $securityGroupName 傳遞。 --version HDInsight 叢集版本必須至少為 4.0。 該值從變數 $clusterVersion 傳遞。 --組件版本 Kafka 版本必須至少為 2.1。 該值從變數 $componentVersion 傳遞。 如果您想要建立沒有 REST Proxy 的叢集,請從命令中
--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 CLI 在 Azure HDInsight 中成功建立已啟用 Apache Kafka REST Proxy 的叢集,請使用 Python 程式碼與 REST Proxy 互動: