Snabbstart: Skapa en Azure Managed Instance för Apache Cassandra-kluster med Azure CLI
Azure Managed Instance för Apache Cassandra är en fullständigt hanterad tjänst för rena Apache Cassandra-kluster med öppen källkod. Tjänsten tillåter också att konfigurationer åsidosätts, beroende på de specifika behoven för varje arbetsbelastning, vilket ger maximal flexibilitet och kontroll där det behövs.
Den här snabbstarten visar hur du använder Azure CLI-kommandon för att skapa ett kluster med Azure Managed Instance för Apache Cassandra. Den visar också hur du skapar ett datacenter och skalar noder uppåt eller nedåt i datacentret.
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Azure Virtual Network med anslutning till din lokala eller lokala miljö. Mer information om hur du ansluter lokala miljöer till Azure finns i artikeln Anslut ett lokalt nätverk till Azure .
Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
Viktigt!
Den här artikeln kräver Azure CLI version 2.30.0 eller senare. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.
Skapa ett kluster för hanterad instans
Logga in på Azure-portalen
Ange ditt prenumerations-ID i Azure CLI:
az account set -s <Subscription_ID>
Skapa sedan ett virtuellt nätverk med ett dedikerat undernät i resursgruppen:
az network vnet create -n <VNet_Name> -l eastus2 -g <Resource_Group_Name> --subnet-name <Subnet Name>
Kommentar
Distributionen av en Azure Managed Instance för Apache Cassandra kräver internetåtkomst. Distributionen misslyckas i miljöer där Internetåtkomst är begränsad. Kontrollera att du inte blockerar åtkomsten i ditt virtuella nätverk till följande viktiga Azure-tjänster som krävs för att Managed Cassandra ska fungera korrekt:
- Azure Storage
- Azure KeyVault
- Azure Virtual Machine Scale Sets
- Azure Monitoring
- Microsoft Entra ID
- Säkerhet i Azure
Tillämpa vissa särskilda behörigheter på det virtuella nätverket, som krävs av den hanterade instansen.
az role assignment create
Använd kommandot och ersätt<subscriptionID>
,<resourceGroupName>
och<vnetName>
med lämpliga värden: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>
Kommentar
Värdena
assignee
ochrole
i föregående kommando är fasta värden. Ange dessa värden exakt som anges i kommandot . Om du inte gör det uppstår fel när klustret skapas. Om du får några fel när du kör det här kommandot kanske du inte har behörighet att köra det. Kontakta administratören om du vill ha behörighet.Skapa sedan klustret i det nya virtuella nätverket med kommandot az managed-cassandra cluster create . Kör följande kommando värdet för
delegatedManagementSubnetId
variabeln:Kommentar
Värdet för variabeln
delegatedManagementSubnetId
som du anger nedan är exakt samma som värdet--scope
för den som du angav i kommandot ovan: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='3.11' # 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
Skapa slutligen ett datacenter för klustret, med tre noder, Standard D8s v4 VM SKU, med 4 P30-diskar anslutna för varje nod, med hjälp av kommandot 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
Kommentar
Värdet för
--sku
kan väljas från följande tillgängliga SKU:er:- 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
Observera också att
--availability-zone
är inställt påfalse
. Om du vill aktivera tillgänglighetszoner anger du detta tilltrue
. Tillgänglighetszoner ökar tjänstens serviceavtal för tillgänglighet. Mer information finns i den fullständiga SLA-informationen här.Varning
Tillgänglighetszoner stöds inte i alla regioner. Distributioner misslyckas om du väljer en region där tillgänglighetszoner inte stöds. Se här för regioner som stöds. Den lyckade distributionen av tillgänglighetszoner är också beroende av tillgängligheten för beräkningsresurser i alla zoner i den angivna regionen. Distributioner kan misslyckas om den SKU som du har valt eller kapaciteten inte är tillgänglig i alla zoner.
När datacentret har skapats kör du kommandot az managed-cassandra datacenter update om du vill skala upp eller skala ned noderna i datacentret. Ändra värdet
node-count
för parametern till önskat värde: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
Ansluta till klustret
Azure Managed Instance för Apache Cassandra skapar inte noder med offentliga IP-adresser. Om du vill ansluta till det nyligen skapade Cassandra-klustret måste du skapa en annan resurs i det virtuella nätverket. Den här resursen kan vara ett program eller en virtuell dator med Apaches frågeverktyg med öppen källkod CQLSH installerat. Du kan använda en Resource Manager-mall för att distribuera en virtuell Ubuntu-dator.
Ansluta från CQLSH
När den virtuella datorn har distribuerats använder du SSH för att ansluta till datorn och installera CQLSH enligt följande kommandon:
# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre
# Install the Cassandra libraries in order to get CQLSH:
echo "deb http://archive.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra
# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false
# Connect to CQLSH (replace <IP> with the private IP addresses of a node in your Datacenter):
host=("<IP>")
initial_admin_password="Password provided when creating the cluster"
cqlsh $host 9042 -u cassandra -p $initial_admin_password --ssl
Ansluta från ett program
Precis som med CQLSH kräver anslutning från ett program med någon av apache Cassandra-klientdrivrutinerna som stöds att SSL-kryptering aktiveras och certifieringsverifiering inaktiveras. Se exempel för att ansluta till Azure Managed Instance för Apache Cassandra med Java, .NET, Node.js och Python.
Inaktivera certifikatverifiering rekommenderas eftersom certifikatverifiering inte fungerar om du inte mappar I.P-adresser för dina klusternoder till rätt domän. Om du har en intern princip som kräver att du utför SSL-certifikatverifiering för alla program kan du underlätta detta genom att lägga till poster som 10.0.1.5 host1.managedcassandra.cosmos.azure.com
i din värdfil för varje nod. Om du använder den här metoden måste du också lägga till nya poster när du skalar upp noder.
För Java rekommenderar vi också starkt att du aktiverar spekulativ körningsprincip där program är känsliga för svarstid. Du hittar en demo som illustrerar hur detta fungerar och hur du aktiverar principen här.
Kommentar
I de allra flesta fall bör det inte vara nödvändigt att konfigurera eller installera certifikat (rootCA, nod eller klient, förtroendearkiv osv.) för att ansluta till Azure Managed Instance för Apache Cassandra. SSL-kryptering kan aktiveras med hjälp av standardförtroendearkivet och lösenordet för den körning som används av klienten (se Java, .NET, Node.js och Python-exempel ), eftersom Azure Managed Instance för Apache Cassandra-certifikat kommer att vara betrodda av den miljön. Om certifikatet i sällsynta fall inte är betrott kan du behöva lägga till det i förtroendearkivet.
Konfigurera klientcertifikat (valfritt)
Det är valfritt att konfigurera klientcertifikat. Ett klientprogram kan ansluta till Azure Managed Instance för Apache Cassandra så länge ovanstående steg har vidtagits. Men om du vill kan du även skapa och konfigurera klientcertifikat för autentisering. I allmänhet finns det två sätt att skapa certifikat:
- Självsignerade certifikat. Det innebär ett privat och offentligt certifikat (ingen CA) för varje nod – i det här fallet behöver vi alla offentliga certifikat.
- Certifikat signerade av en certifikatutfärdare. Det här kan vara en självsignerad ca eller till och med en offentlig. I det här fallet behöver vi rotcertifikatutfärdarcertifikatet (se anvisningar om hur du förbereder SSL-certifikat för produktion) och alla mellanhänder (om tillämpligt).
Om du vill implementera certifikatautentisering från klient till nod eller ömsesidig transportnivåsäkerhet (mTLS) måste du ange certifikaten via Azure CLI. Kommandot nedan laddar upp och tillämpar dina klientcertifikat på förtroendearkivet för ditt Cassandra Managed Instance-kluster (dvs. du behöver inte redigera cassandra.yaml
inställningar). När det har tillämpats kräver klustret att Cassandra verifierar certifikaten när en klient ansluter (se require_client_auth: true
i 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
Felsökning
Om du får ett fel när du tillämpar behörigheter på ditt virtuella nätverk med Azure CLI, till exempel Det går inte att hitta användaren eller tjänstens huvudnamn i grafdatabasen för "e5007d2c-4b13-4a74-9b6a-605d99f03501", kan du använda samma behörighet manuellt från Azure-portalen. Lär dig hur du gör detta här.
Kommentar
Rolltilldelningen i Azure Cosmos DB används endast i distributionssyfte. Azure Managed Instanced för Apache Cassandra har inga serverdelsberoenden i Azure Cosmos DB.
Rensa resurser
När det inte längre behövs kan du använda az group delete
kommandot för att ta bort resursgruppen, den hanterade instansen och alla relaterade resurser:
az group delete --name <Resource_Group_Name>
Nästa steg
I den här snabbstarten har du lärt dig hur du skapar ett Azure Managed Instance för Apache Cassandra-kluster med hjälp av Azure CLI. Nu kan du börja arbeta med klustret: