Freigeben über


Schnellstart: Erstellen einer azure managed Instance für Apache Cassandra-Cluster mithilfe der Azure CLI

Azure Managed Instance for Apache Cassandra ist ein vollständig verwalteter Service für reine Open-Source Apache Cassandra-Cluster. Der Dienst ermöglicht außerdem, konfigurationen abhängig von den spezifischen Anforderungen jeder Workload außer Kraft zu setzen, um maximale Flexibilität und Kontrolle zu gewährleisten.

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 innerhalb des Rechenzentrums nach oben oder unten skalieren.

Voraussetzungen

Wichtig

Dieser Artikel erfordert die Azure CLI-Version 2.30.0 oder höher. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.

Erstellen eines Managed Instance-Clusters

  1. Melden Sie sich beim Azure-Portal an.

  2. Legen Sie Ihre Abonnement-ID in der Azure CLI fest:

    az account set --subscription <Subscription_ID>
    
  3. Erstellen Sie ein virtuelles Netzwerk mit einem dedizierten Subnetz in Ihrer Ressourcengruppe:

    az network vnet create --name <VNet_Name> --location eastus2 \
      --resource-group <Resource_Group_Name> --subnet-name <Subnet Name>
    

    Die Bereitstellung einer Instanz von Azure Managed Instance für Apache Cassandra erfordert Internetzugriff. In Umgebungen, in denen der Internetzugriff eingeschränkt ist, tritt ein Fehler bei der Bereitstellung auf. Stellen Sie sicher, dass Sie den Zugriff in Ihrem virtuellen Netzwerk nicht auf die folgenden Azure-Dienste blockieren, die für die ordnungsgemäße Funktionsweise von Azure Managed Instance für Apache Cassandra erforderlich sind:

    • Azure Storage
    • Azure Key Vault (ein Dienst zur sicheren Verwaltung kryptografischer Schlüssel)
    • Azure Virtual Machine Scale Sets (Azure-VM-Skalierungssätze)
    • Azure Monitor
    • Microsoft Entra ID
    • Microsoft Defender for Cloud
  4. Wenden Sie diese spezifischen Berechtigungen auf das virtuelle Netzwerk an. Für die verwaltete Instanz sind sie erforderlich. Verwenden Sie den az role assignment create-Befehl, 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>
    

    Die assignee und role sind feste Werte. Geben Sie diese Werte genau wie im Befehl erwähnt ein. Ohne dies kommt es zu Fehlern, wenn Sie den Cluster erstellen. Wenn beim Ausführen dieses Befehls Fehler auftreten, verfügen Sie möglicherweise nicht über berechtigungen zum Ausführen des Befehls. Wenden Sie sich an Ihren Azure-Administrator, um Berechtigungen zu erteilen.

  5. Erstellen Sie den Cluster in Ihrem neu erstellten virtuellen Netzwerk, indem Sie den Befehl "az managed-cassandra cluster create" verwenden . Führen Sie den folgenden Befehl mit dem Wert der delegatedManagementSubnetId Variablen aus. (Der Wert delegatedManagementSubnetId ist derselbe virtuelle Netzwerkname, für den die Berechtigungen angewendet wurden.)

    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='5.0' # 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 ein Rechenzentrum für den Cluster mit drei virtuellen Computern (VMs). Verwenden Sie die folgende Konfiguration:

    • VM-Größe: Standard E8s v5
    • Datenträger: 4 P30-Datenträger, die an die einzelnen bereitgestellten virtuellen Computer angefügt sind

    Nachdem alle Informationen vorhanden sind, verwenden Sie 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
    

    Wählen Sie den Wert für --sku aus den folgenden verfügbaren VM-Größen aus.

    • Standard_E8s_v5
    • Standard_E16s_v5
    • Standard_E20s_v5
    • Standard_E32s_v5

    Standardmäßig ist --availability-zone auf falsefestgelegt. Um Verfügbarkeitszonen zu aktivieren, legen Sie sie auf true. Verfügbarkeitszonen tragen dazu bei, die Verfügbarkeit des Diensts zu erhöhen. Weitere Informationen finden Sie unter Vereinbarungen zum Servicelevel für Onlinedienste.

    Verfügbarkeitszonen werden in allen Azure-Regionen nicht unterstützt. Bereitstellungen schlagen fehl, wenn Sie eine Region auswählen, in der Verfügbarkeitszonen nicht unterstützt werden. Unterstützte Regionen finden Sie in der Azure-Regionsliste.

    Die erfolgreiche Bereitstellung von Verfügbarkeitszonen unterliegt der Verfügbarkeit von Computeressourcen in allen Zonen in der region, die Sie ausgewählt haben. Bereitstellungen schlagen fehl, wenn die von Ihnen ausgewählte VM-Größe in der von Ihnen ausgewählten Region nicht verfügbar ist.

  7. Nachdem das Rechenzentrum erstellt wurde, können Sie den Befehl az managed-cassandra datacenter update ausführen, um den Cluster zu verkleinern oder zu vergrößern. Ändern Sie den Wert des node-count Parameters 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

Azure Managed Instance für Apache Cassandra erstellt keine Knoten mit öffentlichen IP-Adressen. Um eine Verbindung mit Ihrem neuen Cassandra-Cluster herzustellen, müssen Sie eine weitere Ressource innerhalb desselben virtuellen Netzwerks erstellen. Diese Ressource kann eine Anwendung oder eine VM sein, auf der cassandra Query Language Shell (CQLSH) installiert ist. CQLSH ist ein Apache Open-Source-Abfragetool.

Sie können eine Azure Resource Manager-Vorlage verwenden, um eine Ubuntu-VM bereitzustellen.

Aufgrund einiger bekannter Probleme mit Versionen von Python empfehlen wir, ein Ubuntu 22.04-Image zu verwenden, das im Lieferumfang von Python3.10.12 oder einer virtuellen Python-Umgebung zum Ausführen von CQLSH enthalten ist.

Herstellen einer Verbindung mit CQLSH

Nachdem der virtuelle Computer bereitgestellt wurde, verwenden Sie Secure Shell, um eine Verbindung mit dem Computer herzustellen und CQLSH zu installieren. Verwenden Sie die folgenden Befehle:

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

Überprüfen Sie, welche Versionen von Cassandra noch unterstützt werden , und wählen Sie die gewünschte Version aus. Es wird empfohlen, eine stabile Version zu verwenden.

Installieren Sie die Cassandra-Bibliotheken, um CQLSH abzurufen. Führen Sie die offiziellen Schritte aus der Cassandra-Dokumentation aus.

Verbindung aus einer Anwendung herstellen

Wie bei CQLSH muss die Transport Layer Security/Secure Sockets Layer (TLS/SSL)-Verschlüsselung aktiviert sein, und die Zertifikatsüberprüfung muss deaktiviert werden, wenn Sie einen der unterstützten Apache Cassandra-Clienttreiber verwenden, um aus einer Anwendung eine Verbindung herzustellen. Beispiele finden Sie unter Java, .NET, Node.jsund Python.

Es wird empfohlen, die Zertifikatüberprüfung zu deaktivieren, da sie nicht funktioniert, es sei denn, Sie ordnen IP-Adressen Ihrer Clusterknoten der entsprechenden Domäne zu. Wenn eine interne Richtlinie die Überprüfung von TLS/SSL-Zertifikaten für eine beliebige Anwendung vorschreibt, fügen Sie Einträge wie 10.0.1.5 host1.managedcassandra.cosmos.azure.com in der Hostdatei für jeden Knoten hinzu, um diese Einrichtung zu erleichtern. Wenn Sie diesen Ansatz verfolgen, müssen Sie auch neue Einträge hinzufügen, wenn Sie Knoten skalieren.

Für Java empfehlen wir, die spekulative Ausführungsrichtlinie zu aktivieren, in denen Anwendungen empfindlich gegenüber Taillatenz sind. Eine Demo, die veranschaulicht, wie dieser Ansatz funktioniert und wie die Richtlinie aktiviert werden kann, finden Sie unter Implementieren spekulativer Ausführungsrichtlinie.

Normalerweise müssen Sie keine Zertifikate (wie rootCA, node, client oder truststore) konfigurieren, um eine Verbindung mit Azure Managed Instance für Apache Cassandra herzustellen. TLS/SSL-Verschlüsselung verwendet den Standardvertrauensspeicher und das ausgewählte Laufzeitkennwort des Clients. Beispielcode finden Sie unter Java, .NET, Node.jsund Python). Zertifikate sind standardmäßig vertrauenswürdig. Wenn nicht, fügen Sie sie dem Vertrauensspeicher hinzu.

Konfigurieren von Clientzertifikaten (optional)

Das Konfigurieren von Clientzertifikaten ist optional. Eine Clientanwendung kann eine Verbindung mit azure Managed Instance für Apache Cassandra herstellen, nachdem Sie die vorherigen Schritte ausgeführt haben. Wenn Sie es vorziehen, können Sie auch Clientzertifikate für die Authentifizierung erstellen und konfigurieren. Im Allgemeinen gibt es zwei Möglichkeiten zum Erstellen von Zertifikaten:

  • Selbstsignierte Zertifikate: Private und öffentliche Zertifikate ohne Zertifizierungsstelle (Ca) für jeden Knoten. In diesem Fall sind alle öffentlichen Zertifikate erforderlich.
  • Von einer Zertifizierungsstelle signierte Zertifikate: Zertifikate, die von einer selbstsignierten Zertifizierungsstelle oder einer öffentlichen Zertifizierungsstelle ausgestellt wurden. Für diese Einrichtung benötigen Sie das Stamm-CA-Zertifikat und, falls zutreffend, alle Zwischenzertifikate. Weitere Informationen finden Sie unter Vorbereiten von SSL-Zertifikaten für die Produktion.

Um die Client-zu-Knoten-Zertifikatauthentifizierung oder die gegenseitige Transport Layer Security zu implementieren, stellen Sie die Zertifikate mithilfe der Azure CLI bereit. Mit dem folgenden Befehl werden Ihre Clientzertifikate in den Truststore für Ihre Azure Managed Instance für den Apache Cassandra-Cluster hochgeladen und angewendet. Sie müssen die cassandra.yaml Einstellungen nicht ändern. Nachdem die Zertifikate angewendet wurden, benötigt der Cluster Cassandra, um die Zertifikate während der Clientverbindungen zu überprüfen. Weitere Informationen finden Sie unter 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 Ihr virtuelles Netzwerk mithilfe der Azure CLI ein Fehler auftritt, können Sie dieselbe Berechtigung manuell über das Azure-Portal anwenden. Ein Beispiel für einen solchen Fehler ist „Der Benutzer oder Dienstprinzipal in der Graphdatenbank für e5007d2c-4b13-4a74-9b6a-605d99f03501 kann nicht gefunden werden.“ Weitere Informationen finden Sie unter Verwenden des Azure-Portals zum Hinzufügen von Azure Cosmos DB-Dienstprinzipal.

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

Bereinigen von Ressourcen

Wenn Ihre Ressource nicht mehr benötigt wird, verwenden Sie den az group delete Befehl, um die Ressourcengruppe, die verwaltete Instanz und alle zugehörigen Ressourcen zu entfernen:

az group delete --name <Resource_Group_Name>

Nächster Schritt

In dieser Schnellstartanleitung haben Sie erfahren, wie Sie mithilfe der Azure CLI eine azure Managed Instance für Apache Cassandra-Cluster erstellen. Nun können Sie mit der Nutzung des Clusters beginnen: