Delen via


Quickstart: Een hybride cluster configureren met Azure Managed Instance voor Apache Cassandra

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

  • 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

  1. Meld u aan bij Azure Portal en ga naar uw virtuele netwerkresource.

  2. Selecteer het tabblad Subnetten en maak een nieuw subnet. Zie Een subnet toevoegen voor meer informatie over de velden in het formulier Subnet toevoegen.

    Schermopname van de optie voor aanmelden en een nieuw subnet toevoegen aan uw virtuele netwerk.

    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
  3. 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 assignee en role in de vorige opdracht zijn respectievelijk vaste service-principal en rol-id's.

  4. 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 clusterName en clusterNameOverride variabelen 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-certificates parameter.

    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 informatie require_client_auth: true in Cassandra client_encryption_options.

    De waarde van de delegatedManagementSubnetId variabele die u in deze code opgeeft, is hetzelfde als de waarde die --scope u 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_signed
    

    Als 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.

  5. 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 \
    
  6. 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.

    Schermopname van het resultaat van het ophalen van de certificaatgegevens van het cluster.

    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 gossipCertificates matrixwaarde 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
    done
    
  7. Maak 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 false
    

    Kies de waarde voor --sku uit 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-zone is ingesteld op false. Als u beschikbaarheidszones wilt inschakelen, stelt u deze waarde in op true. 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.

  8. Nu het nieuwe datacenter is gemaakt, voert u de opdracht uit om de datacenter show details 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 $dataCenterName
    

    Met de vorige opdracht worden de seed-knooppunten van het nieuwe datacenter weergegeven.

    Schermopname die laat zien hoe u details van het datacenter kunt ophalen.

  9. 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 keytool opdracht voor elk certificaat:

    keytool -importcert -keystore generic-server-truststore.jks -alias CassandraMI -file cert1.pem -noprompt -keypass myPass -storepass truststorePass
    

    Als 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_snitch parameter cassandra.yaml is ingesteld op GossipingPropertyFileSnitch.

    Als uw bestaande toepassingscode wordt gebruikt QUORUM voor consistentie, moet u ervoor zorgen dat voordat u de replicatie-instellingen wijzigt in de volgende stap, uw bestaande toepassingscode gebruiktLOCAL_QUORUM om 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 terugkeren QUORUM naar.

  10. 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.

  1. Een hybride cluster configureren. Volg de vorige instructies.

  2. 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 false
    
  3. Gebruik 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 center opgeven wanneer u nodetool rebuild uitvoert. 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 in system.available_ranges te verwijderen met behulp van het cqlsh queryhulpprogramma in uw Azure Managed Instance voor Apache Cassandra-datacenter:

    delete from system.available_ranges where keyspace_name = 'myKeyspace';
    
  4. 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.

  5. Voer ALTER KEYSPACE voor elke keyspace op dezelfde manier uit als eerder gedaan. U kunt nu uw oude datacenters verwijderen.

  6. Voer node tool decommission uit voor elke oude datacenterknoop.

  7. Zet uw applicatiecode indien nodig of indien gewenst terug naar QUORUM.

  8. 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:

  1. Selecteer Resourcegroepen in het linkermenu van de Azure-portal.
  2. Kies in de lijst de resourcegroep die u voor deze quickstart hebt gemaakt.
  3. Selecteer Resourcegroep verwijderen in het deelvenster Overzicht van de resourcegroep.
  4. Voer in het volgende deelvenster de naam in van de resourcegroep die u wilt verwijderen en selecteer vervolgens Verwijderen.

Volgende stap