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

Azure Managed Instance voor Apache Cassandra biedt geautomatiseerde implementatie- en schaalbewerkingen voor beheerde opensource Apache Cassandra-datacenters. Met deze service kunt u hybride scenario's versnellen en doorlopend onderhoud verminderen.

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 aan dat cluster toe te voegen en 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.

  • Azure Virtual Network met connectiviteit met uw zelf-hostende of on-premises omgeving. Zie het artikel 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 de Azure Portal en navigeer naar uw Virtual Network resource.

  2. Open het tabblad Subnetten en maak een nieuw subnet. Zie het Virtual Network artikel voor meer informatie over de velden in het formulier Subnet toevoegen:

    Voeg een nieuw subnet toe aan uw Virtual Network.

    Notitie

    Voor de implementatie van een azure Managed Instance voor Apache Cassandra is internettoegang vereist. De implementatie mislukt in omgevingen waarin internettoegang is beperkt. Zorg ervoor dat u de toegang in uw VNet niet blokkeert tot de volgende essentiële Azure-services die nodig zijn om Managed Cassandra goed te laten werken. Hier vindt u ook een uitgebreide lijst met IP-adres- en poortafhankelijkheden.

    • Azure Storage
    • Azure KeyVault
    • Microsoft Azure Virtual Machine Scale Sets
    • Azure Monitoring
    • Azure Active Directory
    • Azure-beveiliging
  3. We gaan nu enkele speciale machtigingen toepassen op het VNet en het subnet dat door Cassandra beheerd exemplaar vereist is, met behulp van Azure CLI. Gebruik de az role assignment create opdracht, vervangen <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>
    

    Notitie

    De assignee waarden in role de vorige opdracht zijn respectievelijk vaste service-principals en rol-id's.

  4. Vervolgens gaan we resources configureren voor ons hybride cluster. Omdat u al een cluster hebt, is de clusternaam hier alleen een logische resource om de naam van uw bestaande cluster te identificeren. Zorg ervoor dat u de naam van uw bestaande cluster gebruikt bij het definiëren clusterName en clusterNameOverride variabelen in het volgende script.

    U hebt ook minimaal de seed-knooppunten van uw bestaande datacenter en de gossip-certificaten nodig die zijn vereist voor knooppunt-naar-knooppuntversleuteling. Voor Azure Managed Instance voor Apache Cassandra is knooppunt-naar-knooppuntversleuteling vereist voor communicatie tussen datacenters. Als u geen knooppunt-naar-knooppuntversleuteling hebt geïmplementeerd in uw bestaande cluster, moet u dit implementeren. Raadpleeg de documentatie hier. Geef het pad op naar de locatie van de certificaten. Elk certificaat moet de PEM-indeling hebben, bijvoorbeeld -----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE-----. Over het algemeen zijn er twee manieren om certificaten te implementeren:

    1. Zelfondertekende certificaten. Dit betekent een persoonlijk en openbaar (geen CA)-certificaat voor elk knooppunt. In dit geval hebben we alle openbare certificaten nodig.

    2. Certificaten die zijn ondertekend door een CA. Dit kan een zelfondertekende CA of zelfs een openbare ca zijn. In dit geval hebben we het basis-CA-certificaat nodig (raadpleeg instructies voor het voorbereiden van SSL-certificaten voor productie) en alle tussenpersonen (indien van toepassing).

    Als u ook client-naar-knooppuntcertificaten hebt geïmplementeerd (zie hier), moet u ze ook in dezelfde indeling opgeven bij het maken van het hybride cluster. Zie het voorbeeld hieronder.

    Notitie

    De waarde van de delegatedManagementSubnetId variabele die u hieronder opgeeft, is precies hetzelfde als de waarde die --scope u hebt opgegeven in de bovenstaande 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 is not 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
    

    Notitie

    Als uw cluster al knooppunt-naar-knooppunt- en client-naar-knooppuntversleuteling heeft, moet u weten waar uw bestaande client- en/of gossip SSL-certificaten worden bewaard. Als u niet zeker weet, kunt u deze uitvoeren keytool -list -keystore <keystore-path> -rfc -storepass <password> om de certificaten af te drukken.

  5. Nadat de clusterresource is gemaakt, voert u de volgende opdracht uit om de details van de clusterinstallatie 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 het vertrouwensarchief voor knooppunten in uw bestaande datacenter. In de volgende schermopname ziet u de uitvoer van de vorige opdracht en de indeling van certificaten:

    Haal de certificaatgegevens op uit het cluster.

    Notitie

    De certificaten die uit de bovenstaande opdracht worden geretourneerd, bevatten regeleinden die worden weergegeven als tekst, bijvoorbeeld \r\n. U moet elk certificaat naar een bestand kopiëren en formatteren voordat u het probeert te importeren in het vertrouwensarchief van uw bestaande datacenter.

    Tip

    Kopieer de gossipCertificates matrixwaarde die in de bovenstaande schermafbeelding wordt weergegeven in een bestand en gebruik het volgende bash-script (u moet jq voor uw platform downloaden en installeren ) om de certificaten op te maken en afzonderlijke PEM-bestanden voor elk bestand te maken.

    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 '1d' -e '$d' -i $filename
    done
    
  7. Maak vervolgens een nieuw datacenter in het hybride cluster. Zorg ervoor dat u de variabelewaarden vervangt door de gegevens van uw cluster:

    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
    

    Notitie

    De waarde voor --sku kan worden gekozen uit de volgende beschikbare SKU's:

    • 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

    Houd er ook rekening mee dat --availability-zone deze is ingesteld op false. Als u beschikbaarheidszones wilt inschakelen, stelt u dit in op true. Beschikbaarheidszones verhogen de SLA voor beschikbaarheid van de service. Raadpleeg de volledige SLA-details hier voor meer informatie.

    Waarschuwing

    Beschikbaarheidszones worden niet ondersteund in alle regio's. Implementaties mislukken als u een regio selecteert waarin beschikbaarheidszones niet worden ondersteund. Zie hier voor ondersteunde regio's. De succesvolle implementatie van beschikbaarheidszones is ook onderhevig aan de beschikbaarheid van rekenresources in alle zones in de opgegeven regio. Implementaties kunnen mislukken als de geselecteerde SKU of capaciteit niet beschikbaar is in alle zones.

  8. Nu het nieuwe datacenter is gemaakt, voert u de opdracht show datacenter uit om de 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
    
  9. Met de vorige opdracht worden de seed-knooppunten van het nieuwe datacenter uitgevoerd:

    Details van datacenter ophalen.

  10. Voeg nu de seed-knooppunten van het nieuwe datacenter toe aan de seed-knooppuntconfiguratie van uw bestaande datacenter in het bestand cassandra.yaml . En installeer de gossip-certificaten van het beheerde exemplaar die u eerder hebt verzameld in het vertrouwensarchief voor elk knooppunt in uw bestaande cluster, met behulp van keytool de opdracht voor elk certificaat:

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

    Notitie

    Als u meer datacenters wilt toevoegen, kunt u de bovenstaande stappen herhalen, maar u hebt alleen de seed-knooppunten nodig.

    Belangrijk

    Als uw bestaande Apache Cassandra-cluster slechts één datacenter heeft en dit de eerste keer is dat er een datacenter wordt toegevoegd, moet u ervoor zorgen dat de endpoint_snitch parameter is cassandra.yaml ingesteld op GossipingPropertyFileSnitch.

    Belangrijk

    Als uw bestaande toepassingscode QUORUM gebruikt voor consistentie, moet u ervoor zorgen dat voordat u de replicatie-instellingen in de onderstaande stap wijzigt, uw bestaande toepassingscode LOCAL_QUORUM gebruikt om verbinding te maken met uw bestaande cluster (anders mislukken live-updates nadat u de replicatie-instellingen in de onderstaande stap hebt gewijzigd). Zodra de replicatiestrategie is gewijzigd, kunt u indien gewenst terugkeren naar QUORUM.

  11. Gebruik ten slotte de volgende CQL-query om de replicatiestrategie in elke keyspace bij te werken om alle datacenters in het cluster op te nemen:

    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}
    

    Belangrijk

    Als het datacentrum(s) in uw bestaande cluster versleuteling van client-naar-knooppunten (SSL) niet afdwingt en u van plan bent dat uw toepassingscode rechtstreeks verbinding maakt met Cassandra Managed Instance, moet u ook SSL inschakelen in uw toepassingscode.

Hybride cluster gebruiken voor realtimemigratie

De bovenstaande instructies bevatten richtlijnen voor het configureren van een hybride cluster. Dit is echter ook een uitstekende manier om een naadloze migratie met nul downtime te realiseren. Als u een on-premises of andere Cassandra-omgeving hebt die u buiten gebruik wilt stellen met nul downtime, moet u de volgende stappen uitvoeren voor het uitvoeren van uw workload in Azure Managed Instance voor Apache Cassandra:

  1. Hybride cluster configureren: volg de bovenstaande instructies.

  2. Schakel automatische reparaties tijdelijk uit in Azure Managed Instance voor Apache Cassandra voor de duur van de migratie:

        az managed-cassandra cluster update --cluster-name --resource-group--repair-enabled false
    
  3. Voer nodetool repair --full op elk knooppunt in het datacenter van uw bestaande cluster uit. U moet dit alleen uitvoeren nadat alle voorgaande stappen zijn uitgevoerd. Dit moet ervoor zorgen dat alle historische gegevens worden gerepliceerd naar uw nieuwe datacenters in Azure Managed Instance voor Apache Cassandra. Voor de meeste installaties kunt u slechts één of twee parallel uitvoeren om het cluster niet te overbelasten. U kunt een bepaalde reparatieuitvoering controleren door het specifieke knooppunt te controlerennodetool netsats.nodetool compactionstats Als u een zeer grote hoeveelheid gegevens in uw bestaande cluster hebt, kan het nodig zijn om de reparaties uit te voeren op keyspace- of zelfs tabelniveau. Zie hier voor meer informatie over het uitvoeren van reparaties in Cassandra.

    Notitie

    Om reparaties te versnellen adviseren we (als systeembelasting dit toestaat) zowel de stroomdoorvoer als de compressiedoorvoer te verhogen, zoals in het onderstaande voorbeeld:

      az managed-cassandra cluster invoke-command --resource-group $resourceGroupName --cluster-name $clusterName --host $host --command-name nodetool --arguments "setstreamthroughput"="" "7000"=""
       
      az managed-cassandra cluster invoke-command --resource-group $resourceGroupName --cluster-name $clusterName --host $host --command-name nodetool --arguments "setcompactionthroughput"="" "960"=""
    
  4. Knip uw toepassingscode om te verwijzen naar de seed-knooppunten in uw nieuwe Azure Managed Instance voor Apache Cassandra-datacentrum(s).

    Belangrijk

    Zoals ook wordt vermeld in de instructies voor hybride installatie, moet u dit inschakelen in uw toepassingscode als het datacentrum(s) in uw bestaande cluster geen ssl-versleuteling (client-naar-knooppunt) afdwingt, omdat dit door Cassandra Managed Instance wordt afgedwongen.

  5. Voer nodetoolherstel opnieuw uit op alle knooppunten in het datacentrum van uw bestaande cluster, op dezelfde manier als in stap 3 hierboven (om ervoor te zorgen dat eventuele delta's worden gerepliceerd na het knippen van de toepassing).

  6. Voer ALTER KEYSPACE uit voor elke keyspace, op dezelfde manier als eerder gedaan, maar verwijder nu uw oude datacentrum(s).

  7. Voer nodetool uit bedrijf voor elk oud datacentrumknooppunt.

  8. Zet uw toepassingscode terug naar quorum (indien nodig/voorkeur).

  9. Automatische reparaties opnieuw inschakelen:

        az managed-cassandra cluster update --cluster-name --resource-group--repair-enabled true
    

Problemen oplossen

Als er een fout optreedt bij het toepassen van machtigingen op uw Virtual Network met behulp van Azure CLI, zoals Kan de gebruiker of service-principal niet vinden in de grafiekdatabase voor 'e5007d2c-4b13-4a74-9b6a-605d99f03501', kunt u dezelfde machtiging handmatig toepassen vanuit de Azure Portal. Lees hier hoe u dit doet.

Notitie

De Azure Cosmos DB-roltoewijzing wordt alleen gebruikt voor implementatiedoeleinden. Azure Managed Instanced voor Apache Cassandra heeft geen back-endafhankelijkheden van Azure Cosmos DB.

Resources opschonen

Als u dit beheerde exemplaarcluster niet meer gaat gebruiken, verwijdert u dit met de volgende stappen:

  1. Selecteer Resourcegroepen in het linkermenu van Azure Portal.
  2. Selecteer de resourcegroep die u eerder voor deze quickstart hebt gemaakt uit de lijst.
  3. Selecteer In het deelvenster Overzicht van de resourcegroep de optie Resourcegroep verwijderen.
  4. Selecteer in het volgende venster de naam van de resourcegroep die u wilt verwijderen en selecteer vervolgens Verwijderen.

Volgende stappen

In deze quickstart hebt u geleerd hoe u een hybride cluster maakt met behulp van Azure CLI en Azure Managed Instance voor Apache Cassandra. U kunt nu aan de slag met het cluster.