Dela via


Snabbstart: Skapa en Azure Managed Instance för Apache Cassandra-kluster med hjälp av 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, för maximal flexibilitet och kontroll.

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 upp eller ned noder i datacentret.

Förutsättningar

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

  1. Logga in på Azure-portalen.

  2. Ange ditt prenumerations-ID i Azure CLI:

    az account set --subscription <Subscription_ID>
    
  3. Skapa ett virtuellt nätverk med ett dedikerat undernät i resursgruppen:

    az network vnet create --name <VNet_Name> --location eastus2 \
      --resource-group <Resource_Group_Name> --subnet-name <Subnet Name>
    

    Distributionen av en instans av 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 Azure-tjänster som krävs för att Azure Managed Instance ska fungera korrekt för Apache Cassandra:

    • Azure Storage
    • Azure 密钥保管库
    • Skalningsuppsättningar för virtuella Azure-datorer
    • Azure Monitor
    • Microsoft Entra ID
    • Microsoft Defender för molnet
  4. Tillämpa dessa specifika behörigheter på det virtuella nätverket. Den hanterade instansen kräver dem. 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>
    

    Värdena assignee och role är fasta värden. Ange dessa värden exakt som anges i kommandot . Att inte göra det leder till fel när du skapar klustret. Om du får fel när du kör det här kommandot kanske du inte har behörighet att köra det. Kontakta Azure-administratören om du vill ha behörigheter.

  5. Skapa klustret i det nya virtuella nätverket med kommandot az managed-cassandra cluster create . Kör följande kommando med värdet för variabeln delegatedManagementSubnetId . (Värdet delegatedManagementSubnetId för är samma namn på det virtuella nätverket som behörigheterna tillämpades för.)

    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='5.0' # 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
    
  6. Skapa ett datacenter för klustret med tre virtuella datorer (VM). Använd följande konfiguration:

    • VM-storlek: Standard E8s v5
    • Datadiskar: 4 P30-diskar som är anslutna till var och en av de virtuella datorer som distribueras

    När all information är på plats använder du 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
    

    Välj värdet för --sku från följande tillgängliga VM-storlekar:

    • Standard_E8s_v5
    • Standard_E16s_v5
    • Standard_E20s_v5
    • Standard_E32s_v5

    Som standard är --availability-zone inställt på false. Om du vill aktivera tillgänglighetszoner ställer du in den på true. Tillgänglighetszoner bidrar till att öka tillgängligheten för tjänsten. Mer information finns i Servicenivåavtal för onlinetjänster.

    Tillgänglighetszoner stöds inte i alla Azure-regioner. Distributioner misslyckas om du väljer en region där tillgänglighetszoner inte stöds. Information om regioner som stöds finns i listan över Azure-regioner.

    Den lyckade distributionen av tillgänglighetszoner beror på tillgängligheten för beräkningsresurser i alla zoner i den region som du har valt. Distributioner misslyckas om den vm-storlek som du valde inte är tillgänglig i den region som du har valt.

  7. När datacentret har skapats kan du köra kommandot az managed-cassandra datacenter update för att skala ned eller skala upp klustret. Ändra värdet för parametern node-count till det värde du vill ha:

    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 ditt nya Cassandra-kluster måste du skapa en annan resurs i samma virtuella nätverk. Den här resursen kan vara ett program eller en virtuell dator med Cassandra Query Language Shell (CQLSH) installerat. CQLSH är ett Apache-frågeverktyg med öppen källkod.

Du kan använda en Azure Resource Manager-mall för att distribuera en virtuell Ubuntu-dator.

På grund av några kända problem med versioner av Python rekommenderar vi att du använder en Ubuntu 22.04-avbildning som medföljer Python3.10.12 eller en virtuell Python-miljö för att köra CQLSH.

Ansluta från CQLSH

När den virtuella datorn har distribuerats använder du Secure Shell för att ansluta till datorn och installera CQLSH. Använd följande kommandon:

# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre

Kontrollera vilka versioner av Cassandra som fortfarande stöds och välj den version du behöver. Vi rekommenderar att du använder en stabil version.

Installera Cassandra-biblioteken för att hämta CQLSH. Följ de officiella stegen i Cassandra-dokumentationen.

Ansluta från ett program

Precis som med CQLSH måste TLS/SSL-kryptering (Transport Layer Security/Secure Sockets Layer) aktiveras när du använder någon av apache Cassandra-klientdrivrutinerna som stöds för att ansluta från ett program. Certifikatverifiering måste inaktiveras. Exempel finns i Java, .NET, Node.jsoch Python.

Vi rekommenderar att du inaktiverar certifikatverifiering eftersom det inte fungerar om du inte mappar IP-adresser för dina klusternoder till rätt domän. Om en intern princip kräver att du utför TLS/SSL-certifikatverifiering för alla program lägger du till poster som 10.0.1.5 host1.managedcassandra.cosmos.azure.com i värdfilen för varje nod för att underlätta den här installationen. 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 att du aktiverar policyn för spekulativ exekvering där applikationer är känsliga för sluttidslatens. En demo som illustrerar hur den här metoden fungerar och hur du aktiverar principen finns i Implementera spekulativ körningsprincip.

Du behöver vanligtvis inte konfigurera certifikat (till exempel rootCA, node, clienteller truststore) för att ansluta till Azure Managed Instance för Apache Cassandra. TLS/SSL-kryptering använder standard-certifikatlager och klientens valda driftlösenord. Exempelkod finns i Java, .NET, Node.jsoch Python). Certifikat är betrodda som standard. Annars lägger du till dem i betroendebutiken.

Konfigurera klientcertifikat (valfritt)

Det är valfritt att konfigurera klientcertifikat. Ett klientprogram kan ansluta till Azure Managed Instance för Apache Cassandra när du har följt föregående steg. Om du vill kan du också skapa och konfigurera klientcertifikat för autentisering. I allmänhet finns det två sätt att skapa certifikat:

  • Självsignerade certifikat: Privata och offentliga certifikat utan certifikatutfärdare (CA) för varje nod. I det här fallet krävs alla offentliga certifikat.
  • Certifikat som signerats av en certifikatutfärdare: Certifikat som utfärdats av en självsignerad certifikatutfärdare eller en offentlig certifikatutfärdare. För den här konfigurationen behöver du rot CA-certifikatet och eventuella mellanliggande certifikat, om tillämpligt. Mer information finns i Förbereda SSL-certifikat för produktion.

Om du vill implementera certifikatautentisering från klient till nod eller ömsesidig transportnivåsäkerhet anger du certifikaten med hjälp av Azure CLI. Följande kommando laddar upp och tillämpar dina klientcertifikat till förtroendearkivet för ditt Azure Managed Instance för Apache Cassandra-kluster. Du behöver inte ändra cassandra.yaml inställningarna. När certifikaten har tillämpats kräver klustret att Cassandra verifierar certifikaten under klientanslutningarna. Mer information require_client_auth: true finns 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 hjälp av Azure CLI kan du använda samma behörighet manuellt från Azure-portalen. Ett exempel på ett sådant fel är "Det går inte att hitta användaren eller tjänstens huvudnamn i grafdatabasen för e5007d2c-4b13-4a74-9b6a-605d99f03501" Mer information finns i Använda Azure-portalen för att lägga till Tjänstens huvudnamn för Azure Cosmos DB.

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 resursen az group delete inte längre behövs använder du 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: