Delen via


Quickstart: Een cluster met meerdere regio's maken met Azure Managed Instance voor Apache Cassandra

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 met meerdere regio's in Azure te configureren.

Vereisten

  • 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.

  • 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 .

De netwerkomgeving instellen

Omdat alle datacenters die met deze service zijn ingericht, moeten worden geïmplementeerd in toegewezen subnetten met behulp van VNet-injectie, configureert u de juiste netwerkpeering voorafgaand aan de implementatie. Voor deze quickstart maakt u een cluster met twee datacenters in afzonderlijke regio's: VS - oost en VS - oost 2. Maak eerst de virtuele netwerken voor elke regio.

  1. Meld u aan bij het Azure-portaal.

  2. Maak een resourcegroep met de naam cassandra-mi-multi-region:

    az group create --location eastus2 --name cassandra-mi-multi-region
    
  3. Maak het eerste VNet in VS - oost 2 met een toegewezen subnet:

    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. Maak het tweede VNet in VS - oost, ook met een toegewezen subnet:

     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
    

    Notitie

    We voegen expliciet verschillende IP-adresbereiken toe om ervoor te zorgen dat er geen fouten optreden wanneer peering wordt uitgevoerd.

  5. Koppel het eerste VNet aan het tweede 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. Als u de twee VNets wilt verbinden, maakt u een andere peering tussen het tweede VNet en het eerste:

    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
    

    Notitie

    Als u meer regio's toevoegt, vereist elk VNet peering van het naar alle andere VNets en van alle andere VNets.

  7. Controleer de uitvoer van de vorige opdracht. Zorg ervoor dat de waarde van 'peeringState' nu 'Verbonden' is. U kunt dit resultaat ook controleren door de volgende opdracht uit te voeren:

    az network vnet peering show \
      --name MyVnet1ToMyVnet2 \
      --resource-group cassandra-mi-multi-region \
      --vnet-name vnetEastUs2 \
      --query peeringState
    
  8. Enkele speciale machtigingen toepassen op beide virtuele netwerken. Voor Azure Managed Instance voor Apache Cassandra zijn deze machtigingen vereist. Voer de volgende opdracht uit. Vervang <SubscriptionID> door uw abonnements-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
    

    Notitie

    De assignee waarden in role de vorige opdracht zijn vaste waarden. Voer deze waarden precies in zoals in de opdracht.

Als er fouten optreden tijdens het uitvoeren az role assignment create, hebt u mogelijk geen machtigingen om deze uit te voeren. Neem contact op met uw beheerder voor machtigingen.

Een cluster met meerdere regio's maken

  1. Implementeer de clusterresource. Vervang door <Subscription ID> uw abonnements-id. De implementatie kan vijf tot 10 minuten duren:

    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. Nadat de clusterresource is gemaakt, kunt u een datacenter maken. Maak eerst een datacenter in VS - oost 2. Vervang door <SubscriptionID> uw abonnements-id. Deze actie kan maximaal 10 minuten duren:

    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. Maak een datacenter in VS - oost. Vervang door <SubscriptionID> uw abonnements-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
    

    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. Zie SLA voor Azure Managed Instance voor Apache Cassandra 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 Azure-regio's met beschikbaarheidszones 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.

  4. Zodra het tweede datacenter is gemaakt, haalt u de knooppuntstatus op om te controleren of alle Cassandra-knooppunten zijn opgehaald:

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    
    az managed-cassandra cluster status\
       --cluster-name $clusterName \
       --resource-group $resourceGroupName
    
  5. Maak vervolgens verbinding met uw cluster met behulp van CQLSH en gebruik de volgende CQL-query om de replicatiestrategie in elke keyspace bij te werken om alle datacenters in het cluster op te nemen (systeemtabellen worden automatisch bijgewerkt):

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
    
  6. Als u ten slotte een datacenter toevoegt aan een cluster waar al gegevens zijn, moet u worden uitgevoerd rebuild om de historische gegevens te repliceren. In dit geval gaan we ervan uit dat het dc-eastus2 datacenter al gegevens bevat. Voer in Azure CLI de onderstaande opdracht uit om op elk knooppunt in uw nieuwe dc-eastus datacenter uit te voerennodetool rebuild, waarbij u <ip address> het IP-adres van het knooppunt vervangt:

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

    Waarschuwing

    U mag toepassingsclients pas naar het nieuwe datacenter schrijven als u keyspace-replicatiewijzigingen hebt toegepast. Anders werkt het opnieuw opbouwen niet en moet u een ondersteuningsaanvraag maken, zodat ons team namens u kan worden uitgevoerd repair .

Probleemoplossing

Als er een fout optreedt bij het toepassen van machtigingen voor uw virtuele netwerk met behulp van Azure CLI, kunt u dezelfde machtiging handmatig toepassen vanuit Azure Portal. Een voorbeeldfout is: Kan de gebruiker of service-principal niet vinden in de grafiekdatabase voor 'e5007d2c-4b13-4a74-9b6a-605d99f03501'. Zie Azure Portal gebruiken om een Azure Cosmos DB-service-principal toe te voegen voor meer informatie.

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

Als u dit beheerde exemplaarcluster niet meer gaat gebruiken, verwijdert u het met de volgende stappen:

  1. Selecteer resourcegroepen in het linkermenu van Azure Portal.
  2. Selecteer de resourcegroep die u eerder voor deze quickstart hebt gemaakt uit de lijst.
  3. Selecteer Resourcegroep verwijderen in het deelvenster Overzicht van de resourcegroep.
  4. Selecteer in het volgende venster de naam van de resourcegroep die u wilt verwijderen en selecteer vervolgens Verwijderen.

Volgende stappen

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