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
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in 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. Raadpleeg Aanmelden bij 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.
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 .
Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
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
Meld u aan bij het Azure Portal
Uw abonnements-id instellen in Azure CLI:
az account set -s <Subscription_ID>
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
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 inrole
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.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
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 opfalse
. Als u beschikbaarheidszones wilt inschakelen, stelt u dit in optrue
. 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.
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: