Azure Managed Instance for Apache Cassandra 是純開放原始碼 Apache Cassandra 叢集的完全受控服務。 服務也允許根據每個工作負載的特定需求來覆寫組態,以取得最大的彈性和控制。
本快速入門示範如何使用 Azure 入口網站來建立 Azure Managed Instance for Apache Cassandra 叢集。
先決條件
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
建立受控執行個體叢集
登入 Azure 入口網站。
在搜尋列中, 搜尋Apache Cassandra的受控實例 ,然後選取結果。
選取 [建立 Apache Cassandra 叢集的受控實例]。
在 [ 建立 Apache Cassandra 受控實例 ] 窗格上,輸入下列資訊:
訂用帳戶:從下拉式清單中,選取您的 Azure 訂用帳戶。
資源群組:指定您要建立新的資源群組或使用現有的資源群組。 資源群組是存放 Azure 方案相關資源的容器。
叢集名稱:輸入叢集的名稱。
位置:選取要部署叢集的位置。
Cassandra 版本:選取要部署的 Apache Cassandra 版本。
擴充功能:選取要新增的延伸模組,包括 Cassandra Lucene Index。 這僅與 Cassandra v3.11 相關。
初始 Cassandra 系統管理員密碼:輸入用來建立叢集的密碼。
確認 Cassandra 系統管理員密碼:重新輸入您的密碼。
指派角色:虛擬網路需要特殊許可權,才能部署受控 Cassandra 叢集。 如果您建立新的虛擬網路或使用現有的虛擬網路而不套用許可權,請保留此方塊。 如果您使用先前部署 Azure SQL 受控實例 Cassandra 叢集的虛擬網路,請清除此選項。
如果您使用 虛擬專用網,則不需要開啟另一個連線。
部署適用於 Apache Cassandra 的 Azure 受控實例需要因特網存取。 在網際網路存取受限的環境中,部署失敗。 請確定您不會封鎖虛擬網路中對下列重要 Azure 服務進行存取,這是受控 Cassandra 正常運作所需的重要 Azure 服務。 如需詳細資訊,請參閱 必要的輸出網路規則。
Azure 儲存體
Azure Key Vault
Azure 虛擬機器擴展集
Azure 監視器
Microsoft Entra ID
適用於雲端的 Microsoft Defender
自動複製:選擇要使用的自動複製形式。 如需詳細資訊,請參閱周全複寫。
排程事件策略:叢集用於排程事件的策略。
秘訣
-
StopANY表示當節點有排程事件時停止該節點。 -
StopByRack表示僅為特定排程事件停止特定機架中的節點。 例如,如果同時為不同機架中的節點排程了數個事件,則只有一個機架中的節點會停止。 其他機架中的其他節點會延遲。
選擇 資料中心 索引標籤。
輸入下列資訊:
我們透過使用 L 系列 VM 產品層引入了直接寫入式快取 (公開預覽)。 此實作旨在將尾端延遲降到最低,並增強讀取效能,特別是針對大量讀取工作負載。 此特定產品層級配備了本地直接連接的硬碟,能有效提高讀取作業的 IOPS 並降低尾延遲。
提供直接寫入式快取,但不包含服務等級協定 (SLA)。 不建議將其用於生產工作負載。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
所有區域都不支援可用性區域。 如果您選取不支援可用性區域的區域,部署會失敗。 如需詳細資訊,請參閱 Azure 區域清單。
成功部署可用性區域也會受限於特定區域中所有區域的計算資源可用性。 如果您選取的產品層或容量無法跨所有區域使用,部署可能會失敗。
選取 [檢閱+建立]>[建立]。
建立叢集最多可能需要 15 分鐘的時間。
部署完成之後,請檢查您的資源群組,以查看新建立的受控實例叢集。
若要流覽叢集節點,請移至叢集資源,然後開啟 [資料中心] 窗格。
調整資料中心
使用單一數據中心部署叢集之後,您可以水平或垂直調整。 醒目提示資料中心,然後選取 [調整]。
水平調整
若要擴展或縮減節點數量,請將滑桿移至您想要的數量。 您也可以編輯值。 當您完成時,請選取調整。
垂直調整
若要相應增加或相應減少節點的產品層大小,請從 [SKU 大小 ] 下拉式清單中選取選項。 當您完成時,請選取調整。
調整作業所需的時間長度取決於各種因素。 作業可能需要幾分鐘的時間。 當 Azure 通知您調整作業完成時,並不表示所有節點都已加入 Cassandra 通道。 當所有節點顯示狀態為狀況良好且數據中心狀態顯示成功時,節點就完全部署。
調整是線上作業,其運作方式與修補作業中所述的方式相同。 如需詳細資訊,請參閱修補作業。
新增資料中心
若要新增另一個數據中心,請在 [數據中心] 窗格上,選取 [ 新增]。
如果您在不同的區域中新增數據中心,則必須選取不同的虛擬網路。 請確定此虛擬網路已連線到先前建立的主要區域虛擬網路。 此外,請確定裝載數據中心的任何其他虛擬網路都在受控實例叢集中。 如需詳細資訊,請參閱透過虛擬網路對等互連來連線虛擬網路。
在您嘗試部署受控實例叢集之前,請確定您已將適當的角色套用至虛擬網路。 使用下列 Azure CLI 命令:
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>填寫適當的欄位:
數據中心名稱:從下拉式清單中,選取您的 Azure 訂用帳戶。
可用性區域:如果您要在此資料中心啟用可用性區域,請選擇取 。
位置:部署數據中心的位置。
SKU 大小:從可用的 VM 產品層大小中選擇。
否。 磁碟數:選擇要連結至每個 Cassandra 節點的 p30 磁碟數目。
否。 節點數:選擇要部署至此資料中心的 Cassandra 節點數目。
虛擬網路:選取現有的虛擬網路和子網。
當您新增數據中心時,Azure 入口網站不允許建立新的虛擬網路。 您必須選擇現有的虛擬網路,而且您必須確保數據中心部署所在的目標子網之間有連線能力。 您也需要將適當的角色套用至虛擬網路以允許部署,如先前所述。
部署資料中心時,您應該能夠在 [資料中心 ] 窗格上檢視所有數據中心資訊。
若要確保數據中心之間的複寫,請連線到 Cassandra 查詢語言殼層 (CQLSH),並使用下列 CQL 查詢來更新每個 keyspace 中的複寫策略,以包含整個叢集的所有數據中心。 系統數據表會自動更新。
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc': 3, 'dc2': 3};如果您將數據中心新增至已經有數據的叢集,請執行
rebuild以復寫歷程記錄數據。 在 Azure CLI 中,使用下列命令,並在新資料中心的每個節點上執行nodetool rebuild。 此動作會將<new dc ip address>替換成節點的 IP 位址,並將<olddc>替換成您現有的資料中心名稱。az managed-cassandra cluster invoke-command \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --host <new dc ip address> \ --command-name nodetool --arguments rebuild="" "<olddc>"=""
在您套用keyspace複寫變更之前,請勿允許應用程式用戶端寫入新的資料中心。 否則,重建無法運作,而且您需要建立 支援要求 ,以便小組可以為您執行 repair 。
更新 Cassandra 設定
您可以使用 Azure 入口網站或 CLI 命令 來更新資料中心上的 Cassandra YAML 組態。 若要更新入口網站中的設定:
在 [設定] 底下,選取 [Cassandra 組態]。 選取您要變更設定的數據中心,然後選取 [更新]。
在開啟的視窗中,以 YAML 格式輸入功能變數名稱,如下所示。 然後選取 [更新]。
更新完成時,覆寫的值會出現在Cassandra 組態窗格中。
Azure 入口網站中只會顯示覆寫的 Cassandra 組態值。
請確定您提供的 Cassandra YAML 設定適合您部署的 Cassandra 版本。 如需詳細資訊,請參閱 [Cassandra v5.0] (https://github.com/apache/cassandra/blob/cassandra-5.0/conf/cassandra.yaml) 和 Cassandra v4.0 以取得 v4.0 和 Cassandra v3.11 以取得 Cassandra v3.11 設定。 您無法更新下列 YAML 設定:
cluster_nameseed_providerinitial_tokenautobootstrapclient_encryption_optionsserver_encryption_optionstransparent_data_encryption_optionsaudit_logging_optionsauthenticatorauthorizerrole_managerstorage_portssl_storage_portnative_transport_portnative_transport_port_ssllisten_addresslisten_interfacebroadcast_addresshints_directorydata_file_directoriescommitlog_directorycdc_raw_directorysaved_caches_directoryendpoint_snitchpartitionerrpc_addressrpc_interface
更新 Cassandra 版本
Cassandra 5.0 和 Turnkey 版本更新處於公開預覽狀態。 這些功能在沒有 SLA 的情況下提供。 不建議針對生產工作負載使用這些功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
您可以直接從入口網站或透過 Azure CLI、Terraform 或 Azure Resource Manager 範本進行就地主要版本升級。
在 [ 概觀] 索引標籤上,選取 [ 更新]。
從下拉式清單中選取 Cassandra 版本。
不要跳過任何版本。 我們建議您只將一個版本更新為另一個版本。 例如,將 3.11 更新為 4.0 或 4.0 更新為 4.1 或 4.1 更新為 5.0。
選取 [更新 ] 以儲存。
周全複寫
Cassandra 5.0 引進了部署多區域叢集的簡化方法,可提供增強的便利性和效率。 如果您使用一站式復寫功能,則更方便管理和設定多區域集群。 您可以在分散式環境中獲得更順暢的整合和作業。
此更新可減少與部署和維護多個區域設定相關聯的複雜度。 使用者可以使用 Cassandra 的功能,更輕鬆且有效率。
- 無:自動復寫 選項設定為 無。
-
系統 Keyspace:自動複寫所有系統 Keyspace (
system_auth、system_traces和system_auth)。 - 所有 Keyspace:自動複寫所有 Keyspace、監視是否建立了新的 Keyspace,然後自動套用自動複寫設定。
自動重複場景
當您新增數據中心時,Cassandra 中的自動復寫功能會順暢地執行 nodetool rebuild ,以確保跨新增的數據中心成功複寫數據。 移除資料中心會觸發從 Keyspace 自動移除特定資料中心。
對於外部資料中心 (例如內部部署裝載的資料中心),請使用外部資料中心屬性來將其包含在 Keyspace 中。 此方法可讓 Cassandra 將這些外部資料中心納入為重建程式的來源。
如果您將 自動複製 設定為 所有鍵空間,則鍵空間複製會更改為包含:
WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'on-prem-datacenter-1' : 3, 'mi-datacenter-1': 3 }
如果此拓撲結構不是您想要的,請使用 SystemKeyspaces 自行調整,然後在 Azure 上受管的 Apache Cassandra 叢集實例手動執行 nodetool rebuild 。
解除配置叢集
針對非生產環境,您可以暫停或解除分配叢集中的資源,以避免為其收費。 您仍需支付記憶體費用。 首先,將 [叢集類型 ] 變更為 NonProduction,然後選取 [ 解除分配]。
僅使用 NonProduction 叢集類型來節省開發成本。 此叢集類型可能隨附較小的產品層。 請勿 使用它來執行生產工作負載。
- 定義為 NonProduction 的叢集類型不會套用 SLA 保證。
- 請勿在解除配置期間執行任何結構描述或寫入作業。 此動作可能會導致數據遺失。 在罕見的情況下,您可能會遇到架構損毀,這需要支援小組的手動介入。
疑難排解
如果您在使用 Azure CLI 時將權限套用至虛擬網路時發生錯誤,您可以從 Azure 入口網站手動套用相同的許可權。 這類錯誤的範例是「在圖形資料庫中找不到用戶 e5007d2c-4b13-4a74-9b6a-605d99f03501或服務主體」。如需詳細資訊,請參閱 使用 Azure 入口網站來新增 Azure Cosmos DB 服務主體。
Azure Cosmos DB 角色指派僅供部署之用。 適用於 Apache Cassandra 的 Azure 受控實例在 Azure Cosmos DB 上沒有後端相依性。
連線至您的叢集
適用於 Apache Cassandra 的 Azure 受控實例不會建立具有公用 IP 位址的節點。 若要連線到新建立的 Cassandra 叢集,請在虛擬網路內建立另一個資源。 此資源可以是已安裝 Apache 開放原始碼查詢工具 CQLSH 的應用程式或 VM。 您可以使用 範本 來部署Ubuntu VM。
從 CQLSH 連線
部署 VM 之後,請使用 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 用戶端驅動程式 從應用程式連線時,必須啟用傳輸層安全性/安全套接字層 (TLS/SSL) 加密,且必須停用憑證驗證。 如需用來連線至適用於 Apache Cassandra 之 Azure 受控實例的範例,請參閱 Java、 .NET、 Node.js和 Python。
除非您將叢集節點的IP位址對應至適當的網域,否則建議您停用憑證驗證,因為它無法運作。 如果內部原則會強制您針對任何應用程式執行 TLS/SSL 憑證驗證,請在每個節點的主機檔案中新增 10.0.1.5 host1.managedcassandra.cosmos.azure.com 專案,以利進行此設定。 如果您採用這種方法,則每當擴大節點規模時,您也需要新增項目。
針對 Java,建議您啟用 推測性執行原則 ,讓應用程式對尾延遲敏感。 如需示範此方法的運作方式,以及瞭解如何啟用原則,請參閱 示範:實作推測性執行。
在大多數情況下,不需要設定或安裝憑證(例如 、 rootCA、 node或 client),即可連接到 Azure Apache Cassandra 受控實例。 若要啟用 TLS/SSL 加密,請使用用戶端所使用的運行時間預設信任存放區和密碼。 該環境信任 Azure Managed Instance for Apache Cassandra 憑證。 在極少數情況下,如果憑證不受信任,您可能需要將其新增至信任存放區。 如需範例程式代碼,請參閱 Java、 .NET、 Node.js和 Python。
設定客戶端憑證 (選擇性)
設定客戶端憑證是選擇性的。 如果上述步驟完成,用戶端應用程式可以連線到適用於 Apache Cassandra 的 Azure 受控實例。 如果您想要的話,您也可以建立及設定客戶端憑證以進行驗證。 一般而言,有兩種方式可以建立憑證:
- 自我簽署憑證:每個節點都使用無憑證授權單位 (CA) 簽發的私人和公用憑證。 在此情況下,您需要所有公開憑證。
- CA 簽署的憑證: 自我簽署 CA 或公用 CA 所簽發的憑證。 在此情況下,您需要根 CA 憑證和所有相關中間憑證(如適用)。 如需詳細資訊,請參閱 準備生產環境的 SSL 憑證。
如果您想要實作用戶端對節點憑證驗證或相互傳輸層安全性 (mTLS),請使用 Azure CLI 來提供憑證。 下列命令會上傳客戶端憑證,並將您的用戶端憑證套用至受控實例叢集的信任存放區。 您不需要編輯 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 入口網站的左側功能表上,選取 [資源群組]。
- 從清單中,選取您為此快速入門建立的資源群組。
- 在資源群組 [概觀] 窗格中,選取 [刪除資源群組]。
- 在下一個窗格中,輸入要刪除的資源群組名稱,然後選取 [ 刪除]。