Delen via


Quickstart: Een Azure Managed Instance voor Apache Cassandra-cluster maken met behulp van Azure CLI

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, waardoor de maximale flexibiliteit en controle waar nodig mogelijk zijn.

In deze quickstart ziet u hoe u de Azure CLI-opdrachten gebruikt om een cluster te maken met Azure Managed Instance voor Apache Cassandra. Ook ziet u hoe u een datacenter maakt en knooppunten omhoog of omlaag schaalt binnen het datacenter.

Vereisten

Belangrijk

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.

Een beheerd exemplaarcluster maken

  1. Meld u aan bij het Azure Portal

  2. Uw abonnements-id instellen in Azure CLI:

    az account set -s <Subscription_ID>
    
  3. Maak vervolgens een virtueel netwerk met een toegewezen subnet in uw resourcegroep:

    az network vnet create -n <VNet_Name> -l eastus2 -g <Resource_Group_Name> --subnet-name <Subnet Name>
    

    Notitie

    Voor de implementatie van een 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 VNet niet blokkeert tot de volgende essentiële Azure-services die nodig zijn om Managed Cassandra goed te laten werken:

    • Azure Storage
    • Azure KeyVault
    • Microsoft Azure Virtual Machine Scale Sets
    • Azure Monitoring
    • Microsoft Entra ID
    • Azure-beveiliging
  4. Pas enkele speciale machtigingen toe op het virtuele netwerk, die vereist zijn voor het beheerde exemplaar. Gebruik de az role assignment create opdracht, 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>
    

    Notitie

    De assignee waarden in role de vorige opdracht zijn vaste waarden, voer deze waarden precies in zoals vermeld in de opdracht. Dit leidt niet tot fouten bij het maken van het cluster. Als er fouten optreden bij het uitvoeren van deze opdracht, hebt u mogelijk geen machtigingen om deze uit te voeren. Neem contact op met uw beheerder voor machtigingen.

  5. Maak vervolgens het cluster in uw zojuist gemaakte virtuele netwerk met behulp van de opdracht az managed-cassandra cluster create . Voer de volgende opdracht uit om de waarde van delegatedManagementSubnetId de variabele te bepalen:

    Notitie

    De waarde van de delegatedManagementSubnetId variabele die u hieronder opgeeft, is precies hetzelfde als de waarde die --scope u in de bovenstaande opdracht hebt opgegeven:

    resourceGroupName='<Resource_Group_Name>'
    clusterName='<Cluster_Name>'
    location='eastus2'
    delegatedManagementSubnetId='/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Network/virtualNetworks/<VNet name>/subnets/<subnet name>'
    initialCassandraAdminPassword='myPassword'
    cassandraVersion='3.11' # set to 4.0 for a Cassandra 4.0 cluster
    
    az managed-cassandra cluster create \
      --cluster-name $clusterName \
      --resource-group $resourceGroupName \
      --location $location \
      --delegated-management-subnet-id $delegatedManagementSubnetId \
      --initial-cassandra-admin-password $initialCassandraAdminPassword \
      --cassandra-version $cassandraVersion \
      --debug
    
  6. Maak ten slotte een datacenter voor het cluster, met drie knooppunten, Standard D8s v4 VM SKU, met 4 P30-schijven die zijn gekoppeld voor elk knooppunt, met behulp van de opdracht az managed-cassandra datacenter create :

    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 3 \
      --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 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 SKU die u hebt geselecteerd, of capaciteit, niet beschikbaar is in alle zones.

  7. Zodra het datacenter is gemaakt, voert u de opdracht az managed-cassandra datacenter update uit als u de knooppunten in het datacenter omhoog of omlaag wilt schalen. Wijzig de waarde van node-count de parameter in de gewenste waarde:

    resourceGroupName='<Resource_Group_Name>'
    clusterName='<Cluster Name>'
    dataCenterName='dc1'
    dataCenterLocation='eastus2'
    
    az managed-cassandra datacenter update \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --data-center-name $dataCenterName \
      --node-count 9
    

Verbinding maken met uw cluster

Azure Managed Instance voor Apache Cassandra maakt geen knooppunten met openbare IP-adressen. Als u verbinding wilt maken met uw zojuist gemaakte Cassandra-cluster, moet u een andere resource in het virtuele netwerk maken. Deze resource kan een toepassing zijn of een virtuele machine waarop het opensource-queryprogramma CQLSH van Apache is geïnstalleerd. U kunt een Resource Manager-sjabloon gebruiken om een virtuele Ubuntu-machine te implementeren.

Verbinding maken vanuit CQLSH

Nadat de virtuele machine is geïmplementeerd, gebruikt u SSH om verbinding te maken met de machine en CQLSH te installeren, zoals wordt weergegeven in de volgende opdrachten:

# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre

# Install the Cassandra libraries in order to get CQLSH:
echo "deb http://archive.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra

# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false

# Connect to CQLSH (replace <IP> with the private IP addresses of a node in your Datacenter):
host=("<IP>")
initial_admin_password="Password provided when creating the cluster"
cqlsh $host 9042 -u cassandra -p $initial_admin_password --ssl

Verbinding maken vanuit een toepassing

Net als bij CQLSH moet SSL-versleuteling zijn ingeschakeld en moet de certificeringsverificatie worden uitgeschakeld met behulp van een van de ondersteunde Apache Cassandra-clientstuurprogramma's . Zie voorbeelden voor het maken van verbinding met Azure Managed Instance voor Apache Cassandra met behulp van Java, .NET, Node.js en Python.

Het uitschakelen van certificaatverificatie wordt aanbevolen omdat certificaatverificatie niet werkt, tenzij u I.P-adressen van uw clusterknooppunten toe wijzen aan het juiste domein. Als u een intern beleid hebt dat vereist dat u SSL-certificaatverificatie uitvoert voor elke toepassing, kunt u dit vergemakkelijken door vermeldingen zoals 10.0.1.5 host1.managedcassandra.cosmos.azure.com in uw hosts-bestand toe te voegen voor elk knooppunt. Als u deze aanpak volgt, moet u ook nieuwe vermeldingen toevoegen wanneer u knooppunten omhoog schaalt.

Voor Java raden we u ook ten zeerste aan om speculatief uitvoeringsbeleid in te schakelen waarbij toepassingen gevoelig zijn voor tail-latentie. U vindt hier een demo die laat zien hoe dit werkt en hoe u het beleid hier inschakelt.

Notitie

In de meeste gevallen is het niet nodig om certificaten (rootCA, knooppunt of client, truststores, enzovoort) te configureren of te installeren om verbinding te maken met Azure Managed Instance voor Apache Cassandra. SSL-versleuteling kan worden ingeschakeld met behulp van de standaardvertrouwensopslag en het wachtwoord van de runtime die door de client wordt gebruikt (zie Java-, .NET-, Node.js- en Python-voorbeelden), omdat Azure Managed Instance voor Apache Cassandra-certificaten worden vertrouwd door die omgeving. In zeldzame gevallen, als het certificaat niet wordt vertrouwd, moet u het mogelijk toevoegen aan de truststore.

Clientcertificaten configureren (optioneel)

Het configureren van clientcertificaten is optioneel. Een clienttoepassing kan verbinding maken met Azure Managed Instance voor Apache Cassandra zolang de bovenstaande stappen zijn uitgevoerd. Indien gewenst kunt u echter ook clientcertificaten maken en configureren voor verificatie. Over het algemeen zijn er twee manieren om certificaten te maken:

  • Zelfondertekende certificaten. Dit betekent een persoonlijk en openbaar (geen CA)-certificaat voor elk knooppunt. In dit geval hebben we alle openbare certificaten nodig.
  • 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 verificatie van client-naar-knooppuntcertificaten of wederzijdse MTLS (Transport Layer Security) wilt implementeren, moet u de certificaten opgeven via Azure CLI. Met de onderstaande opdracht worden uw clientcertificaten geüpload en toegepast op de truststore voor uw cluster met Cassandra Managed Instance (u hoeft dus geen instellingen te bewerken cassandra.yaml ). Nadat het cluster is toegepast, moet Cassandra de certificaten controleren wanneer een client verbinding maakt (zie require_client_auth: true in Cassandra client_encryption_options).

resourceGroupName='<Resource_Group_Name>'
clusterName='<Cluster Name>'

az managed-cassandra cluster update \
  --resource-group $resourceGroupName \
  --cluster-name $clusterName \
  --client-certificates /usr/csuser/clouddrive/rootCert.pem /usr/csuser/clouddrive/intermediateCert.pem

Probleemoplossing

Als er een fout optreedt bij het toepassen van machtigingen voor uw virtuele netwerk 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 Azure Portal. Hier vindt u informatie over 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

Wanneer u deze niet meer nodig hebt, kunt u de az group delete opdracht gebruiken om de resourcegroep, het beheerde exemplaar en alle gerelateerde resources te verwijderen:

az group delete --name <Resource_Group_Name>

Volgende stappen

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