Sdílet prostřednictvím


Rychlý start: Konfigurace hybridního clusteru se službou Azure Managed Instance pro Apache Cassandra

Azure Managed Instance for Apache Cassandra je plně spravovaná služba pro čistě opensourcové clustery Apache Cassandra. Služba také umožňuje přepsání konfigurací v závislosti na konkrétních potřebách jednotlivých úloh, což umožňuje maximální flexibilitu a kontrolu v případě potřeby.

Tento rychlý start ukazuje, jak pomocí příkazů Azure CLI nakonfigurovat hybridní cluster. Pokud máte existující datacentra v lokálním nebo vlastním prostředí, můžete pomocí služby Azure Managed Instance for Apache Cassandra přidat do těchto clusterů další datacentra a spravovat je.

Požadavky

  • Azure CLI verze 2.30.0 nebo vyšší Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.

  • Azure Virtual Network s připojením k místnímu nebo místnímu prostředí. Další informace o připojení místních prostředí k Azure najdete v tématu Připojení místní sítě k Azure.

Konfigurace hybridního clusteru

  1. Přihlaste se k webu Azure Portal a přejděte k prostředku virtuální sítě.

  2. Otevřete kartu Podsítě a vytvořte novou podsíť. Další informace o polích ve formuláři Přidané podsítě najdete v tématu Přidání podsítě.

    Snímek obrazovky ukazuje možnost přihlášení a přidání nové podsítě do vaší virtuální sítě.

    Poznámka:

    Nasazení služby Azure Managed Instance for Apache Cassandra vyžaduje přístup k internetu. Nasazení selže v prostředích, kde je omezený přístup k internetu. Ujistěte se, že ve vaší virtuální síti neblokujete přístup k následujícím důležitým službám Azure, které jsou nezbytné pro správné fungování spravované Cassandry. Seznam závislostí IP adres a portů najdete v tématu Požadovaná pravidla odchozí sítě.

    • Azure Storage
    • Azure KeyVault
    • Škálovací sady virtuálních strojů Azure
    • Monitorování Azure
    • Microsoft Entra ID
    • Zabezpečení Azure
  3. Pomocí Azure CLI použijte speciální oprávnění pro virtuální síť a podsíť, které vyžaduje spravovaná instance Cassandra. az role assignment create Použijte příkaz, nahraďte <subscriptionID><resourceGroupName><vnetName> a nahraďte příslušnými hodnotami:

    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>
    

    Poznámka:

    Hodnoty assignee a role v předchozím příkazu jsou pevné identifikátory hlavní služby a rolí.

  4. Nakonfigurujte prostředky pro náš hybridní cluster. Vzhledem k tomu, že už cluster máte, je název clusteru logickým prostředkem, který identifikuje název existujícího clusteru. Při definování clusterName a clusterNameOverride proměnných v následujícím skriptu nezapomeňte použít název existujícího clusteru.

    Potřebujete také minimálně počáteční uzly z vašeho stávajícího datacentra a certifikáty gossip vyžadované pro šifrování mezi uzly. Azure Managed Instance for Apache Cassandra vyžaduje šifrování mezi uzly a uzly pro komunikaci mezi datovými centry. Pokud ve stávajícím clusteru nemáte implementované šifrování node-to-node, implementujte ho. Další informace najdete v tématu Šifrování node-to-node. Zadejte cestu k umístění certifikátů. Každý certifikát by měl být ve formátu PEM, -----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE-----například . Obecně platí, že existují dva způsoby implementace certifikátů:

    • Certifikáty podepsané svým držitelem Privátní a veřejný certifikát (bez certifikační autority) pro každý uzel. V takovém případě potřebujete všechny veřejné certifikáty.

    • Certifikáty podepsané certifikační autoritou Tento certifikát může být certifikační autorita podepsaná svým držitelem nebo dokonce veřejná. V tomto případě potřebujeme kořenový certifikát certifikační autority a všechny zprostředkovatele, pokud je to možné. Další informace naleznete v tématu Příprava certifikátů SSL pro produkční prostředí.

    Pokud chcete také implementovat ověřování certifikátů typu klient-uzel nebo vzájemné zabezpečení mTLS (Transport Layer Security), zadejte certifikáty ve stejném formátu jako při vytváření hybridního clusteru. Podívejte se na ukázku Azure CLI dále v tomto článku. Certifikáty jsou k dispozici v parametru --client-certificates .

    Tento přístup nahraje a aplikuje klientské certifikáty do úložiště důvěryhodných certifikátů pro vaši spravovanou instanci klastru Cassandra. To znamená, že nemusíte upravovat nastavení cassandra.yaml . Jakmile se použije, klastr vyžaduje, aby Cassandra ověřila certifikáty při připojení klienta. Viz require_client_auth: true v klientských možnostech šifrování v Cassandra.

    Poznámka:

    Hodnota proměnné, delegatedManagementSubnetId kterou zadáte v tomto kódu, je stejná jako hodnota --scope , kterou jste zadali v předchozím příkazu:

    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 isn't 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
    

    Poznámka:

    Pokud už váš cluster obsahuje šifrování node-to-node a client-to-node, měli byste vědět, kde se uchovávají stávající klient a/nebo gossip certifikáty SSL. Pokud si nejste jistí, spusťte keytool -list -keystore <keystore-path> -rfc -storepass <password> tisk certifikátů.

  5. Po vytvoření prostředku clusteru spusťte následující příkaz a získejte podrobnosti o nastavení clusteru:

    resourceGroupName='MyResourceGroup'
    clusterName='cassandra-hybrid-cluster'
    
    az managed-cassandra cluster show \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName \
    
  6. Předchozí příkaz vrátí informace o prostředí spravované instance. Certifikáty gossip potřebujete, abyste je mohli nainstalovat do úložiště důvěryhodnosti pro uzly ve stávajícím datacentru. Následující snímek obrazovky ukazuje výstup předchozího příkazu a formát certifikátů:

    Snímek obrazovky ukazuje výsledek získání podrobností o certifikátu z clusteru.

    Poznámka:

    Certifikáty vrácené z předchozího příkazu obsahují konce řádků reprezentované jako text, například \r\n. Před pokusem o import do stávajícího úložiště důvěryhodnosti byste měli každý certifikát zkopírovat do souboru a naformátovat ho.

    Návod

    gossipCertificates Zkopírujte hodnotu pole zobrazenou na snímku obrazovky do souboru a pomocí následujícího skriptu Bash naformátujte certifikáty a vytvořte pro každou z nich samostatné soubory pem. Pokud si chcete stáhnout skript Bash, přečtěte si téma Stažení jq pro vaši platformu.

    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 's/^"//' -e 's/"$//' -i $filename
    done
    
  7. Dále vytvořte nové datové centrum v hybridním clusteru. Nahraďte hodnoty proměnných podrobnostmi o clusteru:

    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
    

    Poznámka:

    Hodnotu lze --sku vybrat z následujících dostupných skladových položek:

    • 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

    Hodnota --availability-zone je nastavena na false. Pokud chcete povolit zóny dostupnosti, nastavte tuto hodnotu na true. Zóny dostupnosti zvyšují smlouvu SLA o dostupnosti služby. Další informace najdete v tématu SLA pro online služby.

    Upozorňující

    Zóny dostupnosti nejsou podporované ve všech oblastech. Pokud vyberete oblast, ve které nejsou zóny dostupnosti podporované, nasazení se nezdaří. Podporované oblasti najdete v seznamu oblastí Azure.

    Úspěšné nasazení zón dostupnosti podléhá také dostupnosti výpočetních prostředků ve všech zónách v dané oblasti. Nasazení může selhat, pokud vybraná skladová položka nebo kapacita není dostupná ve všech zónách.

  8. Teď, když je nové datové centrum vytvořené, spusťte příkaz show datacenter a zobrazte jeho podrobnosti:

    resourceGroupName='MyResourceGroup'
    clusterName='cassandra-hybrid-cluster'
    dataCenterName='dc1'
    
    az managed-cassandra datacenter show \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --data-center-name $dataCenterName
    
  9. Předchozí příkaz zobrazí počáteční uzly nového datacentra:

    Snímek obrazovky s získáte podrobnosti o datacentru.

  10. Přidejte počáteční uzly nového datacentra do konfigurace počátečního uzlu stávajícího datacentra do souboru cassandra.yaml . Nainstalujte certifikáty gossip pro spravované instance, které jste dříve shromáždili, do úložiště důvěryhodnosti pro každý uzel ve vašem stávajícím clusteru, pomocí příkazu keytool pro každý certifikát.

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

    Poznámka:

    Pokud chcete přidat další datová centra, můžete zopakovat předchozí kroky, ale potřebujete jenom počáteční uzly.

    Důležité

    Pokud váš existující cluster Apache Cassandra má pouze jedno datové centrum a toto datové centrum je první, které přidáváte, ujistěte se, že parametr endpoint_snitch v cassandra.yaml je nastaven na hodnotu GossipingPropertyFileSnitch.

    Důležité

    Pokud váš stávající kód aplikace používá k zajištění konzistence kvorum, ujistěte se, že před změnou nastavení replikace v dalším kroku se stávající kód aplikace používá LOCAL_QUORUM pro připojení k existujícímu clusteru. Jinak živé aktualizace selžou po změně nastavení replikace v následujícím kroku. Po změně strategie replikace se můžete vrátit k KVORU, pokud je to preferované.

  11. Nakonec pomocí následujícího dotazu CQL aktualizujte strategii replikace v jednotlivých prostorech klíčů tak, aby zahrnovala všechna datová centra v clusteru:

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

    Musíte také aktualizovat několik systémových tabulek:

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

    Důležité

    Pokud datová centra ve vašem existujícím clusteru nevynucují šifrování typu klient-uzel (SSL) a máte v úmyslu připojit se přímo ke spravované instanci Cassandra, musíte v kódu aplikace povolit také SSL.

Použití hybridního clusteru k migraci v reálném čase

Předchozí pokyny obsahují pokyny ke konfiguraci hybridního clusteru. Tento přístup je také skvělým způsobem, jak dosáhnout bezproblémové migrace bez výpadků. Následující postup spočívá v migraci místního nebo jiného prostředí Cassandra, které chcete vyřadit z provozu s nulovým výpadkem, do služby Azure Managed Instance for Apache Cassandra.

  1. Konfigurace hybridního clusteru Postupujte podle předchozích pokynů.

  2. Během migrace dočasně zakažte automatické opravy ve službě Azure Managed Instance for Apache Cassandra:

    az managed-cassandra cluster update \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName --repair-enabled false
    
  3. V Azure CLI použijte následující příkaz ke spuštění nodetool rebuild na každém uzlu v novém datovém centru Azure Managed Instance for Apache Cassandra, nahrazením <ip address> IP adresou uzlu a <sourcedc> názvem vašeho stávajícího datového centra, ze kterého migrujete:

    az managed-cassandra cluster invoke-command \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --host <ip address> \
      --command-name nodetool --arguments rebuild="" "<sourcedc>"=""
    

    Tento příkaz byste měli spustit až po provedení všech předchozích kroků. Tento přístup by měl zajistit, aby se všechna historická data replikovala do nových datových center ve službě Azure Managed Instance for Apache Cassandra. Opětovné sestavení můžete spustit na jednom nebo více uzlech současně. Spusťte na jednom uzlu současně, abyste snížili dopad na existující cluster. Spusťte na více uzlech, když cluster dokáže zpracovat dodatečný vstupně-výstupní a síťový tlak. U většiny instalací můžete spustit pouze jeden nebo dva paralelně, aby cluster nepřetěžel.

    Upozorňující

    Při spuštění nodetool rebuildje nutné zadat zdrojové datové centrum. Pokud při prvním pokusu zadáte datové centrum nesprávně, dojde k zkopírování rozsahů tokenů bez kopírování dat pro nesystémové tabulky. Následné pokusy selžou i v případě, že datové centrum zadáte správně. Tento problém můžete vyřešit odstraněním položek pro každý nesystémový prostor klíčů ve system.available_ranges pomocí nástroje pro dotazování cqlsh ve vašem cílovém datovém centru Cassandra MI.

    delete from system.available_ranges where keyspace_name = 'myKeyspace';
    
  4. Převeďte kód aplikace tak, aby odkazoval na počáteční uzly ve vašich nových datových centrech Azure Managed Instance for Apache Cassandra.

    Důležité

    Jak je uvedeno také v pokynech k hybridnímu nastavení, pokud datová centra ve vašem existujícím clusteru nevynucují šifrování typu klient-uzel (SSL), povolte tuto funkci v kódu aplikace, protože spravovaná instance Cassandra tento požadavek vynucuje.

  5. Spusťte ALTER KEYSPACE pro každý klíčový prostor stejným způsobem jako dříve, ale nyní odstraňte stará datová centra.

  6. Spusťte nástroj node decommission pro každý starý uzel datového centra.

  7. Pokud je to nutné nebo preferované, přepněte kód své aplikace zpět na kvorum.

  8. Znovu povolte automatické opravy:

    az managed-cassandra cluster update \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName --repair-enabled true
    

Řešení problému

Pokud při použití oprávnění k virtuální síti pomocí Azure CLI dojde k chybě, můžete stejné oprávnění použít ručně z webu Azure Portal. Příkladem takové chyby je nenaleznutí uživatele nebo instančního objektu v grafové databázi e5007d2c-4b13-4a74-9b6a-605d99f03501. Další informace najdete v tématu Použití portálu Azure k přidání hlavního objektu služby Azure Cosmos DB.

Poznámka:

Přiřazení role Azure Cosmos DB se používá jenom pro účely nasazení. Spravovaná instance Azure pro Apache Cassandra nemá žádné závislosti back-endu ve službě Azure Cosmos DB.

Vyčištění prostředků

Pokud nebudete dál používat tento cluster spravovaných instancí, odstraňte ho pomocí následujících kroků:

  1. V levé nabídce webu Azure Portal vyberte skupiny prostředků.
  2. V seznamu vyberte skupinu prostředků, kterou jste vytvořili pro účely tohoto rychlého startu.
  3. V podokně Přehled skupiny prostředků vyberte Odstranit skupinu prostředků.
  4. V dalším okně zadejte název skupiny prostředků, která se má odstranit, a pak vyberte Odstranit.

Další krok