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 pro maximální flexibilitu a kontrolu.

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

  • Tento článek vyžaduje Azure CLI verze 2.30.0 nebo novější. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
  • Použijte virtuální síť Azure s připojením k vašemu vlastní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. Vyberte kartu Podsítě a vytvořte novou podsíť. Další informace o polích ve formuláři Přidat podsíť najdete v tématu Přidání podsítě.

    Snímek obrazovky znázorňující možnost přihlášení a přidání nové podsítě do virtuální sítě

    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í služby Azure Managed Instance for Apache Cassandra. Seznam závislostí IP adres a portů najdete v tématu Požadovaná pravidla odchozí sítě.

    • Azure Storage
    • Azure Key Vault
    • Škálovací sady virtuálních strojů Azure
    • Azure Monitor
    • Microsoft Entra ID
    • Microsoft Defender for Cloud
  3. Použití některých speciálních oprávnění pro virtuální síť a podsíť, kterou azure Managed Instance for Apache Cassandra vyžaduje, pomocí Azure CLI. Použijte příkaz az role assignment create. <resourceGroupName>Nahraďte <subscriptionID>, a <vnetName> odpovídající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>
    

    Hodnoty assignee a role v předchozím příkazu jsou pevné servisní identifikátory a identifikátory rolí.

  4. Nakonfigurujte prostředky pro hybridní cluster. Protože už cluster máte, název clusteru je logický prostředek, který identifikuje název existujícího clusteru. Název existujícího clusteru použijte při definování clusterName a clusterNameOverride proměnných v následujícím skriptu.

    Potřebujete také minimálně výchozí uzly z vašeho stávajícího datacentra a gossip certifikáty, které jsou nutné 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, musíte ho implementovat. 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 (Privacy Enhanced Mail), například -----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE-----. Obecně platí, že existují dva způsoby implementace certifikátů:

    • Certifikáty podepsané svým držitelem Privátní a veřejné certifikáty bez certifikační autority (CA) pro každý uzel. V takovém případě potřebujete všechny veřejné certifikáty.
    • Certifikáty podepsané certifikační autoritou Certifikáty vydané certifikační autoritou podepsané svým držitelem nebo veřejnou certifikační autoritou. V takovém případě potřebujete 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 (Secure Sockets Layer) pro produkční prostředí.

    Pokud chcete implementovat ověřování certifikátu typu klient-uzel nebo vzájemné zabezpečení TLS (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 vaše klientské certifikáty do důvěryhodného úložiště pro klastr Azure Managed Instance pro Apache Cassandra. Nemusíte upravovat cassandra.yaml nastavení. Po použití certifikátů vyžaduje cluster Cassandra k ověření certifikátů při připojení klienta. Další informace najdete require_client_auth: true v client_encryption_options Cassandra.

    Hodnota delegatedManagementSubnetId proměnné, 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
    

    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 nebo certifikáty TLS/SSL. Pokud si nejste jistí, spusťte keytool -list -keystore <keystore-path> -rfc -storepass <password> příkaz k vytištění 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 znázorňující výsledek získání podrobností o certifikátu z clusteru

    Certifikáty vrácené z předchozího příkazu obsahují konce řádků, které jsou reprezentovány jako text. Příklad: \r\n. Před pokusem o import do existujícího úložiště důvěryhodnosti zkopírujte každý certifikát do souboru a naformátujte ho.

    gossipCertificates Zkopírujte hodnotu pole zobrazenou na snímku obrazovky do souboru. K formátování certifikátů a vytvoření samostatných souborů PEM pro každý z nich použijte následující skript Bash. 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
    

    Vyberte hodnotu --sku z následujících dostupných úrovní produktu:

    • 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í úroveň dohody o dostupnosti služeb (SLA). Další informace najdete v SLA pro online služby.

    Zóny dostupnosti nejsou podporované ve všech oblastech. Nasazení selžou, pokud vyberete oblast, ve které nejsou zóny dostupnosti podporované. 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 konkrétní oblasti. Nasazení můžou selhat, pokud vybraná úroveň produktu nebo kapacita není dostupná ve všech zónách.

  8. Teď, když je nové datové centrum vytvořené, spusťte datacenter show příkaz 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
    

    Předchozí příkaz zobrazí počáteční uzly nového datacentra.

    Snímek obrazovky znázorňující, jak získat podrobnosti datového centra

  9. 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 spravované instance gossip certifikáty, které jste shromáždili dříve do úložiště důvěryhodnosti pro každý uzel ve stávajícím clusteru. keytool Použijte příkaz pro každý certifikát:

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

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

    Důležité

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

    Pokud váš stávající kód aplikace používá QUORUM pro konzistenci, ujistěte se, že před změnou nastavení replikace v dalším kroku váš stávající kód aplikace používá LOCAL_QUORUM k 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, pokud chcete, vrátit k QUORUM.

  10. Nakonec pomocí následujícího dotazu Dotazovacího jazyka Cassandra 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}
    

    Pokud datacentra ve vašem existujícím clusteru nevynucují šifrování SSL (client-to-node) a máte v úmyslu připojit se přímo ke službě Azure Managed Instance for Apache Cassandra, musíte v kódu aplikace povolit také protokol TLS/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 ukazuje, jak migrovat místní nebo jiné 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 datacentru Azure Managed Instance for Apache Cassandra. Nahraďte <ip address> IP adresou uzlu. Nahraďte <sourcedc> názvem stávajícího datacentra, 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 spusťte 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 datacenter ve službě Azure Managed Instance for Apache Cassandra. Můžete běžet rebuild na jednom nebo více uzlech současně. Spusťte na jednom uzlu najednou, abyste snížili vliv 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 paralelně spustit jenom jednu nebo dvě, abyste cluster nepřetížil.

    Upozorňující

    Při spuštění nodetool rebuildje nutné zadat zdroj data center . Pokud při prvním pokusu nesprávně zadáte datacentrum, oblasti tokenů se zkopírují bez kopírování dat pro nesystémové tabulky. Následné pokusy selžou, i když datacentrum zadáte správně. Pokud chcete tento problém vyřešit, odstraňte položky pro každý nesystémový klíčový prostor system.available_ranges pomocí nástroje pro dotazování cqlsh v cílovém datacentru Azure Managed Instance for Apache Cassandra.

    delete from system.available_ranges where keyspace_name = 'myKeyspace';
    
  4. Přesměrujte kód své aplikace, aby odkazoval na seed uzly v nových datových centrech Azure Managed Instance for Apache Cassandra.

    Jak je uvedeno také v pokynech k hybridnímu nastavení, pokud datacentra ve vašem existujícím clusteru nevynucují šifrování ssl (client-to-node), povolte tuto funkci v kódu aplikace. Azure Managed Instance for Apache Cassandra vynucuje tento požadavek.

  5. Spusťte ALTER KEYSPACE pro každý prostor klíčů stejným způsobem jako dříve. Teď můžete odebrat stará datacentra.

  6. Spusťte příkaz node tool decommission pro každý starý uzel datacentra.

  7. V případě potřeby přepněte kód aplikace zpátky na QUORUM.

  8. Opětovné povolení automatických oprav:

    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í pro virtuální síť 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 "Nelze najít uživatele nebo instanční objekt v grafové databázi pro e5007d2c-4b13-4a74-9b6a-605d99f03501." Další informace najdete v tématu Použití webu Azure Portal k přidání instančního objektu služby Azure Cosmos DB.

Přiřazení role Azure Cosmos DB se používá jenom pro účely nasazení. Spravovaná instance Azure pro Apache Cassandra nemá žádné back-endové závislosti 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 následujícím postupem:

  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 podokně zadejte název skupiny prostředků, která se má odstranit, a pak vyberte Odstranit.

Další krok