快速入門:使用 Azure CLI 建立適用於 Apache Cassandra 叢集的 Azure 受控執行個體
適用於 Apache Cassandra 的 Azure 受控執行個體 是純開放原始碼 Apache Cassandra 叢集的完整受控服務。 此服務也允許根據每個工作負載的特定需求來覆寫組態,允許視需要的最大彈性和控制。
本快速入門示範如何使用 Azure CLI 命令,搭配適用於 Apache Cassandra 的 Azure 受控執行個體 建立叢集。 它也會示範如何建立數據中心,並在數據中心內相應增加或相應減少節點。
必要條件
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 Azure Cloud Shell 中的 Bash 快速入門。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱使用 Azure CLI 登入。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能詳細資訊,請參閱使用 Azure CLI 擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
Azure 虛擬網絡 可連線到自我裝載或內部部署環境。 如需將內部部署環境連線至 Azure 的詳細資訊,請參閱將內部部署網路 連線 至 Azure 一文。
如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
重要
本文需要 Azure CLI 2.30.0 版或更高版本。 如果您使用 Azure Cloud Shell,則已安裝最新版本。
建立受控實例叢集
登入 Azure 入口網站
在 Azure CLI 中設定訂用帳戶識別碼:
az account set -s <Subscription_ID>
接下來,在資源群組中使用專用子網建立 虛擬網絡:
az network vnet create -n <VNet_Name> -l eastus2 -g <Resource_Group_Name> --subnet-name <Subnet Name>
注意
部署適用於 Apache Cassandra 的 Azure 受控執行個體 需要因特網存取。 在因特網存取受到限制的環境中,部署失敗。 請確定您不會封鎖 VNet 內對下列重要 Azure 服務進行存取,這是受控 Cassandra 正常運作所需的下列重要 Azure 服務:
- Azure 儲存體
- Azure KeyVault
- Azure 虛擬機器擴展集
- Azure 監視
- Microsoft Entra ID
- Azure 安全性
將某些特殊許可權套用至受控實例所需的 虛擬網絡。
az role assignment create
使用 命令,將、<resourceGroupName>
和<vnetName>
取代<subscriptionID>
為適當的值:az role assignment create \ --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \ --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \ --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>
注意
assignee
上一個命令中的 和role
值是固定值,請輸入這些值,與命令中所述完全相同。 這樣做會導致建立叢集時發生錯誤。 如果您在執行此命令時遇到任何錯誤,您可能沒有執行它的許可權,請連絡管理員以取得許可權。接下來,使用 az managed-cassandra cluster create 命令,在新建立的 虛擬網絡 中建立叢集。 執行下列命令變數的值
delegatedManagementSubnetId
:注意
您將會提供下列變數的值
delegatedManagementSubnetId
,與您在上述命令中所提供的值--scope
完全相同:resourceGroupName='<Resource_Group_Name>' clusterName='<Cluster_Name>' location='eastus2' delegatedManagementSubnetId='/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Network/virtualNetworks/<VNet name>/subnets/<subnet name>' initialCassandraAdminPassword='myPassword' cassandraVersion='3.11' # set to 4.0 for a Cassandra 4.0 cluster az managed-cassandra cluster create \ --cluster-name $clusterName \ --resource-group $resourceGroupName \ --location $location \ --delegated-management-subnet-id $delegatedManagementSubnetId \ --initial-cassandra-admin-password $initialCassandraAdminPassword \ --cassandra-version $cassandraVersion \ --debug
最後,使用 az managed-cassandra datacenter create 命令,為叢集建立數據中心,其中包含三個節點標準 D8s v4 VM SKU,每個節點都連結 4 個 P30 磁碟:
dataCenterName='dc1' dataCenterLocation='eastus2' virtualMachineSKU='Standard_D8s_v4' noOfDisksPerNode=4 az managed-cassandra datacenter create \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterName \ --data-center-location $dataCenterLocation \ --delegated-subnet-id $delegatedManagementSubnetId \ --node-count 3 \ --sku $virtualMachineSKU \ --disk-capacity $noOfDisksPerNode \ --availability-zone false
注意
的值
--sku
可以從下列可用的 SKU 中選擇:- Standard_E8s_v4
- Standard_E16s_v4
- Standard_E20s_v4
- Standard_E32s_v4
- 標準 DS13_v2
- 標準 DS14_v2
- Standard_D8s_v4
- Standard_D16s_v4
- Standard_D32s_v4
請注意,設定
--availability-zone
為false
。 若要開啟可用性區域,請將此設定為true
。 可用性區域會增加服務的可用性 SLA。 如需詳細資訊,請檢閱這裡的完整 SLA 詳細數據。警告
所有區域都不支援可用性區域。 如果您選取不支援可用性區域的區域,部署將會失敗。 如需支持的區域,請參閱 這裡 。 成功部署可用性區域也會受限於指定區域中所有區域的計算資源可用性。 如果您選取的 SKU 或容量無法跨所有區域使用,部署可能會失敗。
建立數據中心之後,如果您想要相應增加或相應減少數據中心中的節點,請執行 az managed-cassandra datacenter update 命令。 將 參數的值
node-count
變更為所需的值:resourceGroupName='<Resource_Group_Name>' clusterName='<Cluster Name>' dataCenterName='dc1' dataCenterLocation='eastus2' az managed-cassandra datacenter update \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterName \ --node-count 9
連線至您的叢集
適用於 Apache Cassandra 的 Azure 受控執行個體 不會建立具有公用 IP 位址的節點。 若要連線到新建立的 Cassandra 叢集,您必須在虛擬網路內建立另一個資源。 此資源可以是應用程式,或已安裝Apache開放原始碼查詢工具 CQLSH 的虛擬機。 您可以使用 Resource Manager 範本 來部署 Ubuntu 虛擬機。
從 CQLSH 連線
部署虛擬機之後,請使用 SSH 連線到電腦並安裝 CQLSH,如下列命令所示:
# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre
# Install the Cassandra libraries in order to get CQLSH:
echo "deb http://archive.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra
# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false
# Connect to CQLSH (replace <IP> with the private IP addresses of a node in your Datacenter):
host=("<IP>")
initial_admin_password="Password provided when creating the cluster"
cqlsh $host 9042 -u cassandra -p $initial_admin_password --ssl
從應用程式 連線
與 CQLSH 一樣,使用其中一個支援的 Apache Cassandra 用戶端驅動程式 從應用程式連線時,需要啟用 SSL 加密,並停用認證驗證。 請參閱使用 Java、.NET、Node.js 和 Python 連線至 Apache Cassandra 的 Azure 受控執行個體 範例。
建議您停用憑證驗證,因為除非您將叢集節點的 I.P 位址對應至適當的網域,否則憑證驗證將無法運作。 如果您有內部原則,其會強制對任何應用程式執行 SSL 憑證驗證,您可以在每個節點的主機檔案中新增類似 10.0.1.5 host1.managedcassandra.cosmos.azure.com
的專案,以協助進行這項操作。 如果採用此方法,則每當相應增加節點時,您也需要新增專案。
針對 Java,我們也強烈建議您啟用 推測性執行原則 ,讓應用程式對尾延遲敏感。 您可以在這裡找到說明其運作方式以及如何啟用原則的示範。
注意
在絕大多數情況下,不應該需要設定或安裝憑證(rootCA、節點或用戶端、信任存放區等),以連線到適用於Apache Cassandra的 Azure 受控執行個體。 您可以使用用戶端所使用的運行時間預設信任存放區和密碼來啟用 SSL 加密(請參閱 Java、.NET、Node.js 和 Python 範例),因為該環境會信任 Apache Cassandra 憑證的 Azure 受控執行個體。 在極少數情況下,如果憑證不受信任,您可能需要將其新增至信任存放區。
設定客戶端憑證 (選擇性)
設定客戶端憑證是選擇性的。 只要已採取上述步驟,用戶端應用程式就可以連線到適用於Apache Cassandra的 Azure 受控執行個體。 不過,如有偏好,您也可以另外建立及設定客戶端憑證以進行驗證。 一般而言,有兩種方式可以建立憑證:
- 自我簽署憑證。 這表示每個節點的私人和公用(無 CA) 憑證 - 在此情況下,我們需要所有公開憑證。
- 由 CA 簽署的憑證。 這可以是自我簽署的 CA,甚至是公用 CA。 在此情況下,我們需要根 CA 憑證(請參閱 準備生產環境 SSL 憑證 的指示),以及所有媒介(如果適用的話)。
如果您想要實作用戶端對節點憑證驗證或相互傳輸層安全性 (mTLS),您必須透過 Azure CLI 提供憑證。 下列命令會將客戶端憑證上傳並套用至 Cassandra 受控執行個體 叢集的信任存放區(也就是您不需要編輯cassandra.yaml
設定)。 套用之後,您的叢集將會要求 Cassandra 在用戶端連線時驗證憑證(請參閱 require_client_auth: true
Cassandra client_encryption_options)。
resourceGroupName='<Resource_Group_Name>'
clusterName='<Cluster Name>'
az managed-cassandra cluster update \
--resource-group $resourceGroupName \
--cluster-name $clusterName \
--client-certificates /usr/csuser/clouddrive/rootCert.pem /usr/csuser/clouddrive/intermediateCert.pem
疑難排解
如果您在使用 Azure CLI 將許可權套用至 虛擬網絡 時發生錯誤,例如在圖形資料庫中找不到 'e5007d2c-4b13-4a74-9b6a-605d99f03501' 的使用者或服務主體,您可以從 Azure 入口網站 手動套用相同的許可權。 請在這裡瞭解如何執行這項操作。
注意
Azure Cosmos DB 角色指派僅供部署之用。 適用於 Apache Cassandra 的 Azure 受控執行個體 在 Azure Cosmos DB 上沒有後端相依性。
清除資源
不再需要時,您可以使用 az group delete
命令來移除資源群組、受控實例和所有相關資源:
az group delete --name <Resource_Group_Name>
下一步
在本快速入門中,您已瞭解如何使用 Azure CLI 建立適用於 Apache Cassandra 叢集的 Azure 受控執行個體。 您現在可以開始使用叢集: