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

  • Använd ett virtuellt nätverk för Azure med anslutning till din självhostade eller lokala miljö. Mer information om hur du ansluter lokala miljöer till Azure finns i Anslut ett lokalt nätverk till Azure.
  • Om du inte har någon Azure prenumeration skapar du ett free-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 en hanterad instanskluster

  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. Se till att du inte blockerar åtkomsten i det virtuella nätverket till följande Azure tjänster som krävs för Azure Managed Instance för att Apache Cassandra ska fungera korrekt:

    • Azure Storage
    • Azure Key Vault
    • Azure Virtual Machine Scale Sets
    • 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 din Azure administratör 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. Vid beräkning av lagringskapacitet förutsätter vi en maximal varaktig användning på 50%. Den här bufferten står för tombstones och diskanvändning för systemtjänster. Dessutom förbrukar säkerhetskopieringar tillfälligt diskutrymme innan data sparas i Blob Storage.

    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 online služby.

    Tillgänglighetszoner stöds inte i alla Azure regioner. Distributioner misslyckas om du väljer en region där tillgänglighetszoner inte stöds. För regioner som stöds, se listan Azure regions.

    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 vissa known-problem med versioner av Python rekommenderar vi att du använder en Ubuntu 22.04-avbildning som medföljer Python3.10.12 eller en Python virtuell 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.js och 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 speculative execution policy där program är känsliga för svarstid. En demo som illustrerar hur den här metoden fungerar och hur du aktiverar principen finns i Implement spekulativ körningsprincip.

Du behöver vanligtvis inte konfigurera certifikat (till exempel rootCA, node, client eller 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.js och 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 på förtroendearkivet för ditt Azure Managed Instance för Apache Cassandra-klustret. 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ändarens eller tjänstens huvudnamn i grafdatabasen för e5007d2c-4b13-4a74-9b6a-605d99f03501." Mer information finns i Använd Azure-portalen för att lägga till Azure Cosmos DB tjänstens huvudnamn.

Den Azure Cosmos DB rolltilldelningen används endast i distributionssyfte. Azure Managed Instanced för Apache Cassandra har inga serverdelsberoenden på 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 en Azure Managed Instance för Apache Cassandra-kluster med hjälp av Azure CLI. Nu kan du börja arbeta med klustret: