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 pro maximální flexibilitu a kontrolu.
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.
- Tento článek vyžaduje Azure CLI verze 2.30.0 nebo novější. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
- Použijte virtuální síť Azure s připojením k vašemu vlastní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ě.
Vyberte kartu Podsítě a vytvořte novou podsíť. Další informace o polích ve formuláři Přidat podsíť najdete v tématu Přidání podsítě.
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í služby Azure Managed Instance for Apache Cassandra. Seznam závislostí IP adres a portů najdete v tématu Požadovaná pravidla odchozí sítě.
- Azure Storage
- Azure Key Vault
- Škálovací sady virtuálních strojů Azure
- Azure Monitor
- Microsoft Entra ID
- Microsoft Defender for Cloud
Použití některých speciálních oprávnění pro virtuální síť a podsíť, kterou azure Managed Instance for Apache Cassandra vyžaduje, pomocí Azure CLI. Použijte příkaz
az role assignment create.<resourceGroupName>Nahraďte<subscriptionID>, a<vnetName>odpovídající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>Hodnoty
assigneearolev předchozím příkazu jsou pevné servisní identifikátory a identifikátory rolí.Nakonfigurujte prostředky pro hybridní cluster. Protože už cluster máte, název clusteru je logický prostředek, který identifikuje název existujícího clusteru. Název existujícího clusteru použijte při definování
clusterNameaclusterNameOverrideproměnných v následujícím skriptu.Potřebujete také minimálně výchozí uzly z vašeho stávajícího datacentra a gossip certifikáty, které jsou nutné 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, musíte ho implementovat. 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 (Privacy Enhanced Mail), například
-----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE-----. Obecně platí, že existují dva způsoby implementace certifikátů:- Certifikáty podepsané svým držitelem Privátní a veřejné certifikáty bez certifikační autority (CA) pro každý uzel. V takovém případě potřebujete všechny veřejné certifikáty.
- Certifikáty podepsané certifikační autoritou Certifikáty vydané certifikační autoritou podepsané svým držitelem nebo veřejnou certifikační autoritou. V takovém případě potřebujete 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 (Secure Sockets Layer) pro produkční prostředí.
Pokud chcete implementovat ověřování certifikátu typu klient-uzel nebo vzájemné zabezpečení TLS (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 vaše klientské certifikáty do důvěryhodného úložiště pro klastr Azure Managed Instance pro Apache Cassandra. Nemusíte upravovat
cassandra.yamlnastavení. Po použití certifikátů vyžaduje cluster Cassandra k ověření certifikátů při připojení klienta. Další informace najdeterequire_client_auth: truev client_encryption_options Cassandra.Hodnota
delegatedManagementSubnetIdproměnné, 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_signedPokud 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 nebo certifikáty TLS/SSL. Pokud si nejste jistí, spusťte
keytool -list -keystore <keystore-path> -rfc -storepass <password>příkaz k vytištění 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ů.
Certifikáty vrácené z předchozího příkazu obsahují konce řádků, které jsou reprezentovány jako text. Příklad:
\r\n. Před pokusem o import do existujícího úložiště důvěryhodnosti zkopírujte každý certifikát do souboru a naformátujte ho.gossipCertificatesZkopírujte hodnotu pole zobrazenou na snímku obrazovky do souboru. K formátování certifikátů a vytvoření samostatných souborů PEM pro každý z nich použijte následující skript Bash. 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 doneDá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 falseVyberte hodnotu
--skuz následujících dostupných úrovní produktu:- 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-zoneje nastavena nafalse. Pokud chcete povolit zóny dostupnosti, nastavte tuto hodnotu natrue. Zóny dostupnosti zvyšují úroveň dohody o dostupnosti služeb (SLA). Další informace najdete v SLA pro online služby.Zóny dostupnosti nejsou podporované ve všech oblastech. Nasazení selžou, pokud vyberete oblast, ve které nejsou zóny dostupnosti podporované. 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 konkrétní oblasti. Nasazení můžou selhat, pokud vybraná úroveň produktu nebo kapacita není dostupná ve všech zónách.
Teď, když je nové datové centrum vytvořené, spusťte
datacenter showpříkaz 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 $dataCenterNamePř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 spravované instance gossip certifikáty, které jste shromáždili dříve do úložiště důvěryhodnosti pro každý uzel ve stávajícím clusteru.
keytoolPoužijte příkaz pro každý certifikát:keytool -importcert -keystore generic-server-truststore.jks -alias CassandraMI -file cert1.pem -noprompt -keypass myPass -storepass truststorePassPokud chcete přidat další datová centra, opakujte předchozí kroky, ale potřebujete jenom počáteční uzly.
Důležité
Pokud má váš stávající cluster Apache Cassandra pouze jedno datové centrum a toto datacentrum je první přidané, ujistěte se, že parametr
endpoint_snitchvcassandra.yamlje nastaven naGossipingPropertyFileSnitch.Pokud váš stávající kód aplikace používá
QUORUMpro konzistenci, ujistěte se, že před změnou nastavení replikace v dalším kroku váš stávající kód aplikace používáLOCAL_QUORUMk 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, pokud chcete, vrátit kQUORUM.Nakonec pomocí následujícího dotazu Dotazovacího jazyka Cassandra 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}Pokud datacentra ve vašem existujícím clusteru nevynucují šifrování SSL (client-to-node) a máte v úmyslu připojit se přímo ke službě Azure Managed Instance for Apache Cassandra, musíte v kódu aplikace povolit také protokol TLS/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 ukazuje, jak migrovat místní nebo jiné 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 falseV Azure CLI použijte následující příkaz ke spuštění
nodetool rebuildna každém uzlu v novém datacentru Azure Managed Instance for Apache Cassandra. Nahraďte<ip address>IP adresou uzlu. Nahraďte<sourcedc>názvem stávajícího datacentra, 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 spusťte 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 datacenter ve službě Azure Managed Instance for Apache Cassandra. Můžete běžet
rebuildna jednom nebo více uzlech současně. Spusťte na jednom uzlu najednou, abyste snížili vliv 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 paralelně spustit jenom jednu nebo dvě, abyste cluster nepřetížil.Upozorňující
Při spuštění
nodetool rebuildje nutné zadat zdrojdata center. Pokud při prvním pokusu nesprávně zadáte datacentrum, oblasti tokenů se zkopírují bez kopírování dat pro nesystémové tabulky. Následné pokusy selžou, i když datacentrum zadáte správně. Pokud chcete tento problém vyřešit, odstraňte položky pro každý nesystémový klíčový prostorsystem.available_rangespomocí nástroje pro dotazovánícqlshv cílovém datacentru Azure Managed Instance for Apache Cassandra.delete from system.available_ranges where keyspace_name = 'myKeyspace';Přesměrujte kód své aplikace, aby odkazoval na seed uzly v nových datových centrech Azure Managed Instance for Apache Cassandra.
Jak je uvedeno také v pokynech k hybridnímu nastavení, pokud datacentra ve vašem existujícím clusteru nevynucují šifrování ssl (client-to-node), povolte tuto funkci v kódu aplikace. Azure Managed Instance for Apache Cassandra vynucuje tento požadavek.
Spusťte
ALTER KEYSPACEpro každý prostor klíčů stejným způsobem jako dříve. Teď můžete odebrat stará datacentra.Spusťte příkaz node tool decommission pro každý starý uzel datacentra.
V případě potřeby přepněte kód aplikace zpátky na
QUORUM.Opětovné povolení automatických oprav:
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í pro virtuální síť 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 "Nelze najít uživatele nebo instanční objekt v grafové databázi pro e5007d2c-4b13-4a74-9b6a-605d99f03501." Další informace najdete v tématu Použití webu Azure Portal k přidání instančního objektu služby Azure Cosmos DB.
Přiřazení role Azure Cosmos DB se používá jenom pro účely nasazení. Spravovaná instance Azure pro Apache Cassandra nemá žádné back-endové závislosti 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 následujícím postupem:
- 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 podokně zadejte název skupiny prostředků, která se má odstranit, a pak vyberte Odstranit.