Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure Managed Instance voor Apache Cassandra is een volledig beheerde service voor pure opensource Apache Cassandra-clusters. Met de service kunnen configuraties ook worden overschreven, afhankelijk van de specifieke behoeften van elke workload, voor maximale flexibiliteit en controle.
In deze quickstart ziet u hoe u de Azure CLI-opdrachten gebruikt om een hybride cluster te configureren. Als u bestaande datacenters in een on-premises of zelf-hostende omgeving hebt, kunt u Azure Managed Instance voor Apache Cassandra gebruiken om andere datacenters toe te voegen aan deze clusters en deze te onderhouden.
Vereisten
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Zie Extensies gebruiken en beheren met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- Voor dit artikel is Azure CLI versie 2.30.0 of hoger vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.
- Gebruik een virtueel Azure-netwerk met connectiviteit met uw zelf-hostende of on-premises omgeving. Zie Een on-premises netwerk verbinden met Azure voor meer informatie over het verbinden van on-premises omgevingen met Azure.
Een hybride cluster configureren
Meld u aan bij Azure Portal en ga naar uw virtuele netwerkresource.
Selecteer het tabblad Subnetten en maak een nieuw subnet. Zie Een subnet toevoegen voor meer informatie over de velden in het formulier Subnet toevoegen.
Voor de implementatie van Azure Managed Instance voor Apache Cassandra is internettoegang vereist. Implementatie mislukt in omgevingen waarin internettoegang is beperkt. Zorg ervoor dat u de toegang in uw virtuele netwerk niet blokkeert tot de volgende essentiële Azure-services die nodig zijn om Azure Managed Instance voor Apache Cassandra goed te laten werken. Zie Vereiste uitgaande netwerkregels voor een lijst met IP-adres- en poortafhankelijkheden.
- Azure Storage
- Azure Key Vault
- Microsoft Azure Virtual Machine Scale Sets
- Azure Monitor
- Microsoft Entra ID
- Microsoft Defender for Cloud
Pas enkele speciale machtigingen toe op het virtuele netwerk en subnet, waarvoor Azure Managed Instance voor Apache Cassandra is vereist, met behulp van de Azure CLI. Gebruik de opdracht
az role assignment create. Vervang<subscriptionID>,<resourceGroupName>en<vnetName>door de juiste waarden.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>De waarden
assigneeenrolein de vorige opdracht zijn respectievelijk vaste service-principal en rol-id's.Configureer resources voor uw hybride cluster. Omdat u al een cluster hebt, is de clusternaam een logische resource om de naam van uw bestaande cluster te identificeren. Gebruik de naam van uw bestaande cluster wanneer u definieert
clusterNameenclusterNameOverridevariabelen in het volgende script.U hebt ook minimaal de seed-knooppunten van uw bestaande datacenter nodig, evenals de gossip-certificaten die vereist zijn voor versleuteling tussen knooppunten. Azure Managed Instance voor Apache Cassandra vereist knooppunt-naar-knooppuntversleuteling voor communicatie tussen datacenters. Als u geen knooppunt-naar-knooppuntversleuteling hebt geïmplementeerd in uw bestaande cluster, moet u dit implementeren. Zie Knooppunt-naar-knooppuntversleuteling voor meer informatie. Geef het pad op naar de locatie van de certificaten. Elk certificaat moet bijvoorbeeld de PEM-indeling
-----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE-----(Privacy Enhanced Mail) hebben. Over het algemeen zijn er twee manieren om certificaten te implementeren:- Zelfondertekende certificaten. Privé- en openbare certificaten zonder certificeringsinstantie (CA) voor elk knooppunt. In dit geval hebt u alle openbare certificaten nodig.
- Certificaten die zijn ondertekend door een CA. Certificaten die zijn uitgegeven door een zelfondertekende CA of een openbare CA. In dit geval hebt u het basis-CA-certificaat en alle tussenpersonen nodig, indien van toepassing. Voor meer informatie, zie Secure Sockets Layer (SSL)-certificaten voorbereiden voor productie.
Als u verificatie van client-naar-knooppuntcertificaten of wederzijdse Transport Layer Security (TLS) wilt implementeren, geeft u desgewenst de certificaten op in dezelfde indeling als bij het maken van het hybride cluster. Zie het Azure CLI-voorbeeld verderop in dit artikel. De certificaten worden opgegeven in de
--client-certificatesparameter.Met deze methode worden uw clientcertificaten geüpload en toegepast op het vertrouwensarchief voor uw Azure Managed Instance voor Apache Cassandra-cluster. U hoeft geen instellingen te bewerken
cassandra.yaml. Nadat de certificaten zijn toegepast, vereist het cluster Cassandra om de certificaten te verifiëren wanneer een client verbinding maakt. Zie voor meer informatierequire_client_auth: truein Cassandra client_encryption_options.De waarde van de
delegatedManagementSubnetIdvariabele die u in deze code opgeeft, is hetzelfde als de waarde die--scopeu hebt opgegeven in een eerdere opdracht: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_signedAls uw cluster al knooppunt-naar-knooppunt- en client-naar-knooppuntversleuteling heeft, moet u weten waar uw bestaande client- of gossip TLS/SSL-certificaten worden bewaard. Als u onzeker bent, voert u
keytool -list -keystore <keystore-path> -rfc -storepass <password>uit om de certificaten te tonen.Nadat de clusterresource is gemaakt, voert u de volgende opdracht uit om de configuratiedetails van het cluster op te halen:
resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' az managed-cassandra cluster show \ --cluster-name $clusterName \ --resource-group $resourceGroupName \De vorige opdracht retourneert informatie over de omgeving van het beheerde exemplaar. U hebt de gossip-certificaten nodig, zodat u ze kunt installeren in de truststore voor knooppunten in uw bestaande datacenter. In de volgende schermopname ziet u de uitvoer van de vorige opdracht en de indeling van certificaten.
De certificaten die worden geretourneerd uit de voorgaande opdracht bevatten regelafbrekingen die als tekst worden weergegeven. Een voorbeeld is
\r\n. Kopieer elk certificaat naar een bestand en maak het op voordat u probeert het te importeren in uw bestaande vertrouwensarchief.Kopieer de
gossipCertificatesmatrixwaarde die wordt weergegeven in de schermopname naar een bestand. Gebruik het volgende Bash-script om de certificaten op te maken en afzonderlijke PEM-bestanden voor elk script te maken. Om het Bash-script te downloaden, zie jq downloaden voor uw platform.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 doneMaak vervolgens een nieuw datacenter in het hybride cluster. Vervang de variabelewaarden door de clustergegevens:
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 falseKies de waarde voor
--skuuit de volgende beschikbare productlagen:- 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
De waarde voor
--availability-zoneis ingesteld opfalse. Als u beschikbaarheidszones wilt inschakelen, stelt u deze waarde in optrue. Beschikbaarheidszones verhogen de SLA (Service Level Agreement) voor beschikbaarheid van de service. Zie SLA voor onlineservices voor meer informatie.Beschikbaarheidszones worden niet ondersteund in alle regio's. Implementaties mislukken als u een regio selecteert waarin beschikbaarheidszones niet worden ondersteund. Zie de lijst met Azure-regio's voor ondersteunde regio's.
De succesvolle implementatie van beschikbaarheidszones is ook onderhevig aan de beschikbaarheid van rekenresources in alle zones in de specifieke regio. Implementaties kunnen mislukken als de productlaag die u hebt geselecteerd, of capaciteit, niet beschikbaar is in alle zones.
Nu het nieuwe datacenter is gemaakt, voert u de opdracht uit om de
datacenter showdetails ervan weer te geven:resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' dataCenterName='dc1' az managed-cassandra datacenter show \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterNameMet de vorige opdracht worden de seed-knooppunten van het nieuwe datacenter weergegeven.
Voeg de seed-knooppunten van het nieuwe datacenter toe aan de seed-knooppuntconfiguratie van uw bestaande datacenter in het bestand cassandra.yaml . Installeer de gossip-certificaten voor de beheerinstance die u eerder verzameld hebt in de vertrustwinkel voor elk knooppunt in uw bestaande cluster. Gebruik de
keytoolopdracht voor elk certificaat:keytool -importcert -keystore generic-server-truststore.jks -alias CassandraMI -file cert1.pem -noprompt -keypass myPass -storepass truststorePassAls u meer datacenters wilt toevoegen, herhaalt u de voorgaande stappen, maar hebt u alleen de seed-knooppunten nodig.
Belangrijk
Als uw bestaande Apache Cassandra-cluster slechts één datacenter heeft en dit datacenter de eerste is die is toegevoegd, moet u ervoor zorgen dat de
endpoint_snitchparametercassandra.yamlis ingesteld opGossipingPropertyFileSnitch.Als uw bestaande toepassingscode wordt gebruikt
QUORUMvoor consistentie, moet u ervoor zorgen dat voordat u de replicatie-instellingen wijzigt in de volgende stap, uw bestaande toepassingscode gebruiktLOCAL_QUORUMom verbinding te maken met uw bestaande cluster. Anders mislukken live-updates nadat u de replicatie-instellingen in de volgende stap hebt gewijzigd. Nadat u de replicatiestrategie hebt gewijzigd, kunt u desgewenst terugkerenQUORUMnaar.Gebruik ten slotte de volgende Cassandra Query Language-query om de replicatiestrategie in elke keyspace bij te werken, zodat alle datacenters binnen het cluster worden opgenomen:
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3};U moet ook verschillende systeemtabellen bijwerken:
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}Als de datacenters in uw bestaande cluster client-naar-knooppuntversleuteling (SSL) niet afdwingen en u van plan bent dat uw toepassingscode rechtstreeks verbinding maakt met Azure Managed Instance voor Apache Cassandra, moet u OOK TLS/SSL inschakelen in uw toepassingscode.
Een hybride cluster gebruiken voor realtime migratie
De voorgaande instructies bevatten richtlijnen voor het configureren van een hybride cluster. Deze aanpak is ook een uitstekende manier om een naadloze migratie zonder downtime te realiseren. In de volgende procedure ziet u hoe u een on-premises of andere Cassandra-omgeving migreert die u buiten gebruik wilt stellen, zonder uitvaltijd, naar Azure Managed Instance voor Apache Cassandra.
Een hybride cluster configureren. Volg de vorige instructies.
Schakel automatische reparaties in Azure Managed Instance voor Apache Cassandra tijdelijk uit tijdens de migratie:
az managed-cassandra cluster update \ --resource-group $resourceGroupName \ --cluster-name $clusterName --repair-enabled falseGebruik in de Azure CLI de volgende opdracht om op elk knooppunt in uw nieuwe Azure Managed Instance voor Apache Cassandra-datacenter uit te voeren
nodetool rebuild. Vervang door<ip address>het IP-adres van het knooppunt. Vervang<sourcedc>door de naam van uw bestaande datacenter, de naam waaruit u migreert:az managed-cassandra cluster invoke-command \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --host <ip address> \ --command-name nodetool --arguments rebuild="" "<sourcedc>"=""Voer deze opdracht alleen uit nadat u alle voorgaande stappen hebt uitgevoerd. Deze aanpak moet ervoor zorgen dat alle historische gegevens worden gerepliceerd naar uw nieuwe datacenters in Azure Managed Instance voor Apache Cassandra. U kunt op een of meer knooppunten tegelijk uitvoeren
rebuild. Voer het uit op één knooppunt tegelijk om het effect op het bestaande cluster te verminderen. Wordt uitgevoerd op meerdere knooppunten wanneer het cluster de extra I/O- en netwerkdruk kan verwerken. Voor de meeste installaties kunt u slechts één of twee parallel uitvoeren, zodat u het cluster niet overbelast.Waarschuwing
U moet de bron
data centeropgeven wanneer unodetool rebuilduitvoert. Als u het datacenter onjuist opgeeft bij de eerste poging, worden tokenbereiken gekopieerd zonder dat er gegevens worden gekopieerd voor uw niet-systeemtabellen. Volgende pogingen mislukken zelfs als u het datacenter correct opgeeft. U kunt dit probleem oplossen door vermeldingen voor elke niet-systeemsleutelruimte insystem.available_rangeste verwijderen met behulp van hetcqlshqueryhulpprogramma in uw Azure Managed Instance voor Apache Cassandra-datacenter:delete from system.available_ranges where keyspace_name = 'myKeyspace';Wijzig uw toepassingscode om te verwijzen naar de "seed nodes" in uw nieuwe Azure Managed Instance voor Apache Cassandra datacenter.
Zoals ook vermeld in de instructies voor hybride installatie, schakelt u deze functie in uw toepassingscode in als de datacenters in uw bestaande cluster geen client-naar-knooppuntversleuteling (SSL) afdwingen. Azure Managed Instance voor Apache Cassandra dwingt deze vereiste af.
Voer
ALTER KEYSPACEvoor elke keyspace op dezelfde manier uit als eerder gedaan. U kunt nu uw oude datacenters verwijderen.Voer node tool decommission uit voor elke oude datacenterknoop.
Zet uw applicatiecode indien nodig of indien gewenst terug naar
QUORUM.Schakel automatische reparaties opnieuw in.
az managed-cassandra cluster update \ --resource-group $resourceGroupName \ --cluster-name $clusterName --repair-enabled true
Probleemoplossing
Als er een fout optreedt wanneer u machtigingen toepast op uw virtuele netwerk met behulp van de Azure CLI, kunt u dezelfde machtiging handmatig toepassen vanuit Azure Portal. Een voorbeeld van een dergelijke fout is 'Kan gebruiker of service-principal niet vinden in graf-database voor e5007d2c-4b13-4a74-9b6a-605d99f03501'. Zie Gebruik de Azure-portal om Azure Cosmos DB-service-principal toe te voegen voor meer informatie.
De Azure Cosmos DB-roltoewijzing wordt alleen gebruikt voor implementatiedoeleinden. Azure Managed Instanced voor Apache Cassandra heeft geen back-endafhankelijkheden op Azure Cosmos DB.
Resources opschonen
Als u dit beheerde exemplaarcluster niet meer gaat gebruiken, volgt u deze stappen om het te verwijderen:
- Selecteer Resourcegroepen in het linkermenu van de Azure-portal.
- Kies in de lijst de resourcegroep die u voor deze quickstart hebt gemaakt.
- Selecteer Resourcegroep verwijderen in het deelvenster Overzicht van de resourcegroep.
- Voer in het volgende deelvenster de naam in van de resourcegroep die u wilt verwijderen en selecteer vervolgens Verwijderen.