快速入門:使用適用於Apache Cassandra的 Azure 受控執行個體 建立多區域叢集

適用於 Apache Cassandra 的 Azure 受控執行個體 是純開放原始碼 Apache Cassandra 叢集的完整受控服務。 此服務也允許根據每個工作負載的特定需求來覆寫組態,允許視需要的最大彈性和控制。

本快速入門示範如何使用 Azure CLI 命令在 Azure 中設定多區域叢集。

必要條件

  • 本文需要 Azure CLI 2.30.0 版或更高版本。 如果您使用 Azure Cloud Shell,則已安裝最新版本。

  • Azure 虛擬網絡 與自我裝載或內部部署環境的連線能力。 如需將內部部署環境連線至 Azure 的詳細資訊,請參閱將內部部署網路 連線 至 Azure 一文。

設定網路環境

由於使用此服務布建的所有數據中心都必須使用 VNet 插入部署到專用子網,因此在部署之前設定適當的網路對等互連。 在本快速入門中,在個別區域中建立具有兩個數據中心的叢集:美國東部和美國東部 2。 首先,為每個區域建立虛擬網路。

  1. 登入 Azure 入口網站

  2. 建立名為 cassandra-mi-multi-region 的資源群組:

    az group create --location eastus2 --name cassandra-mi-multi-region
    
  3. 在美國東部 2 中建立第一個具有專用子網的 VNet:

    az network vnet create \
      --name vnetEastUs2 \
      --location eastus2 \
      --resource-group cassandra-mi-multi-region \
      --address-prefix 10.0.0.0/16 \
      --subnet-name dedicated-subnet
    
  4. 在美國東部建立第二個 VNet,同時具有專用子網:

     az network vnet create \
       --name vnetEastUs \
       --location eastus \
       --resource-group cassandra-mi-multi-region \
       --address-prefix 192.168.0.0/16 \
       --subnet-name dedicated-subnet
    

    注意

    我們會明確新增不同的IP位址範圍,以確保對等互連時不會發生任何錯誤。

  5. 將第一個 VNet 對等互連至第二個 VNet:

    az network vnet peering create \
      --resource-group cassandra-mi-multi-region \
      --name MyVnet1ToMyVnet2 \
      --vnet-name vnetEastUs2 \
      --remote-vnet vnetEastUs \
      --allow-vnet-access \
      --allow-forwarded-traffic
    
  6. 若要連線兩個 VNet,請在第二個 VNet 與第一個 VNet 之間建立另一個對等互連:

    az network vnet peering create \
      --resource-group cassandra-mi-multi-region \
      --name MyVnet2ToMyVnet1 \
      --vnet-name vnetEastUs \
      --remote-vnet vnetEastUs2 \
      --allow-vnet-access \
      --allow-forwarded-traffic
    

    注意

    如果您新增更多區域,每個 VNet 都需要從它對等互連到所有其他 VNet,以及從所有其他 VNet 對它進行對等互連。

  7. 檢查上一個命令的輸出。 請確定 「peeringState」 的值現在是 「連線 ed」。 您也可以執行下列命令來檢查此結果:

    az network vnet peering show \
      --name MyVnet1ToMyVnet2 \
      --resource-group cassandra-mi-multi-region \
      --vnet-name vnetEastUs2 \
      --query peeringState
    
  8. 將某些特殊許可權套用至這兩個 虛擬網絡。 適用於 Apache Cassandra 的 Azure 受控執行個體 需要這些許可權。 執行下列命令。 <SubscriptionID>取代為您的訂用帳戶識別碼:

    az role assignment create \
      --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \
      --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \
      --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2
    
    az role assignment create     \
      --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \
      --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \
      --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs
    

    注意

    assignee 一個命令中的和 role 值是固定值。 在命令中輸入這些值完全和一樣。

如果您在執行 az role assignment create時遇到錯誤,您可能沒有執行它的許可權。 請洽詢您的系統管理員以取得許可權。

建立多區域叢集

  1. 部署叢集資源。 將取代 <Subscription ID> 為您的訂用帳戶標識碼。 部署可能需要 5 到 10 分鐘:

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    location='eastus2'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet'
    initialCassandraAdminPassword='myPassword'
    
     az managed-cassandra cluster create \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName \
       --location $location \
       --delegated-management-subnet-id $delegatedManagementSubnetId \
       --initial-cassandra-admin-password $initialCassandraAdminPassword \
       --debug
    
  2. 建立叢集資源之後,您就可以建立數據中心。 首先,在美國東部 2 建立數據中心。 將取代 <SubscriptionID> 為您的訂用帳戶標識碼。 此動作最多可能需要 10 分鐘:

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    dataCenterName='dc-eastus2'
    dataCenterLocation='eastus2'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet'
    
     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
    
  3. 在美國東部建立數據中心。 將取代 <SubscriptionID> 為您的訂用帳戶標識碼。

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    dataCenterName='dc-eastus'
    dataCenterLocation='eastus'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs/subnets/dedicated-subnet'
    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-zonefalse。 若要開啟可用性區域,請將此設定為 true。 可用性區域會增加服務的可用性 SLA。 如需詳細資訊,請參閱適用於 Apache Cassandra 的 Azure 受控執行個體 SLA。

    警告

    所有區域都不支援可用性區域。 如果您選取不支援可用性區域的區域,部署會失敗。 如需支持的區域,請參閱 具有可用性區域的 Azure 區域

    成功部署可用性區域也會受限於指定區域中所有區域的計算資源可用性。 如果您選取的 SKU 或容量無法跨所有區域使用,部署可能會失敗。

  4. 建立第二個數據中心之後,取得節點狀態,以確認所有 Cassandra 節點都已成功啟動:

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    
    az managed-cassandra cluster node-status \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName
    
  5. 然後使用 CQLSH 連線到您的叢集 ,並使用下列 CQL 查詢來更新每個 keyspace 中的複寫策略,以包含整個叢集的所有資料中心(系統數據表會自動更新):

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
    
  6. 最後,如果您要將資料中心新增至已經有數據的叢集,則必須執行 rebuild ,才能復寫歷程記錄數據。 在此情況下,我們將假設 dc-eastus2 數據中心已經有數據。 在 Azure CLI 中,執行下列命令以在新資料中心的每個節點上dc-eastus執行nodetool rebuild,並將 取代<ip address>為節點的 IP 位址:

    az managed-cassandra cluster invoke-command \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --host <ip address> \
      --command-name nodetool --arguments rebuild="" "dc-eastus2"=""
    

    警告

    在套用keyspace複寫變更之前,您不應該允許應用程式用戶端寫入新的資料中心。 否則,重建將無法運作,而且您必須建立 支援要求 ,以便我們的小組代表您執行 repair

疑難排解

如果您在使用 Azure CLI 將權限套用至 虛擬網絡 時發生錯誤,您可以從 Azure 入口網站 手動套用相同的許可權。 例如, 在圖形資料庫中找不到 'e5007d2c-4b13-4a74-9b6a-605d99f03501' 的使用者或服務主體。 如需詳細資訊,請參閱使用 Azure 入口網站 來新增 Azure Cosmos DB 服務主體

注意

Azure Cosmos DB 角色指派僅供部署之用。 適用於 Apache Cassandra 的 Azure 受控執行個體 在 Azure Cosmos DB 上沒有後端相依性。

清除資源

如果您不打算繼續使用這個受控實例叢集,請使用下列步驟加以刪除:

  1. 從 Azure 入口網站 左側功能表中,選取 [資源群組]。
  2. 從清單中,選取您為此快速入門建立的資源群組。
  3. 在 [資源群組 概觀 ] 窗格中,選取 [ 刪除資源群組]。
  4. 在下一個視窗中,輸入要刪除的資源群組名稱,然後選取 [ 刪除]。

下一步

在本快速入門中,您已瞭解如何使用 Azure CLI 和 Azure 受控執行個體 for Apache Cassandra 建立多區域叢集。 您現在可以開始使用叢集。