Avvio rapido: Creare un cluster in più aree con Azure Istanza gestita per Apache Cassandra

Azure Istanza gestita per Apache Cassandra è un servizio completamente gestito per cluster Apache Cassandra open source puri. Il servizio consente anche di eseguire l'override delle configurazioni, a seconda delle esigenze specifiche di ogni carico di lavoro, consentendo la massima flessibilità e controllo dove necessario.

Questa guida introduttiva illustra come usare i comandi dell'interfaccia della riga di comando di Azure per configurare un cluster in più aree in Azure.

Prerequisiti

  • Questo articolo richiede l'interfaccia della riga di comando di Azure versione 2.30.0 o successiva. Se si usa Azure Cloud Shell, la versione più recente è già installata.

  • Azure Rete virtuale con connettività all'ambiente self-hosted o locale. Per altre informazioni sulla connessione di ambienti locali ad Azure, vedere l'articolo Connessione una rete locale ad Azure.

Configurare l'ambiente di rete

Poiché tutti i data center di cui è stato effettuato il provisioning con questo servizio devono essere distribuiti in subnet dedicate usando l'inserimento della rete virtuale, configurare il peering di rete appropriato in anticipo rispetto alla distribuzione. Per questa guida introduttiva, creare un cluster con due data center in aree separate: Stati Uniti orientali e Stati Uniti orientali 2. Creare prima di tutto le reti virtuali per ogni area.

  1. Accedere al portale di Azure.

  2. Creare un gruppo di risorse denominato cassandra-mi-multi-region:

    az group create --location eastus2 --name cassandra-mi-multi-region
    
  3. Creare la prima rete virtuale negli Stati Uniti orientali 2 con una subnet dedicata:

    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. Creare la seconda rete virtuale negli Stati Uniti orientali anche con una subnet dedicata:

     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
    

    Nota

    Vengono aggiunti in modo esplicito intervalli di indirizzi IP diversi per garantire che non si verificano errori durante il peering.

  5. Eseguire il peering della prima rete virtuale alla seconda rete virtuale:

    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. Per connettere le due reti virtuali, creare un altro peering tra la seconda rete virtuale e la prima:

    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
    

    Nota

    Se si aggiungono altre aree, ogni rete virtuale richiede il peering da essa a tutte le altre reti virtuali e da tutte le altre reti virtuali.

  7. Controllare l'output del comando precedente. Assicurarsi che il valore di "peeringState" sia ora "Connessione ed". È anche possibile controllare questo risultato eseguendo il comando seguente:

    az network vnet peering show \
      --name MyVnet1ToMyVnet2 \
      --resource-group cassandra-mi-multi-region \
      --vnet-name vnetEastUs2 \
      --query peeringState
    
  8. Applicare alcune autorizzazioni speciali a entrambe le Rete virtuale. Azure Istanza gestita per Apache Cassandra richiede queste autorizzazioni. Esegui il comando seguente: Sostituire <SubscriptionID> con l'ID sottoscrizione:

    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
    

    Nota

    I assignee valori e role nel comando precedente sono valori fissi. Immettere questi valori esattamente come nel comando .

Se si verificano errori durante l'esecuzione az role assignment createdi , è possibile che non si disponga delle autorizzazioni necessarie per eseguirla. Rivolgersi all'amministratore per ottenere le autorizzazioni.

Creare un cluster in più aree

  1. Distribuire la risorsa cluster. Sostituire <Subscription ID> con l'ID della sottoscrizione. La distribuzione può richiedere da cinque a 10 minuti:

    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. Dopo aver creato la risorsa cluster, si è pronti per creare un data center. Creare prima di tutto un data center negli Stati Uniti orientali 2. Sostituire <SubscriptionID> con l'ID della sottoscrizione. Questa azione può richiedere fino a 10 minuti:

    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. Creare un data center negli Stati Uniti orientali. Sostituire <SubscriptionID> con l'ID della sottoscrizione.

    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
    

    Nota

    Il valore per --sku può essere scelto dagli SKU disponibili seguenti:

    • 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

    Notare anche che --availability-zone è impostata su false. Per abilitare le zone di disponibilità, impostare su true. Le zone di disponibilità aumentano il contratto di servizio per la disponibilità del servizio. Per altre informazioni, vedere Contratto di servizio per Azure Istanza gestita per Apache Cassandra.

    Avviso

    Le zone di disponibilità non sono supportate in tutte le aree. Le distribuzioni hanno esito negativo se si seleziona un'area in cui le zone di disponibilità non sono supportate. Per le aree supportate, vedere Aree di Azure con zone di disponibilità.

    La corretta distribuzione delle zone di disponibilità è soggetta anche alla disponibilità delle risorse di calcolo in tutte le zone dell'area specificata. Le distribuzioni potrebbero non riuscire se lo SKU selezionato o la capacità non è disponibile in tutte le zone.

  4. Dopo aver creato il secondo data center, ottenere lo stato del nodo per verificare che tutti i nodi Cassandra siano stati visualizzati correttamente:

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    
    az managed-cassandra cluster node-status \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName
    
  5. Connettersi quindi al cluster usando CQLSH e usare la query CQL seguente per aggiornare la strategia di replica in ogni keyspace per includere tutti i data center nel cluster (le tabelle di sistema verranno aggiornate automaticamente):

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
    
  6. Infine, se si aggiunge un data center a un cluster in cui sono già presenti dati, sarà necessario eseguire rebuild per replicare i dati cronologici. In questo caso, si presuppone che il dc-eastus2 data center disponga già di dati. Nell'interfaccia della riga di comando di Azure eseguire il comando seguente per eseguire nodetool rebuild in ogni nodo del nuovo dc-eastus data center, sostituendo <ip address> con l'indirizzo IP del nodo:

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

    Avviso

    Non è consigliabile consentire ai client dell'applicazione di scrivere nel nuovo data center fino a quando non sono state applicate modifiche alla replica keyspace. In caso contrario, la ricompilazione non funzionerà e sarà necessario creare una richiesta di supporto in modo che il team possa essere eseguito repair per conto dell'utente.

Risoluzione dei problemi

Se si verifica un errore durante l'applicazione delle autorizzazioni al Rete virtuale usando l'interfaccia della riga di comando di Azure, è possibile applicare manualmente la stessa autorizzazione dal portale di Azure. Un errore di esempio potrebbe essere Impossibile trovare l'utente o l'entità servizio nel database a grafo per 'e5007d2c-4b13-4a74-9b6a-605d99f03501'. Per altre informazioni, vedere Usare portale di Azure per aggiungere un'entità servizio di Azure Cosmos DB.

Nota

L'assegnazione di ruolo di Azure Cosmos DB viene usata solo a scopo di distribuzione. Azure Istanza gestita d per Apache Cassandra non ha dipendenze back-end in Azure Cosmos DB.

Pulire le risorse

Se non si intende continuare a usare questo cluster di istanza gestita, eliminarlo con la procedura seguente:

  1. Nel menu a sinistra di portale di Azure selezionare Gruppi di risorse.
  2. Selezionare nell'elenco il gruppo di risorse creato in questa guida di avvio rapido.
  3. Nel riquadro Panoramica del gruppo di risorse selezionare Elimina gruppo di risorse.
  4. Nella finestra successiva immettere il nome del gruppo di risorse da eliminare e quindi selezionare Elimina.

Passaggi successivi

In questa guida introduttiva si è appreso come creare un cluster in più aree usando l'interfaccia della riga di comando di Azure e Azure Istanza gestita per Apache Cassandra. È ora possibile iniziare a usare il cluster.