Avvio rapido: Creare un cluster in più aree con Azure Istanza gestita per Apache Cassandra
Istanza gestita di Azure 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
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido su Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
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 Connettere 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.
Accedere al portale di Azure.
Creare un gruppo di risorse denominato cassandra-mi-multi-region:
az group create --location eastus2 --name cassandra-mi-multi-region
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
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.
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
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.
Controllare l'output del comando precedente. Assicurarsi che il valore di "peeringState" sia ora "Connesso". È 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
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 erole
nel comando precedente sono valori fissi. Immettere questi valori esattamente come nel comando .
Se si verificano errori durante l'esecuzione az role assignment create
di , è possibile che non si disponga delle autorizzazioni necessarie per eseguirla. Rivolgersi all'amministratore per ottenere le autorizzazioni.
Creare un cluster in più aree
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
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
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 sufalse
. Per abilitare le zone di disponibilità, impostare sutrue
. 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 la capacità o lo SKU selezionato non è disponibile in tutte le zone.
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
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};
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 ildc-eastus2
data center disponga già di dati. Nell'interfaccia della riga di comando di Azure eseguire il comando seguente per eseguirenodetool rebuild
in ogni nodo del nuovodc-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 applicazioni di scrivere nel nuovo data center finché non sono state applicate modifiche alla replica del keyspace. In caso contrario, la ricompilazione non funzionerà e sarà necessario creare una richiesta di supporto in modo che il team possa eseguire
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 ai fini della distribuzione. Istanza gestita di Azure per Apache Cassandra non ha dipendenze back-end da Azure Cosmos DB.
Pulire le risorse
Se non si intende continuare a usare questo cluster di Istanza gestita, eliminarlo con la procedura seguente:
- Nel menu a sinistra del portale di Azure selezionare Gruppi di risorse.
- Selezionare nell'elenco il gruppo di risorse creato in questa guida di avvio rapido.
- Nel riquadro Panoramica del gruppo di risorse selezionare Elimina gruppo di risorse.
- 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.