快速入門:使用Azure CLI建立 Apache Cassandra 叢集的Azure 受控執行個體

Azure 受控執行個體 for Apache Cassandra 是一個完全託管的服務,專為純開源的 Apache Cassandra 叢集服務。 服務也允許根據每個工作負載的特定需求來覆寫組態,以取得最大的彈性和控制。

這個快速入門示範如何使用 Azure CLI 指令建立包含 Apache Cassandra Azure 受控執行個體的叢集。 它也會示範如何建立數據中心,並在數據中心內調整節點的數量。

先決條件

  • 請使用 Azure Cloud Shell 的 Bash 環境。 欲了解更多資訊,請參見開始使用 Azure Cloud Shell

  • 如果你喜歡在本地執行 CLI 參考指令,install Azure CLI。 如果你是在 Windows 或 macOS 上運行,可以考慮在 Docker 容器中執行 Azure CLI。 更多資訊請參見 如何在 Docker 容器中執行Azure CLI

    • 如果你使用本地安裝,請使用 az login 指令登入 Azure CLI。 請遵循您終端機上顯示的步驟,以完成驗證流程。 如需其他登入選項,請參見使用 Azure CLI 驗證 Azure

    • 當系統提示時,首次使用時安裝 Azure CLI 擴充功能。 欲了解更多擴充功能的資訊,請參閱 使用 Azure CLI

    • 執行 az version (部分機器翻譯) 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade

重要事項

本文需要 Azure CLI 2.30.0 或更新版本。 如果你用的是 Azure Cloud Shell,最新版本已經安裝了。

建立受控執行個體叢集

  1. 登入 Azure 入口網站

  2. 在 Azure CLI 中設定你的訂閱 ID:

    az account set --subscription <Subscription_ID>
    
  3. 在資源群組中建立具有專用子網的虛擬網路:

    az network vnet create --name <VNet_Name> --location eastus2 \
      --resource-group <Resource_Group_Name> --subnet-name <Subnet Name>
    

    部署 Apache Cassandra 的 Azure 受控執行個體 實例需要網路連線。 在網際網路存取受限的環境中,部署失敗。 請確保你沒有在虛擬網路中阻擋以下Azure服務的存取,這些服務是 Apache Cassandra 正常運作所需的Azure 受控執行個體:

    • Azure 儲存體
    • Azure Key Vault
    • Azure 虛擬機器規模設定
    • Azure 監視器
    • Microsoft Entra ID
    • 適用於雲端的 Microsoft Defender
  4. 將這些特定許可權套用至虛擬網路。 受控執行個體需要這些項目。 使用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>
    

    assigneerole 值是固定值。 輸入這些值,與命令中所述完全相同。 不這樣做會導致在建立叢集時發生錯誤。 如果您在執行此命令時遇到任何錯誤,您可能沒有執行它的許可權。 請聯絡你的 Azure 管理員取得權限。

  5. 使用 az managed-cassandra cluster create 命令,在新建立的虛擬網路中建立叢集。 使用變數的值 delegatedManagementSubnetId 執行下列命令。 (delegatedManagementSubnetId 的值是套用許可權的相同虛擬網路名稱。)

    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='5.0' # 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
    
  6. 建立具有三個虛擬機(VM)的叢集用資料中心。 請使用下列組態︰

    • VM 大小:標準 E8s v5
    • 資料磁碟:每個已部署的 VM 均連接四個 P30 磁碟。 在規劃儲存空間時,請規劃最大持續使用率為 50%,以提供系統服務使用墓碑與磁碟的足夠空間。 此外,備份會暫時佔用本地磁碟空間,然後再持續保存到 Blob 儲存。

    所有資訊都就緒之後,請使用 az managed-cassandra datacenter create 命令:

    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
    

    請從下列可用的 VM 大小中選擇 --sku 的值。

    • Standard_E8s_v5
    • Standard_E16s_v5
    • Standard_E20s_v5
    • Standard_E32s_v5

    根據預設,--availability-zone 會設定為 false。 若要開啟可用性區域,請將它設定為 true。 可用性區域可協助增加服務的可用性。 欲了解更多資訊,請參閱在線服務的服務等級協議

    並非所有 Azure 區域都支援可用性區域。 如果您選取不支援可用性區域的區域,部署會失敗。 有關支援區域,請參見 Azure 區域列表

    可用性區域的成功部署受限於您所選取區域中所有區域中的計算資源可用性。 如果您在所選取區域中無法使用您選擇的 VM 大小,部署就會失敗。

  7. 建立數據中心之後,您可以執行 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 受控執行個體 Apache 的 Cassandra 不會建立擁有公開 IP 位址的節點。 若要連線到新的 Cassandra 叢集,您必須在相同的虛擬網路內建立另一個資源。 此資源可以是已安裝 Cassandra 查詢語言 Shell(CQLSH) 的應用程式或虛擬機器 (VM)。 CQLSH 是 Apache 開放原始碼查詢工具。

你可以用 Azure Resource Manager 模板來部署 Ubuntu 虛擬機。

由於 Python 版本存在一些已知問題,我們建議你使用 Ubuntu 22.04 映像檔,搭配 Python3.10.12 或 Python 虛擬環境來執行 CQLSH。

從 CQLSH 連線

部署 VM 之後,請使用安全殼層連線到電腦並安裝 CQLSH。 使用下列命令:

# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre

檢查 仍支援哪些 Cassandra 版本 ,並選取您需要的版本。 我們建議您使用穩定版本。

安裝 Cassandra 函式庫來取得 CQLSH。 請遵循 Cassandra 檔中的官方步驟。

從應用程式連線

如同 CQLSH,當您使用其中一個支援的 Apache Cassandra 用戶端驅動程式 從應用程式連線時,必須啟用傳輸層安全性/安全套接字層 (TLS/SSL) 加密,且必須停用憑證驗證。 關於樣本,請參見Java.NETNode.js 以及 Python

除非您將叢集節點的IP位址對應至適當的網域,否則建議您停用憑證驗證,因為它無法運作。 如果內部原則會強制您針對任何應用程式執行 TLS/SSL 憑證驗證,請在每個節點的主機檔案中新增 10.0.1.5 host1.managedcassandra.cosmos.azure.com 專案,以利進行此設定。 如果您採用這種方法,則每當擴大節點規模時,您也必須新增項目。

Java方面,我們建議在應用程式對尾端延遲敏感時啟用推測性執行策略。 若想觀看展示,了解此方法的運作方式及如何啟用該策略,請參見 Implement speculative execution policy

通常你不需要設定憑證(例如 rootCAnodeclienttruststore)來連接 Apache Cassandra 的 Azure 受控執行個體。 TLS/SSL 加密會使用預設信任存放區和客戶端選擇的運行時間密碼。 範例碼請參見Java.NETNode.js 以及 Python)。 憑證預設為受信任。 如果沒有,請將它們新增至信任存放區。

設定客戶端憑證 (選擇性)

設定客戶端憑證是選擇性的。 在依照上述步驟後,客戶端應用程式就可以連接到 Azure 托管的 Apache Cassandra 實例。 如果您想要的話,您也可以建立及設定客戶端憑證以進行驗證。 一般而言,有兩種方式可以建立憑證:

  • 自我簽署憑證:每個節點都使用無憑證授權單位 (CA) 簽發的私人和公用憑證。 在此情況下,需要所有公開憑證。
  • CA 簽署的憑證: 自我簽署 CA 或公用 CA 所簽發的憑證。 針對此設定,如有需要,您需要根 CA 憑證和所有中繼憑證。 如需詳細資訊,請參閱 準備生產環境的 SSL 憑證

若要實作用戶端對節點憑證驗證或互助傳輸層安全,請使用 Azure CLI 提供憑證。 以下指令會將您的客戶端憑證上傳並套用到 Apache Cassandra 叢集Azure 受控執行個體的信任儲存庫。 您不需要修改 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 對虛擬網路套用權限時遇到錯誤,你可以從 Azure 入口網站手動套用相同的權限。 此類錯誤的例子是「無法在圖資料庫中找到 e5007d2c-4b13-4a74-9b6a-605d99f03501 的使用者或服務主體。」欲了解更多資訊,請參見 使用 Azure 入口網站新增Azure Cosmos DB服務主體

Azure Cosmos DB 角色指派僅用於部署用途。 Azure Managed Instanced for Apache Cassandra 對 Azure Cosmos DB 冇後端依賴關係。

清除資源

當您不再需要資源時,請使用 az group delete 命令來移除資源群組、受控實例和所有相關資源:

az group delete --name <Resource_Group_Name>

後續步驟

在這個快速入門中,你學會了如何利用 Azure CLI 建立 Apache Cassandra 叢集的 Azure 受控執行個體。 您現在可以開始使用叢集: