快速入門:使用 Azure CLI 來建立 Azure Managed Instance for Apache Cassandra 叢集
Azure Managed Instance for Apache Cassandra 是純開放原始碼 Apache Cassandra 叢集的完全受控服務。 此服務也允許根據每個工作負載的特定需求來覆寫設定,允許視需要提供最大彈性和控制。
本快速入門示範如何使用 Azure CLI 命令來建立具有 Azure Managed Instance for Apache Cassandra 的叢集。 其也會顯示如何建立資料中心,以及在資料中心內擴大或縮小節點。
必要條件
在 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>
注意
部署 Azure Managed Instance for Apache Cassandra 需要網際網路存取。 在網際網路存取受限的環境中,部署失敗。 請確定您未封鎖 VNet 內對下列重要 Azure 服務的存取,而這些是受控 Cassandra 正常運作所需的 Azure 服務:
- Azure 儲存體
- Azure KeyVault
- Azure 虛擬機器擴展集
- Azure 監視
- Microsoft Entra ID
- Azure 安全性
將某些特殊權限套用至受控執行個體所需的虛擬網路。 使用
az role assignment create
命令,並將<subscriptionID>
、<resourceGroupName>
和<vnetName>
取代為適當的值: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 命令,為擁有三個節點的叢集建立資料中心 Standard 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
連線至您的叢集
Azure Managed Instance for Apache Cassandra 不會建立具有公用 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 連線至 Azure Managed Instance for Apache Cassandra 的範例。
建議停用憑證驗證,因為除非您將叢集節點的 IP 位址對應至適當的網域,否則憑證驗證將不會運作。 如有內部原則可強制您對任何應用程式執行 SSL 憑證驗證,則可以在每個節點的主機檔案中新增 10.0.1.5 host1.managedcassandra.cosmos.azure.com
這類項目,以協助進行這項作業。 如果採用此方式,則只要擴大節點,您也需要新增項目。
對於 Java,我們也強烈建議在應用程式對尾延遲敏感的情況下啟用推測執行原則。 您可以在這裡找到說明其運作方式以及如何啟用原則的示範。
注意
在絕大多數情況下,應該「不需要」設定或安裝憑證 (rootCA、節點或用戶端、信任存放區等) 以連線至 Azure Managed Instance for Apache Cassandra。 您可以使用用戶端所使用執行時間的預設信任存放區和密碼來啟用 SSL 加密 (請參閱 Java、.NET、Node.js 和 Python 範例),因為該環境將會信任 Azure Managed Instance for Apache Cassandra 憑證。 在極少數情況下,如果憑證不受信任,則您可能需要將其新增至信任存放區。
設定用戶端憑證 (選用)
設定用戶端憑證是「選用」作業。 只要已採取上述步驟,用戶端應用程式就可以連線至 Azure Managed Instance for Apache Cassandra。 不過,您也可視需要另行建立並設定用戶端憑證以進行驗證。 一般而言,有兩種方式可以建立憑證:
- 自我簽署憑證。 這表示每個節點的私密和公開 (無 CA) 憑證:在此情況下,我們需要所有公開憑證。
- 由 CA 簽署的憑證。 這可以是自我簽署 CA,甚至是公開 CA。 在此情況下,我們需要根 CA 憑證 (請參閱準備生產環境 SSL 憑證的指示),以及所有媒介 (如適用)。
若要實作用戶端對節點憑證驗證或相互傳輸層安全性 (mTLS),則需要透過 Azure CLI 來提供憑證。 下列命令會將用戶端憑證上傳並套用至 Cassandra 受控執行個體叢集的信任存放區 (也就是您不需要編輯 cassandra.yaml
設定)。 套用之後,您的叢集將會要求 Cassandra 在用戶端連線時驗證憑證 (請參閱 Cassandra client_encryption_options 中的 require_client_auth: true
)。
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 角色指派僅供部署之用。 Azure Managed Instanced for Apache Cassandra 沒有與 Azure Cosmos DB 的後端相依性。
清除資源
不再需要時,您可以使用 az group delete
命令來移除資源群組、受控執行個體和所有相關資源:
az group delete --name <Resource_Group_Name>
下一步
在本快速入門中,您已了解如何使用 Azure CLI 來建立 Azure Managed Instance for Apache Cassandra 叢集。 您現在可以開始使用叢集: