Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Managed Instance for Apache Cassandra je plně spravovaná služba pro čistě opensourcové clustery Apache Cassandra. Služba také umožňuje přepsání konfigurací v závislosti na konkrétních potřebách jednotlivých úloh, což umožňuje maximální flexibilitu a kontrolu v případě potřeby.
Tento rychlý start ukazuje, jak pomocí příkazů Azure CLI nakonfigurovat hybridní cluster. Pokud máte existující datacentra v lokálním nebo vlastním prostředí, můžete pomocí služby Azure Managed Instance for Apache Cassandra přidat do těchto clusterů další datacentra a spravovat je.
Požadavky
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Začínáme s Azure Cloud Shellem.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Ověřování v Azure pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Použití a správa rozšíření pomocí Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
Azure CLI verze 2.30.0 nebo vyšší Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
Azure Virtual Network s připojením k místnímu nebo místnímu prostředí. Další informace o připojení místních prostředí k Azure najdete v tématu Připojení místní sítě k Azure.
Konfigurace hybridního clusteru
Přihlaste se k webu Azure Portal a přejděte k prostředku virtuální sítě.
Otevřete kartu Podsítě a vytvořte novou podsíť. Další informace o polích ve formuláři Přidané podsítě najdete v tématu Přidání podsítě.
Poznámka:
Nasazení služby Azure Managed Instance for Apache Cassandra vyžaduje přístup k internetu. Nasazení selže v prostředích, kde je omezený přístup k internetu. Ujistěte se, že ve vaší virtuální síti neblokujete přístup k následujícím důležitým službám Azure, které jsou nezbytné pro správné fungování spravované Cassandry. Seznam závislostí IP adres a portů najdete v tématu Požadovaná pravidla odchozí sítě.
- Azure Storage
- Azure KeyVault
- Škálovací sady virtuálních strojů Azure
- Monitorování Azure
- Microsoft Entra ID
- Zabezpečení Azure
Pomocí Azure CLI použijte speciální oprávnění pro virtuální síť a podsíť, které vyžaduje spravovaná instance Cassandra.
az role assignment create
Použijte příkaz, nahraďte<subscriptionID>
<resourceGroupName>
<vnetName>
a nahraďte příslušnými hodnotami: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>
Poznámka:
Hodnoty
assignee
arole
v předchozím příkazu jsou pevné identifikátory hlavní služby a rolí.Nakonfigurujte prostředky pro náš hybridní cluster. Vzhledem k tomu, že už cluster máte, je název clusteru logickým prostředkem, který identifikuje název existujícího clusteru. Při definování
clusterName
aclusterNameOverride
proměnných v následujícím skriptu nezapomeňte použít název existujícího clusteru.Potřebujete také minimálně počáteční uzly z vašeho stávajícího datacentra a certifikáty gossip vyžadované pro šifrování mezi uzly. Azure Managed Instance for Apache Cassandra vyžaduje šifrování mezi uzly a uzly pro komunikaci mezi datovými centry. Pokud ve stávajícím clusteru nemáte implementované šifrování node-to-node, implementujte ho. Další informace najdete v tématu Šifrování node-to-node. Zadejte cestu k umístění certifikátů. Každý certifikát by měl být ve formátu PEM,
-----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE-----
například . Obecně platí, že existují dva způsoby implementace certifikátů:Certifikáty podepsané svým držitelem Privátní a veřejný certifikát (bez certifikační autority) pro každý uzel. V takovém případě potřebujete všechny veřejné certifikáty.
Certifikáty podepsané certifikační autoritou Tento certifikát může být certifikační autorita podepsaná svým držitelem nebo dokonce veřejná. V tomto případě potřebujeme kořenový certifikát certifikační autority a všechny zprostředkovatele, pokud je to možné. Další informace naleznete v tématu Příprava certifikátů SSL pro produkční prostředí.
Pokud chcete také implementovat ověřování certifikátů typu klient-uzel nebo vzájemné zabezpečení mTLS (Transport Layer Security), zadejte certifikáty ve stejném formátu jako při vytváření hybridního clusteru. Podívejte se na ukázku Azure CLI dále v tomto článku. Certifikáty jsou k dispozici v parametru
--client-certificates
.Tento přístup nahraje a aplikuje klientské certifikáty do úložiště důvěryhodných certifikátů pro vaši spravovanou instanci klastru Cassandra. To znamená, že nemusíte upravovat nastavení cassandra.yaml . Jakmile se použije, klastr vyžaduje, aby Cassandra ověřila certifikáty při připojení klienta. Viz
require_client_auth: true
v klientských možnostech šifrování v Cassandra.Poznámka:
Hodnota proměnné,
delegatedManagementSubnetId
kterou zadáte v tomto kódu, je stejná jako hodnota--scope
, kterou jste zadali v předchozím příkazu:resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster-legal-name' clusterNameOverride='cassandra-hybrid-cluster-illegal-name' location='eastus2' delegatedManagementSubnetId='/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>' # You can override the cluster name if the original name isn't legal for an Azure resource: # overrideClusterName='ClusterNameIllegalForAzureResource' # the default cassandra version will be v3.11 az managed-cassandra cluster create \ --cluster-name $clusterName \ --resource-group $resourceGroupName \ --location $location \ --delegated-management-subnet-id $delegatedManagementSubnetId \ --external-seed-nodes 10.52.221.2 10.52.221.3 10.52.221.4 \ --external-gossip-certificates /usr/csuser/clouddrive/rootCa.pem /usr/csuser/clouddrive/gossipKeyStore.crt_signed # optional - add your existing datacenter's client-to-node certificates (if implemented): # --client-certificates /usr/csuser/clouddrive/rootCa.pem /usr/csuser/clouddrive/nodeKeyStore.crt_signed
Poznámka:
Pokud už váš cluster obsahuje šifrování node-to-node a client-to-node, měli byste vědět, kde se uchovávají stávající klient a/nebo gossip certifikáty SSL. Pokud si nejste jistí, spusťte
keytool -list -keystore <keystore-path> -rfc -storepass <password>
tisk certifikátů.Po vytvoření prostředku clusteru spusťte následující příkaz a získejte podrobnosti o nastavení clusteru:
resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' az managed-cassandra cluster show \ --cluster-name $clusterName \ --resource-group $resourceGroupName \
Předchozí příkaz vrátí informace o prostředí spravované instance. Certifikáty gossip potřebujete, abyste je mohli nainstalovat do úložiště důvěryhodnosti pro uzly ve stávajícím datacentru. Následující snímek obrazovky ukazuje výstup předchozího příkazu a formát certifikátů:
Poznámka:
Certifikáty vrácené z předchozího příkazu obsahují konce řádků reprezentované jako text, například
\r\n
. Před pokusem o import do stávajícího úložiště důvěryhodnosti byste měli každý certifikát zkopírovat do souboru a naformátovat ho.Návod
gossipCertificates
Zkopírujte hodnotu pole zobrazenou na snímku obrazovky do souboru a pomocí následujícího skriptu Bash naformátujte certifikáty a vytvořte pro každou z nich samostatné soubory pem. Pokud si chcete stáhnout skript Bash, přečtěte si téma Stažení jq pro vaši platformu.readarray -t cert_array < <(jq -c '.[]' gossipCertificates.txt) # iterate through the certs array, format each cert, write to a numbered file. num=0 filename="" for item in "${cert_array[@]}"; do let num=num+1 filename="cert$num.pem" cert=$(jq '.pem' <<< $item) echo -e $cert >> $filename sed -e 's/^"//' -e 's/"$//' -i $filename done
Dále vytvořte nové datové centrum v hybridním clusteru. Nahraďte hodnoty proměnných podrobnostmi o clusteru:
resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' 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 9 --sku $virtualMachineSKU \ --disk-capacity $noOfDisksPerNode \ --availability-zone false
Poznámka:
Hodnotu lze
--sku
vybrat z následujících dostupných skladových položek:- Standard_E8s_v4
- Standard_E16s_v4
- Standard_E20s_v4
- Standard_E32s_v4
- Standard_DS13_v2
- Standard_DS14_v2
- Standard_D8s_v4
- Standard_D16s_v4
- Standard_D32s_v4
Hodnota
--availability-zone
je nastavena nafalse
. Pokud chcete povolit zóny dostupnosti, nastavte tuto hodnotu natrue
. Zóny dostupnosti zvyšují smlouvu SLA o dostupnosti služby. Další informace najdete v tématu SLA pro online služby.Upozorňující
Zóny dostupnosti nejsou podporované ve všech oblastech. Pokud vyberete oblast, ve které nejsou zóny dostupnosti podporované, nasazení se nezdaří. Podporované oblasti najdete v seznamu oblastí Azure.
Úspěšné nasazení zón dostupnosti podléhá také dostupnosti výpočetních prostředků ve všech zónách v dané oblasti. Nasazení může selhat, pokud vybraná skladová položka nebo kapacita není dostupná ve všech zónách.
Teď, když je nové datové centrum vytvořené, spusťte příkaz show datacenter a zobrazte jeho podrobnosti:
resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' dataCenterName='dc1' az managed-cassandra datacenter show \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterName
Předchozí příkaz zobrazí počáteční uzly nového datacentra:
Přidejte počáteční uzly nového datacentra do konfigurace počátečního uzlu stávajícího datacentra do souboru cassandra.yaml . Nainstalujte certifikáty gossip pro spravované instance, které jste dříve shromáždili, do úložiště důvěryhodnosti pro každý uzel ve vašem stávajícím clusteru, pomocí příkazu
keytool
pro každý certifikát.keytool -importcert -keystore generic-server-truststore.jks -alias CassandraMI -file cert1.pem -noprompt -keypass myPass -storepass truststorePass
Poznámka:
Pokud chcete přidat další datová centra, můžete zopakovat předchozí kroky, ale potřebujete jenom počáteční uzly.
Důležité
Pokud váš existující cluster Apache Cassandra má pouze jedno datové centrum a toto datové centrum je první, které přidáváte, ujistěte se, že parametr
endpoint_snitch
vcassandra.yaml
je nastaven na hodnotuGossipingPropertyFileSnitch
.Důležité
Pokud váš stávající kód aplikace používá k zajištění konzistence kvorum, ujistěte se, že před změnou nastavení replikace v dalším kroku se stávající kód aplikace používá LOCAL_QUORUM pro připojení k existujícímu clusteru. Jinak živé aktualizace selžou po změně nastavení replikace v následujícím kroku. Po změně strategie replikace se můžete vrátit k KVORU, pokud je to preferované.
Nakonec pomocí následujícího dotazu CQL aktualizujte strategii replikace v jednotlivých prostorech klíčů tak, aby zahrnovala všechna datová centra v clusteru:
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3};
Musíte také aktualizovat několik systémových tabulek:
ALTER KEYSPACE "system_auth" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3} ALTER KEYSPACE "system_distributed" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3} ALTER KEYSPACE "system_traces" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3}
Důležité
Pokud datová centra ve vašem existujícím clusteru nevynucují šifrování typu klient-uzel (SSL) a máte v úmyslu připojit se přímo ke spravované instanci Cassandra, musíte v kódu aplikace povolit také SSL.
Použití hybridního clusteru k migraci v reálném čase
Předchozí pokyny obsahují pokyny ke konfiguraci hybridního clusteru. Tento přístup je také skvělým způsobem, jak dosáhnout bezproblémové migrace bez výpadků. Následující postup spočívá v migraci místního nebo jiného prostředí Cassandra, které chcete vyřadit z provozu s nulovým výpadkem, do služby Azure Managed Instance for Apache Cassandra.
Konfigurace hybridního clusteru Postupujte podle předchozích pokynů.
Během migrace dočasně zakažte automatické opravy ve službě Azure Managed Instance for Apache Cassandra:
az managed-cassandra cluster update \ --resource-group $resourceGroupName \ --cluster-name $clusterName --repair-enabled false
V Azure CLI použijte následující příkaz ke spuštění
nodetool rebuild
na každém uzlu v novém datovém centru Azure Managed Instance for Apache Cassandra, nahrazením<ip address>
IP adresou uzlu a<sourcedc>
názvem vašeho stávajícího datového centra, ze kterého migrujete:az managed-cassandra cluster invoke-command \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --host <ip address> \ --command-name nodetool --arguments rebuild="" "<sourcedc>"=""
Tento příkaz byste měli spustit až po provedení všech předchozích kroků. Tento přístup by měl zajistit, aby se všechna historická data replikovala do nových datových center ve službě Azure Managed Instance for Apache Cassandra. Opětovné sestavení můžete spustit na jednom nebo více uzlech současně. Spusťte na jednom uzlu současně, abyste snížili dopad na existující cluster. Spusťte na více uzlech, když cluster dokáže zpracovat dodatečný vstupně-výstupní a síťový tlak. U většiny instalací můžete spustit pouze jeden nebo dva paralelně, aby cluster nepřetěžel.
Upozorňující
Při spuštění
nodetool rebuild
je nutné zadat zdrojové datové centrum. Pokud při prvním pokusu zadáte datové centrum nesprávně, dojde k zkopírování rozsahů tokenů bez kopírování dat pro nesystémové tabulky. Následné pokusy selžou i v případě, že datové centrum zadáte správně. Tento problém můžete vyřešit odstraněním položek pro každý nesystémový prostor klíčů vesystem.available_ranges
pomocí nástroje pro dotazovánícqlsh
ve vašem cílovém datovém centru Cassandra MI.delete from system.available_ranges where keyspace_name = 'myKeyspace';
Převeďte kód aplikace tak, aby odkazoval na počáteční uzly ve vašich nových datových centrech Azure Managed Instance for Apache Cassandra.
Důležité
Jak je uvedeno také v pokynech k hybridnímu nastavení, pokud datová centra ve vašem existujícím clusteru nevynucují šifrování typu klient-uzel (SSL), povolte tuto funkci v kódu aplikace, protože spravovaná instance Cassandra tento požadavek vynucuje.
Spusťte ALTER KEYSPACE pro každý klíčový prostor stejným způsobem jako dříve, ale nyní odstraňte stará datová centra.
Spusťte nástroj node decommission pro každý starý uzel datového centra.
Pokud je to nutné nebo preferované, přepněte kód své aplikace zpět na kvorum.
Znovu povolte automatické opravy:
az managed-cassandra cluster update \ --resource-group $resourceGroupName \ --cluster-name $clusterName --repair-enabled true
Řešení problému
Pokud při použití oprávnění k virtuální síti pomocí Azure CLI dojde k chybě, můžete stejné oprávnění použít ručně z webu Azure Portal. Příkladem takové chyby je nenaleznutí uživatele nebo instančního objektu v grafové databázi e5007d2c-4b13-4a74-9b6a-605d99f03501. Další informace najdete v tématu Použití portálu Azure k přidání hlavního objektu služby Azure Cosmos DB.
Poznámka:
Přiřazení role Azure Cosmos DB se používá jenom pro účely nasazení. Spravovaná instance Azure pro Apache Cassandra nemá žádné závislosti back-endu ve službě Azure Cosmos DB.
Vyčištění prostředků
Pokud nebudete dál používat tento cluster spravovaných instancí, odstraňte ho pomocí následujících kroků:
- V levé nabídce webu Azure Portal vyberte skupiny prostředků.
- V seznamu vyberte skupinu prostředků, kterou jste vytvořili pro účely tohoto rychlého startu.
- V podokně Přehled skupiny prostředků vyberte Odstranit skupinu prostředků.
- V dalším okně zadejte název skupiny prostředků, která se má odstranit, a pak vyberte Odstranit.