Schnellstart: Erstellen eines Clusters vom Typ „Azure Managed Instance for Apache Cassandra“ mithilfe der Azure CLI

Azure Managed Instance for Apache Cassandra ist ein vollständig verwalteter Dienst für reine Open-Source Apache Cassandra-Cluster. Der Dienst ermöglicht auch das Überschreiben von Konfigurationen, je nach den spezifischen Anforderungen der einzelnen Workloads, und bietet so ein Höchstmaß an Flexibilität und Kontrolle, wo dies erforderlich ist.

In dieser Schnellstartanleitung erfahren Sie, wie Sie mithilfe der Azure CLI einen Cluster mit Azure Managed Instance for Apache Cassandra erstellen. Außerdem wird gezeigt, wie Sie ein Rechenzentrum erstellen und Knoten im Rechenzentrum hoch- oder herunterskalieren.

Voraussetzungen

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

Wichtig

Für diesen Artikel ist die Azure CLI-Version 2.30.0 oder höher erforderlich. Wenn Sie Azure Cloud Shell verwenden, ist die neueste Version bereits installiert.

Erstellen eines Managed Instance-Clusters

  1. Melden Sie sich beim Azure-Portal

  2. Legen Sie Ihre Abonnement-ID über die Azure CLI fest:

    az account set -s <Subscription_ID>
    
  3. Erstellen Sie als Nächstes ein virtuelles Netzwerk mit einem dedizierten Subnetz in Ihrer Ressourcengruppe:

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

    Hinweis

    Für die Bereitstellung einer Instanz von Azure Managed Instance for Apache Cassandra ist Internetzugriff erforderlich. In Umgebungen, in denen der Internetzugriff eingeschränkt ist, tritt ein Fehler bei der Bereitstellung auf. Stellen Sie sicher, dass der Zugriff im VNet auf die folgenden wichtigen Azure-Dienste, die für die richtige Funktionsweise von Managed Cassandra erforderlich sind, nicht blockiert ist:

    • Azure Storage
    • Azure Key Vault
    • Skalierungsgruppen für virtuelle Azure-Computer
    • Azure-Überwachung
    • Microsoft Entra ID
    • Azure Security
  4. Wenden Sie einige spezielle Berechtigungen auf das virtuelle Netzwerk an, die für die verwaltete Instanz erforderlich sind. Verwenden Sie den Befehl az role assignment create, und ersetzen Sie <subscriptionID>, <resourceGroupName> und <vnetName> durch die entsprechenden Werte:

    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>
    

    Hinweis

    Die Werte assignee und role im vorherigen Befehl sind feste Werte. Geben Sie diese Werte daher genau so ein, wie im Befehl angegeben. Andernfalls treten beim Erstellen des Clusters Fehler auf. Treten beim Ausführen dieses Befehls Fehler auf, verfügen Sie möglicherweise nicht über die Berechtigungen zum Ausführen des Befehls. Wenden Sie sich an Ihren Administrator, um die entsprechenden Berechtigungen zu erhalten.

  5. Erstellen Sie als Nächstes mithilfe des Befehls az managed-cassandra cluster create den Cluster in dem neu erstellten virtuellen Netzwerk. Führen Sie den folgenden Befehl mit dem Wert der Variablen delegatedManagementSubnetId aus:

    Hinweis

    Der Wert der von Ihnen unten angegebenen Variablen delegatedManagementSubnetId stimmt exakt mit dem Wert von --scope überein, den Sie im obigen Befehl angegeben haben:

    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. Erstellen Sie schließlich ein Rechenzentrum für den Cluster mit drei Knoten, der VM-SKU „Standard D8s v4“ und vier angefügten P30-Datenträgern für jeden Knoten. Verwenden Sie dazu den Befehl 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
    

    Hinweis

    Der Wert für --sku kann aus den folgenden verfügbaren SKUs ausgewählt werden:

    • 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

    Beachten Sie auch, dass --availability-zone auf false festgelegt ist. Legen Sie diesen Wert auf true fest, um Verfügbarkeitszonen zu aktivieren. Verfügbarkeitszonen erhöhen die Verfügbarkeits-SLA des Diensts. Ausführlichere Informationen finden Sie hier in den vollständigen SLA-Details.

    Warnung

    Verfügbarkeitszonen werden nicht in allen Regionen unterstützt. Bereitstellungen sind nicht erfolgreich, wenn Sie eine Region auswählen, in der Verfügbarkeitszonen nicht unterstützt werden. Informationen zu den unterstützten Regionen finden Sie hier. Die erfolgreiche Bereitstellung von Verfügbarkeitszonen unterliegt auch der Verfügbarkeit von Computeressourcen in allen Zonen in der angegebenen Region. Bei Bereitstellungen kann ein Fehler auftreten, wenn die von Ihnen ausgewählte SKU oder Kapazität nicht in allen Zonen verfügbar ist.

  7. Die Knoten des erstellten Rechenzentrums können bei Bedarf mithilfe des Befehls az managed-cassandra datacenter update hoch- oder herunterskaliert werden. Ändern Sie den Wert des Parameters node-count in den gewünschten Wert:

    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
    

Herstellen einer Clusterverbindung

Von Azure Managed Instance for Apache Cassandra werden keine Knoten mit öffentlicher IP-Adresse erstellt. Wenn Sie eine Verbindung mit dem neu erstellten Cassandra-Cluster herstellen möchten, müssen Sie eine weitere Ressource innerhalb des virtuellen Netzwerks erstellen. Bei dieser Ressource kann es sich um eine Anwendung handeln oder um einen virtuellen Computer, auf dem das Open-Source-Abfragetool CQLSH von Apache installiert ist. Sie können eine Resource Manager-Vorlage verwenden, um einen virtuellen Ubuntu-Computer bereitzustellen.

Herstellen einer Verbindung über CQLSH

Stellen Sie nach der Bereitstellung des virtuellen Computers eine SSH-Verbindung mit dem Computer her, und installieren Sie CQLSH, wie in den folgenden Befehlen gezeigt:

# 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

Herstellen einer Verbindung über eine Anwendung

Wie bei CQLSH muss auch bei der Verbindung aus einer Anwendung, die einen der unterstützten Apache Cassandra-Clienttreiber verwendet, die SSL-Verschlüsselung aktiviert und die Zertifizierungsprüfung deaktiviert sein. Weitere Beispiele für die Verbindung zu Azure Managed Instance for Apache Cassandra mit Java, .NET, Node.js und Python.

Es wird empfohlen, die Zertifikatüberprüfung zu deaktivieren, da die Zertifikatüberprüfung nur dann funktioniert, wenn Sie die IP-Adressen Ihrer Clusterknoten der entsprechenden Domäne zuordnen. Wenn Sie über eine interne Richtlinie verfügen, die eine Überprüfung von SSL-Zertifikaten für jede Anwendung vorschreibt, können Sie dies vereinfachen, indem Sie Einträge wie 10.0.1.5 host1.managedcassandra.cosmos.azure.com in Ihrer Datei „hosts“ für jeden Knoten hinzufügen. Wenn Sie diesen Ansatz auswählen, müssen Sie auch neue Einträge hinzufügen, wenn Sie die Knoten hochskalieren.

Für Java sollten Sie unbedingt auch spekulative Ausführungsrichtlinien aktivieren, wenn Anwendungen empfindlich auf die Latenzzeit reagieren. Eine Demo zur Veranschaulichung der Funktionsweise und zum Aktivieren der Richtlinie finden Sie hier.

Hinweis

In den meisten Fällen sollte es nicht erforderlich sein, Zertifikate (rootCA, node oder client, truststores usw.) zu konfigurieren oder zu installieren, um eine Verbindung mit Azure Managed Instance for Apache Cassandra herzustellen. Die SSL-Verschlüsselung kann aktiviert werden, indem Sie den Standard-Truststore und das Kennwort der vom Client verwendeten Laufzeitumgebung verwenden (siehe Beispiele für Java, .NET, Node.js und Python), da Azure Managed Instance for Apache Cassandra-Zertifikate von dieser Umgebung als vertrauenswürdig eingestuft werden. In seltenen Fällen, wenn das Zertifikat nicht vertrauenswürdig ist, müssen Sie es möglicherweise zum Truststore hinzufügen.

Konfigurieren von Clientzertifikaten (optional)

Das Konfigurieren von Clientzertifikaten ist optional. Eine Clientanwendung kann eine Verbindung zu Azure Managed Instance for Apache Cassandra herstellen, wenn die oben genannten Schritte durchgeführt wurden. Sie können jedoch auch zusätzlich Clientzertifikate für die Authentifizierung erstellen und konfigurieren, wenn Sie dies wünschen. Im Allgemeinen gibt es zwei Möglichkeiten zum Erstellen von Zertifikaten:

  • Selbstsignierte Zertifikate. Dies bedeutet, dass für jeden Knoten ein privates und ein öffentliches Zertifikat (kein Zertifizierungsstellenzertifikat) vorhanden sind. In diesem Fall benötigen wir alle öffentlichen Zertifikate.
  • Zertifikate, die von einer Zertifizierungsstelle signiert wurden. Hierbei kann es sich um eine selbstsignierte Zertifizierungsstelle oder sogar um eine öffentliche Zertifizierungsstelle handelt. In diesem Fall benötigen wir das Stammzertifizierungsstellenzertifikat (siehe Anweisungen zum Vorbereiten von SSL-Zertifikaten für die Produktion) und alle Zwischenstufen (falls zutreffend).

Wenn Sie die Client-zu-Knoten-Zertifikatauthentifizierung oder gegenseitige Transport Layer Security implementieren möchten, müssen Sie die Zertifikate über Azure CLI bereitstellen. Mit dem folgenden Befehl werden Ihre Clientzertifikate hochgeladen und in den Vertrauensspeicher für Ihren verwalteten Cassandra-Instanzcluster angewendet (d. h. Sie müssen die Einstellungen cassandra.yaml nicht bearbeiten). Nach der Anwendung erfordert Ihr Cluster, dass Cassandra die Zertifikate überprüft, wenn ein Client eine Verbindung herstellt (siehe require_client_auth: true 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

Problembehandlung

Wenn beim Anwenden von Berechtigungen für Ihre Virtual Network-Instanz mithilfe der Azure CLI ein Fehler mit dem Hinweis auftritt, dass der Benutzer oder Dienstprinzipal in der Graphdatenbank für „e5007d2c-4b13-4a74-9b6a-605d99f03501“ nicht gefunden werden kann, können Sie die gleiche Berechtigung manuell über das Azure-Portal anwenden. Informationen zur Vorgehensweise finden Sie hier.

Hinweis

Die Azure Cosmos DB-Rollenzuweisung wird nur für Bereitstellungszwecke verwendet. Azure Managed Instance for Apache Cassandra verfügt über keine Back-End-Abhängigkeiten von Azure Cosmos DB.

Bereinigen von Ressourcen

Wenn Sie die Ressourcen nicht mehr benötigen, führen Sie den Befehl az group delete aus, um die Ressourcengruppe, die verwaltete Instanz und alle zugehörigen Ressourcen zu löschen:

az group delete --name <Resource_Group_Name>

Nächste Schritte

In dieser Schnellstartanleitung haben Sie gelernt, wie Sie mithilfe der Azure CLI einen Cluster vom Typ „Azure Managed Instance for Apache Cassandra“ erstellen. Nun können Sie mit der Nutzung des Clusters beginnen: