Schnellstart: Erstellen eines regionsübergreifenden Clusters mit Azure Managed Instance for Apache Cassandra

Azure Managed Instance for Apache Cassandra ist ein vollständig verwalteter Service 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 diesem Schnellstart wird veranschaulicht, wie Sie die Azure CLI-Befehle zum Konfigurieren eines regionsübergreifenden Clusters verwenden.

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.

  • Für diesen Artikel ist die Azure CLI-Version 2.30.0 oder höher erforderlich. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.

  • Azure Virtual Network mit einer Verbindung mit Ihrer selbstgehosteten bzw. lokalen Umgebung. Weitere Informationen zum Herstellen einer Verbindung für lokale Umgebungen mit Azure finden Sie im Artikel Verbinden eines lokalen Netzwerks mit Azure.

Einrichten der Netzwerkumgebung

Da alle Rechenzentren, die mit diesem Dienst ausgestattet sind, in dedizierten Subnetzen unter Verwendung der VNet-Einschleusung verwendet werden müssen, konfigurieren Sie vor der Bereitstellung ein entsprechendes Netzwerkpeering. Für diesen Schnellstart erstellen Sie einen Cluster mit zwei Rechenzentren in separaten Regionen: „USA, Osten“ und „USA, Osten 2“. Erstellen Sie zunächst die virtuellen Netzwerke für jede Region.

  1. Melden Sie sich beim Azure-Portal an.

  2. Erstellen Sie eine Ressourcengruppe namens cassandra-mi-multi-region:

    az group create --location eastus2 --name cassandra-mi-multi-region
    
  3. Erstellen Sie das erste VNet in der Region „USA, Osten 2“ mit einem dedizierten Subnetz:

    az network vnet create \
      --name vnetEastUs2 \
      --location eastus2 \
      --resource-group cassandra-mi-multi-region \
      --address-prefix 10.0.0.0/16 \
      --subnet-name dedicated-subnet
    
  4. Erstellen Sie das zweite VNet in „USA, Osten“, ebenfalls mit einem dedizierten Subnetz:

     az network vnet create \
       --name vnetEastUs \
       --location eastus \
       --resource-group cassandra-mi-multi-region \
       --address-prefix 192.168.0.0/16 \
       --subnet-name dedicated-subnet
    

    Hinweis

    Fügen Sie explizit verschiedene IP-Adressbereiche hinzu, um sicherzustellen, dass beim Peering keine Fehler auftreten.

  5. Erstellen Sie das Peering zwischen dem ersten und dem zweiten VNet:

    az network vnet peering create \
      --resource-group cassandra-mi-multi-region \
      --name MyVnet1ToMyVnet2 \
      --vnet-name vnetEastUs2 \
      --remote-vnet vnetEastUs \
      --allow-vnet-access \
      --allow-forwarded-traffic
    
  6. Erstellen Sie ein weiteres Peering zwischen dem zweiten und dem ersten VNet, um die beiden VNets zu verbinden:

    az network vnet peering create \
      --resource-group cassandra-mi-multi-region \
      --name MyVnet2ToMyVnet1 \
      --vnet-name vnetEastUs \
      --remote-vnet vnetEastUs2 \
      --allow-vnet-access \
      --allow-forwarded-traffic
    

    Hinweis

    Wenn Sie weitere Regionen hinzufügen, benötigt jedes VNet das Peering von ihm zu allen anderen VNets und von allen anderen VNets zu ihm.

  7. Überprüfen Sie die Ausgabe des vorherigen Befehls. Stellen Sie sicher, dass der Wert von „peeringState“ jetzt „Connected“ (Verbunden) lautet. Sie können dieses Ergebnis auch überprüfen, indem Sie den folgenden Befehl ausführen:

    az network vnet peering show \
      --name MyVnet1ToMyVnet2 \
      --resource-group cassandra-mi-multi-region \
      --vnet-name vnetEastUs2 \
      --query peeringState
    
  8. Wenden Sie einige spezielle Berechtigungen auf beide virtuellen Netzwerke an. Azure Managed Instance for Apache Cassandra erfordert diese Berechtigungen. Führen Sie den folgenden Befehl aus. Ersetzen Sie <SubscriptionID> durch Ihre Abonnement-ID:

    az role assignment create \
      --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \
      --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \
      --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2
    
    az role assignment create     \
      --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \
      --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \
      --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs
    

    Hinweis

    Die assignee- und role-Werte im vorherigen Befehl sind feste Werte. Geben Sie diese Werte genau wie im Befehl ein.

Wenn beim Ausführen von az role assignment create Fehler auftreten, haben Sie möglicherweise keine Berechtigung zum Ausführen. Erkundigen Sie sich bei Ihrem Administrator nach den Berechtigungen.

Erstellen eines regionsübergreifenden Clusters

  1. Stellen Sie die Clusterressource bereit. Ersetzen Sie <Subscription ID> durch Ihre Abonnement-ID. Die Bereitstellung kann fünf bis zehn Minuten dauern:

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    location='eastus2'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet'
    initialCassandraAdminPassword='myPassword'
    
     az managed-cassandra cluster create \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName \
       --location $location \
       --delegated-management-subnet-id $delegatedManagementSubnetId \
       --initial-cassandra-admin-password $initialCassandraAdminPassword \
       --debug
    
  2. Nachdem die Clusterressource erstellt wurde, können Sie ein Rechenzentrum erstellen. Erstellen Sie zunächst ein Rechenzentrum in „USA, Osten 2“. Ersetzen Sie <SubscriptionID> durch Ihre Abonnement-ID. Dieser Vorgang kann bis zu zehn Minuten dauern:

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    dataCenterName='dc-eastus2'
    dataCenterLocation='eastus2'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet'
    
     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
    
  3. Erstellen Sie ein Rechenzentrum in „USA, Osten“. Ersetzen Sie <SubscriptionID> durch Ihre Abonnement-ID.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    dataCenterName='dc-eastus'
    dataCenterLocation='eastus'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs/subnets/dedicated-subnet'
    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. Weitere Informationen finden Sie unter SLA für Azure Managed Instance for Apache Cassandra.

    Warnung

    Verfügbarkeitszonen werden nicht in allen Regionen unterstützt. Bei den Bereitstellungen treten Fehler auf, wenn Sie eine Region auswählen, in der Verfügbarkeitszonen nicht unterstützt werden. Unterstützte Regionen finden Sie unter Azure-Regionen mit Verfügbarkeitszonen.

    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.

  4. Nachdem das zweite Rechenzentrum erstellt wurde, rufen Sie den Knotenstatus ab, um zu überprüfen, ob alle Cassandra-Knoten erfolgreich eingerichtet wurden:

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    
    az managed-cassandra cluster node-status \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName
    
  5. Dann stellen Sie eine Clusterverbindung her. Verwenden Sie dazu CQLSH und die folgende CQL-Abfrage, um die Replikationsstrategie in jedem Keyspace so zu aktualisieren, dass alle Rechenzentren des gesamten Clusters eingebunden sind (Systemtabellen werden automatisch aktualisiert):

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
    
  6. Wenn Sie schließlich einem Cluster, in dem bereits Daten vorhanden sind, ein Rechenzentrum hinzufügen, müssen Sie rebuild ausführen, um die Verlaufsdaten zu replizieren. In diesem Fall wird davon ausgegangen, dass das Rechenzentrum dc-eastus2 bereits über Daten verfügt. Führen Sie in Azure CLI den folgenden Befehl aus, um nodetool rebuild auf jedem Knoten in Ihrem neuen Rechenzentrum dc-eastus auszuführen, wobei Sie <ip address> durch die IP-Adresse des Knotens ersetzen:

    az managed-cassandra cluster invoke-command \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --host <ip address> \
      --command-name nodetool --arguments rebuild="" "dc-eastus2"=""
    

    Warnung

    Sie sollten den Anwendungsclients nicht erlauben, in das neue Rechenzentrum zu schreiben, bevor Sie die Änderungen an der Keyspace-Replikation vorgenommen haben. Andernfalls funktioniert die Neuerstellung nicht und Sie müssen eine Supportanfrage erstellen, damit unser Team repair für Sie ausführen kann.

Problembehandlung

Wenn Sie bei der Anwendung von Berechtigungen auf Ihr virtuelles Netzwerk mithilfe der Azure CLI einen Fehler erkennen, können Sie die gleiche Berechtigung manuell über das Azure-Portal anwenden. Ein Beispielfehler könnte lauten: Benutzer oder Dienstprinzipal für 'e5007d2c-4b13-4a74-9b6a-605d99f03501' in der Graphdatenbank nicht gefunden. Weitere Informationen finden Sie unter Verwenden des Azure-Portals zum Hinzufügen eines Azure Cosmos DB-Dienstprinzipals.

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

Falls Sie diesen Managed Instance-Cluster nicht mehr benötigen, löschen Sie ihn wie folgt:

  1. Wählen Sie im linken Menü des Azure-Portals die Option Ressourcengruppen aus.
  2. Wählen Sie in der Liste die Ressourcengruppe aus, die Sie für diesen Schnellstart erstellt haben.
  3. Wählen Sie im Ressourcengruppenbereich Übersicht die Option Ressourcengruppe löschen aus.
  4. Geben Sie in dem nächsten Fenster den Namen der zu löschenden Ressourcengruppe ein, und wählen Sie dann Löschen aus.

Nächste Schritte

In diesem Schnellstart wurde beschrieben, wie Sie mit der Azure CLI und Azure Managed Instance for Apache Cassandra einen regionsübergreifenden Cluster erstellen. Sie können nun mit der Nutzung des Clusters beginnen.