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. Deze service helpt u bij het versnellen van hybride scenario's en het verminderen van doorlopend onderhoud.

In deze quickstart wordt gedemonstreerd hoe u de Azure CLI-opdrachten gebruikt om een hybride cluster te configureren. Als u bestaande datacenters hebt in een on-premises of zelf-hostende omgeving, kunt u Azure Managed Instance voor Apache Cassandra gebruiken om andere datacenters toe te voegen aan dat cluster en deze te onderhouden.

Vereisten

  • Gebruik de bash-omgeving in Azure Cloud shell.

    Cloud Shell starten in een nieuw venster

  • Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren.

    • 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. Raadpleeg Aanmelden bij de Azure CLI voor aanvullende aanmeldingsopties.

    • Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor 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 een Azure Cloud Shell, is de meest recente versie al geïnstalleerd.

  • Azure Virtual Network connectiviteit met uw zelf-hostende of on-premises omgeving. Zie het artikel over het verbinden van on-premises omgevingen Verbinding maken een on-premises netwerk 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 navigeer naar uw Virtual Network resource.

  2. Open het tabblad Subnetten en maak een nieuw subnet. Zie het volgende artikel voor meer informatie over de velden in het Virtual Network 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 binnen uw VNet niet blokkeert tot de volgende essentiële Azure-services die nodig zijn om beheerde Cassandra goed te laten werken. U vindt hier 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. Nu gaan we een aantal speciale machtigingen toepassen op het VNet en subnet dat door Cassandra beheerd exemplaar is vereist, met behulp van Azure CLI. Gebruik de opdracht , en te az role assignment create vervangen door de juiste <subscriptionID> <resourceGroupName> <vnetName> 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 en in de vorige opdracht zijn respectievelijk vaste role service-principe en rol-id's.

  4. Vervolgens configureren we resources 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 van clusterName variabelen en in het volgende clusterNameOverride script.

    U hebt ook minimaal de seed-knooppunten van uw bestaande datacenter en de certificaatcertificaten nodig voor versleuteling van knooppunt-naar-knooppunt. 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 de documentatie hier. U moet het pad naar de locatie van de certificaten leveren. 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. Zelf-ondertekende 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 zelf-ondertekende CA of zelfs een openbare ca zijn. In dit geval hebben we het basis-CA-certificaat nodig (raadpleeg de instructies voor het voorbereiden van SSL-certificatenvoor productie) en alle intermediairs (indien van toepassing).

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

    Notitie

    De waarde van de variabele die u hieronder oplevert, is precies hetzelfde als de waarde van die u hebt opgegeven delegatedManagementSubnetId --scope 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 versleuteling van knooppunt-naar-knooppunt en client-naar-knooppunt heeft, moet u weten waar uw bestaande client- en/of SSL-certificaten worden bewaard. Als u twijfelt, moet u kunnen uitvoeren om keytool -list -keystore <keystore-path> -rfc -storepass <password> de certificaten af te drukken.

  5. Nadat de clusterresource is gemaakt, moet u de volgende opdracht uitvoeren om de installatiedetails 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 certificaatcertificaten nodig, zodat u ze kunt installeren in het vertrouwensopslag 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 worden geretourneerd met de bovenstaande opdracht bevatten regelafbreaks die worden weergegeven als tekst, bijvoorbeeld \r\n . Kopieer elk certificaat naar een bestand en maak het op voordat u het in het vertrouwensopslag van uw bestaande datacenter importeert.

    Tip

    Kopieer de matrixwaarde die wordt weergegeven in de bovenstaande schermafbeelding naar een bestand en gebruik het volgende bash-script (u moet jq downloaden en installeren voor uw platform) om de certificaten op te maken en afzonderlijke PEM-bestanden voor elk certificaat te gossipCertificates 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 variabele waarden vervangt door uw clusterdetails:

    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 --availability-zone mee dat is ingesteld op false . Als u beschikbaarheidszones wilt inschakelen, stelt u deze in op true . Beschikbaarheidszones verhogen de SLA voor beschikbaarheid van de service. Bekijk hier de volledige SLA-details voor meer informatie.

    Waarschuwing

    Beschikbaarheidszones worden niet in alle regio's ondersteund. Implementaties mislukken als u een regio selecteert waarin beschikbaarheidszones niet worden ondersteund. Kijk hier voor ondersteunde regio's. De geslaagde implementatie van beschikbaarheidszones is ook afhankelijk van de beschikbaarheid van rekenresources in alle zones in de opgegeven regio. Implementaties kunnen mislukken als de SKU die u hebt geselecteerd, of capaciteit, niet beschikbaar is in alle zones.

  8. Nu het nieuwe datacenter is gemaakt, kunt u de opdracht datacenter weergeven uitvoeren 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:

    Gegevens van datacenters op te halen.

  10. Voeg nu de seed-knooppunten van het nieuwe datacenter toe aan de seed-knooppuntconfiguratie van uw bestaande datacenter in het cassandra.yaml-bestand. En installeer de certificaatcertificaten voor beheerde exemplaren die u eerder hebt verzameld in het vertrouwensopslag voor elk knooppunt in uw bestaande cluster, met behulp van de opdracht keytool 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 hebt u alleen de seed-knooppunten nodig.

  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 de wachtwoordtabellen bijwerken:

    ALTER KEYSPACE "system_auth" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3}
    

Problemen oplossen

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

Notitie

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

Resources opschonen

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

  1. Selecteer resourcegroepen in Azure Portal menu aan de linkerkant.
  2. Selecteer de resourcegroep die u eerder voor deze quickstart hebt gemaakt uit de lijst.
  3. Selecteer resourcegroep verwijderen in het deelvenster Overzicht van de resourcegroep.
  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.