Snabbstart: Konfigurera ett hybridkluster med Azure Managed Instance för Apache Cassandra

Azure Managed Instance för Apache Cassandra tillhandahåller automatiserade distributions- och skalningsåtgärder för hanterade Apache Cassandra-datacenter med öppen källkod. Den här tjänsten hjälper dig att påskynda hybridscenarier och minska pågående underhåll.

Den här snabbstarten visar hur du använder Azure CLI-kommandon för att konfigurera ett hybridkluster. Om du har befintliga datacenter i en lokal eller lokal miljö kan du använda Azure Managed Instance för Apache Cassandra för att lägga till andra datacenter i klustret och underhålla dem.

Förutsättningar

  • Använd bash-miljön i Azure Cloud Shell.

    Starta Cloud Shell i ett nytt fönster

  • Om du vill kan du i stället installera Azure CLI för att köra CLI-referenskommandon.

    • 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. Fler inloggningsalternativ finns i Logga in med Azure CLI.

    • När du uppmanas till det installerar du Azure CLI-tillägg vid första användning. 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.

Konfigurera ett hybridkluster

  1. Logga in på Azure Portal och gå till din Virtual Network resurs.

  2. Öppna fliken Undernät och skapa ett nytt undernät. Mer information om fälten i formuläret Lägg till undernät finns i Virtual Network artikeln:

    Lägg till ett nytt undernät i Virtual Network.

    Anteckning

    Distributionen av en Hanterad Azure-instans för Apache Cassandra kräver Internetåtkomst. Distributionen misslyckas i miljöer där Internetåtkomsten är begränsad. Kontrollera att du inte blockerar åtkomsten i ditt VNet till följande viktiga Azure-tjänster som krävs för att Managed Cassandra ska fungera korrekt. Du hittar också en omfattande lista över IP-adresser och portberoenden här.

    • Azure Storage
    • Azure KeyVault
    • Azure Virtual Machine Scale Sets
    • Azure Monitoring
    • Azure Active Directory
    • Säkerhet i Azure
  3. Nu ska vi tillämpa vissa särskilda behörigheter för det virtuella nätverket och undernätet som Cassandra Managed Instance kräver med hjälp av Azure CLI. Använd kommandot az role assignment create och ersätt , och med lämpliga <subscriptionID> <resourceGroupName> <vnetName> 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>
    

    Anteckning

    Värdena assignee och i föregående kommando är fasta role tjänstprinciper respektive rollidentifierare.

  4. Nu ska vi konfigurera resurser för vårt hybridkluster. Eftersom du redan har ett kluster är klusternamnet här bara en logisk resurs för att identifiera namnet på ditt befintliga kluster. Se till att använda namnet på ditt befintliga kluster när du clusterName clusterNameOverride definierar variablerna och i följande skript.

    Du behöver också, som minst, startpunktsnoderna från ditt befintliga datacenter och de certifikat som krävs för nod-till-nod-kryptering. Azure Managed Instance för Apache Cassandra kräver nod-till-nod-kryptering för kommunikation mellan datacenter. Om du inte har implementerat nod-till-nod-kryptering i ditt befintliga kluster måste du implementera det. Mer information finns i dokumentationen här. Du bör ange sökvägen till platsen för certifikaten. Varje certifikat ska vara i PEM-format, t.ex. -----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE----- . I allmänhet finns det två sätt att implementera certifikat:

    1. Själv signerade 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.

    2. Certifikat som signerats av en certifikatutfärdare. Detta kan vara en själv signerad certifikatutfärdare eller till och med en offentlig certifikatutfärdare. I det här fallet behöver vi rotcertifikatutfärdarcertifikatet (se anvisningarna om hur du förbereder SSL-certifikatför produktion ) och alla eventuella eventuella fall av en katastrof.

    Om du också har implementerat klient-till-nod-certifikat (se här ),måste du också ange dem i samma format när du skapar hybridklustret. Se exemplet nedan.

    Anteckning

    Värdet för delegatedManagementSubnetId variabeln som du kommer att ange nedan är exakt samma som värdet --scope för som du angav i kommandot ovan:

    resourceGroupName='MyResourceGroup'
    clusterName='cassandra-hybrid-cluster-legal-name'
    clusterNameOverride='cassandra-hybrid-cluster-illegal-name'
    location='eastus2'
    delegatedManagementSubnetId='/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>'
    
    # You can override the cluster name if the original name is not legal for an Azure resource:
    # overrideClusterName='ClusterNameIllegalForAzureResource'
    # the default cassandra version will be v3.11
    
    az managed-cassandra cluster create \
      --cluster-name $clusterName \
      --resource-group $resourceGroupName \
      --location $location \
      --delegated-management-subnet-id $delegatedManagementSubnetId \
      --external-seed-nodes 10.52.221.2 10.52.221.3 10.52.221.4 \
      --external-gossip-certificates /usr/csuser/clouddrive/rootCa.pem /usr/csuser/clouddrive/gossipKeyStore.crt_signed
      # optional - add your existing datacenter's client-to-node certificates (if implemented):
      # --client-certificates /usr/csuser/clouddrive/rootCa.pem /usr/csuser/clouddrive/nodeKeyStore.crt_signed 
    

    Anteckning

    Om klustret redan har kryptering från nod till nod och klient-till-nod bör du veta var din befintliga klient och/eller dina SSL-certifikat förvaras. Om du är osäker bör du kunna köra för keytool -list -keystore <keystore-path> -rfc -storepass <password> att skriva ut certifikaten.

  5. När klusterresursen har skapats kör du följande kommando för att hämta information om klusterinstallationen:

    resourceGroupName='MyResourceGroup'
    clusterName='cassandra-hybrid-cluster'
    
    az managed-cassandra cluster show \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName \
    
  6. Föregående kommando returnerar information om den hanterade instansmiljön. Du behöver certifikaten så att du kan installera dem i förtroendearkivet för noder i ditt befintliga datacenter. Följande skärmbild visar utdata från föregående kommando och certifikatformatet:

    Hämta certifikatinformationen från klustret.

    Anteckning

    Certifikaten som returneras från kommandot ovan innehåller radbrytningar som representeras som text, till exempel \r\n . Du bör kopiera varje certifikat till en fil och formatera det innan du försöker importera det till det befintliga datacentrets förtroendelager.

    Tips

    Kopiera matrisvärdet som visas i skärmbilden ovan till en fil och använd följande bash-skript (du måste ladda ned och installera jq för din plattform) för att formatera certifikaten och skapa separata pem-filer för var och gossipCertificates en.

    readarray -t cert_array < <(jq -c '.[]' gossipCertificates.txt)
    # iterate through the certs array, format each cert, write to a numbered file.
    num=0
    filename=""
    for item in "${cert_array[@]}"; do
      let num=num+1
      filename="cert$num.pem"
      cert=$(jq '.pem' <<< $item)
      echo -e $cert >> $filename
      sed -e '1d' -e '$d' -i $filename
    done
    
  7. Skapa sedan ett nytt datacenter i hybridklustret. Ersätt variabelvärdena med klusterinformationen:

    resourceGroupName='MyResourceGroup'
    clusterName='cassandra-hybrid-cluster'
    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 9 
      --sku $virtualMachineSKU \
      --disk-capacity $noOfDisksPerNode \
      --availability-zone false
    

    Anteckning

    Värdet för kan --sku 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 till true . 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. Här kan du se vilka regioner som stöds. En lyckad distribution av tillgänglighetszoner beror också på 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.

  8. Nu när det nya datacentret har skapats kör du kommandot show datacenter för att visa dess information:

    resourceGroupName='MyResourceGroup'
    clusterName='cassandra-hybrid-cluster'
    dataCenterName='dc1'
    
    az managed-cassandra datacenter show \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --data-center-name $dataCenterName 
    
  9. Föregående kommando matar ut det nya datacentrets start seed-noder:

    Hämta information om datacenter.

  10. Lägg nu till det nya datacentrets startpunktsnoder i det befintliga datacentrets startpunktsnodkonfiguration i filen cassandra.yaml. Och installera certifikaten för hanterad instans som du samlade in tidigare till förtroendearkivet för varje nod i ditt befintliga kluster med hjälp av kommandot keytool för varje certifikat:

    keytool -importcert -keystore generic-server-truststore.jks -alias CassandraMI -file cert1.pem -noprompt -keypass myPass -storepass truststorePass
    

    Anteckning

    Om du vill lägga till fler datacenter kan du upprepa stegen ovan, men du behöver bara start startnoderna.

  11. Använd slutligen följande CQL-fråga för att uppdatera replikeringsstrategin i varje nyckelutrymme så att alla datacenter ingår i klustret:

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3};
    

    Du måste också uppdatera lösenordstabellerna:

    ALTER KEYSPACE "system_auth" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3}
    

Felsökning

Om du stöter på ett fel när du tillämpar behörigheter på din Virtual Network med Azure CLI, till exempel Cannot find user or service principal in graph database for 'e5007d2c-4b13-4a74-9b6a-605d99f03501', kan du tillämpa samma behörighet manuellt från Azure Portal. Lär dig hur du gör detta här.

Anteckning

Den Azure Cosmos DB rolltilldelningen används endast i distributionssyfte. Azure Managed Instanced för Apache Cassandra har inga backend-beroenden på Azure Cosmos DB.

Rensa resurser

Om du inte tänker fortsätta använda det här hanterade instansklustret tar du bort det med följande steg:

  1. På den vänstra menyn i Azure Portal väljer du Resursgrupper.
  2. I listan väljer du den resursgrupp som du skapade för den här snabbstarten.
  3. I fönstret Översikt för resursgruppen väljer du Ta bort resursgrupp.
  4. I nästa fönster anger du namnet på den resursgrupp som ska tas bort och väljer sedan Ta bort.

Nästa steg

I den här snabbstarten har du lärt dig hur du skapar ett hybridkluster med hjälp av Azure CLI och Azure Managed Instance för Apache Cassandra. Nu kan du börja arbeta med klustret.