共用方式為


快速入門:使用 Azure CLI 建立 Apache Cassandra 叢集的 Azure 受控實例

Azure Managed Instance for Apache Cassandra 是純開放原始碼 Apache Cassandra 叢集的完全受控服務。 服務也允許根據每個工作負載的特定需求來覆寫組態,以取得最大的彈性和控制。

本快速入門示範如何使用 Azure CLI 命令來建立具有適用於 Apache Cassandra 的 Azure 受控實例的叢集。 它也會示範如何建立數據中心,並在數據中心內調整節點的數量。

先決條件

重要事項

本文需要 Azure CLI 2.30.0 版或更新版本。 若您使用的是 Azure Cloud Shell,即已安裝最新版本。

建立受控執行個體叢集

  1. 登入 Azure 入口網站

  2. 在 Azure CLI 中設定訂用帳戶識別碼:

    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 的 4 個 P30 磁碟

    所有資訊都就緒之後,請使用 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
    

連線至您的叢集

適用於 Apache Cassandra 的 Azure 受控實例不會建立具有公用 IP 位址的節點。 若要連線到新的 Cassandra 叢集,您必須在相同的虛擬網路內建立另一個資源。 此資源可以是已安裝 Cassandra 查詢語言 Shell(CQLSH) 的應用程式或虛擬機器 (VM)。 CQLSH 是 Apache 開放原始碼查詢工具。

您可以使用 Azure Resource Manager 範本 來部署 Ubuntu VM。

由於 Python 版本的一些 已知問題 ,我們建議您使用 Python3.10.12 或 Python 虛擬環境 隨附的 Ubuntu 22.04 映射來執行 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.jsPython

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

針對 Java,建議您啟用 推測性執行原則 ,讓應用程式對尾延遲敏感。 如需說明此方法運作方式及如何啟用原則的示範,請參閱 實作推測性執行原則

您通常不需要設定憑證(例如 rootCAnodeclienttruststore),以連線到適用於Apache Cassandra的 Azure 受控實例。 TLS/SSL 加密會使用預設信任存放區和客戶端選擇的運行時間密碼。 如需範例程式代碼,請參閱 Java.NETNode.jsPython)。 憑證預設為受信任。 如果沒有,請將它們新增至信任存放區。

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

設定客戶端憑證是選擇性的。 在您遵循上述步驟之後,用戶端應用程式可以連線到適用於Apache Cassandra的 Azure 受控實例。 如果您想要的話,您也可以建立及設定客戶端憑證以進行驗證。 一般而言,有兩種方式可以建立憑證:

  • 自我簽署憑證:每個節點都使用無憑證授權單位 (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 角色指派僅供部署之用。 適用於 Apache Cassandra 的 Azure 受控實例在 Azure Cosmos DB 上沒有後端相依性。

清除資源

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

az group delete --name <Resource_Group_Name>

後續步驟

在本快速入門中,您已瞭解如何使用 Azure CLI 建立適用於 Apache Cassandra 叢集的 Azure 受控實例。 您現在可以開始使用叢集: