Rychlý start: Vytvoření clusteru Azure Managed Instance for Apache Cassandra pomocí Azure CLI

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 tam, kde je to potřeba.

Tento rychlý start ukazuje, jak pomocí příkazů Azure CLI vytvořit cluster se službou Azure Managed Instance for Apache Cassandra. Ukazuje také vytvoření datacentra a vertikální navýšení nebo snížení kapacity uzlů v rámci datacentra.

Požadavky

Důležité

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

Vytvoření clusteru spravovaných instancí

  1. Přihlaste se k portálu Azure Portal.

  2. Nastavení ID předplatného v Azure CLI:

    az account set -s <Subscription_ID>
    
  3. Dále ve skupině prostředků vytvořte virtuální síť s vyhrazenou podsítí:

    az network vnet create -n <VNet_Name> -l eastus2 -g <Resource_Group_Name> --subnet-name <Subnet Name>
    

    Poznámka:

    Nasazení spravované instance Azure pro 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 neblokujete přístup ve vaší virtuální síti k následujícím důležitým službám Azure, které jsou nezbytné pro správné fungování spravované Cassandry:

    • Azure Storage
    • Azure KeyVault
    • Azure Virtual Machine Scale Sets
    • Monitorování Azure
    • Microsoft Entra ID
    • Zabezpečení Azure
  4. U virtuální sítě použijte určitá zvláštní oprávnění, která vyžaduje spravovaná instance. 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 hodnoty v předchozím příkazu jsou pevné hodnoty, zadejte tyto hodnoty přesně tak, jak je uvedeno v příkazu. Pokud to neuděláte, při vytváření clusteru dojde k chybám. Pokud při provádění tohoto příkazu dojde k nějakým chybám, možná nemáte oprávnění ke spuštění, obraťte se na správce a požádejte ho o oprávnění.

  5. Dále vytvořte cluster v nově vytvořené virtuální síti pomocí příkazu az managed-cassandra cluster create . Spusťte následující příkaz s hodnotou delegatedManagementSubnetId proměnné:

    Poznámka:

    Hodnota proměnné, delegatedManagementSubnetId kterou zadáte níže, je úplně stejná jako hodnota --scope , kterou jste zadali v předchozím příkazu:

    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='3.11' # 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. Nakonec vytvořte pro cluster datové centrum se třemi uzly, skladovou jednotkou virtuálního počítače Standard D8s v4 s připojenými disky 4 P30 pro každý uzel pomocí příkazu 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
    

    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

    Všimněte si také, že --availability-zone je nastavena na false. Pokud chcete povolit zóny dostupnosti, nastavte ho na truehodnotu . Zóny dostupnosti zvyšují smlouvu SLA o dostupnosti služby. Další podrobnosti najdete v úplných podrobnostech smlouvy SLA.

    Upozorňující

    Zóny dostupnosti nejsou podporovány ve všech oblastech. Pokud vyberete oblast, ve které nejsou zóny dostupnosti podporované, nasazení se nezdaří. Informace o podporovaných oblastech najdete tady . Ú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.

  7. Po vytvoření datacentra, pokud chcete vertikálně navýšit kapacitu nebo snížit kapacitu uzlů v datacentru, spusťte příkaz az managed-cassandra datacenter update . Změňte hodnotu node-count parametru na požadovanou hodnotu:

    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
    

Připojení do clusteru

Azure Managed Instance for Apache Cassandra nevytváří uzly s veřejnými IP adresami. Pokud se chcete připojit k nově vytvořenému clusteru Cassandra, musíte ve virtuální síti vytvořit další prostředek. Tento prostředek může být aplikace nebo virtuální počítač s nainstalovaným opensourcovým dotazovacím nástrojem CQLSH apache. K nasazení virtuálního počítače s Ubuntu můžete použít šablonu Resource Manageru.

Připojení z CQLSH

Po nasazení virtuálního počítače se pomocí SSH připojte k počítači a nainstalujte CQLSH, jak je znázorněno v následujících příkazech:

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

# Install the Cassandra libraries in order to get CQLSH:
echo "deb http://archive.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra

# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false

# Connect to CQLSH (replace <IP> with the private IP addresses of a node in your Datacenter):
host=("<IP>")
initial_admin_password="Password provided when creating the cluster"
cqlsh $host 9042 -u cassandra -p $initial_admin_password --ssl

Připojení z aplikace

Stejně jako u CQLSH se připojení z aplikace pomocí některého z podporovaných klientských ovladačů Apache Cassandra vyžaduje povolení šifrování SSL a zakázání ověření certifikace. Podívejte se na ukázky pro připojení ke službě Azure Managed Instance for Apache Cassandra pomocí Javy, .NET, Node.js a Pythonu.

Zakázání ověření certifikátu se doporučuje, protože ověření certifikátu nebude fungovat, pokud nenamapujete adresy I.P uzlů clusteru na příslušnou doménu. Pokud máte interní zásady, které vyžadují ověření certifikátu SSL pro libovolnou aplikaci, můžete to usnadnit přidáním položek, jako je 10.0.1.5 host1.managedcassandra.cosmos.azure.com v souboru hostitelů pro každý uzel. Při tomto přístupu byste také museli přidávat nové položky při vertikálním navýšení kapacity uzlů.

Pro Javu také důrazně doporučujeme povolit spekulativní zásady spouštění, kde jsou aplikace citlivé na koncovou latenci. Tady najdete ukázku, která ilustruje, jak to funguje a jak tuto zásadu povolit.

Poznámka:

Ve většině případů by nemělo být nutné konfigurovat ani instalovat certifikáty (rootCA, node nebo client, truststores atd.) pro připojení ke službě Azure Managed Instance for Apache Cassandra. Šifrování SSL je možné povolit pomocí výchozího úložiště důvěryhodnosti a hesla modulu runtime používaného klientem (viz java, .NET, Node.js a ukázky Pythonu), protože certifikáty Azure Managed Instance for Apache Cassandra budou pro toto prostředí důvěryhodné. Ve výjimečných případech, pokud certifikát není důvěryhodný, možná ho budete muset přidat do důvěryhodného úložiště.

Konfigurace klientských certifikátů (volitelné)

Konfigurace klientských certifikátů je volitelná. Klientská aplikace se může připojit ke službě Azure Managed Instance for Apache Cassandra, pokud byly provedeny výše uvedené kroky. Pokud ale chcete, můžete také vytvořit a nakonfigurovat klientské certifikáty pro ověřování. Obecně platí, že existují dva způsoby vytváření certifikátů:

  • Certifikáty podepsané svým držitelem To znamená privátní a veřejný certifikát (bez certifikační autority) pro každý uzel – v tomto případě potřebujeme všechny veřejné certifikáty.
  • Certifikáty podepsané certifikační autoritou Může se jednat o certifikační autoritu podepsanou svým držitelem nebo dokonce veřejnou certifikační autoritu. V tomto případě potřebujeme kořenový certifikát certifikační autority (viz pokyny k přípravě certifikátů SSL pro produkční prostředí) a všechny zprostředkovatele (pokud je to možné).

Pokud chcete implementovat ověřování certifikátů mezi klientem a uzlem nebo vzájemné zabezpečení mTLS (Transport Layer Security), musíte certifikáty zadat prostřednictvím Azure CLI. Následující příkaz nahraje a použije klientské certifikáty na úložiště důvěryhodnosti pro cluster spravované instance Cassandra (tj. nemusíte upravovat cassandra.yaml nastavení). Po použití bude cluster vyžadovat, aby Cassandra ověřil certifikáty, když se klient připojí (viz cassandra require_client_auth: trueclient_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

Řešení problému

Pokud při použití oprávnění pro vaši virtuální síť pomocí Azure CLI dojde k chybě, například nejde najít uživatele nebo instanční objekt v grafové databázi e5007d2c-4b13-4a74-9b6a-605d99f03501, můžete stejné oprávnění použít ručně z webu Azure Portal. Tady se dozvíte, jak to udělat.

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 už nepotřebujete, můžete pomocí az group delete příkazu odebrat skupinu prostředků, spravovanou instanci a všechny související prostředky:

az group delete --name <Resource_Group_Name>

Další kroky

V tomto rychlém startu jste zjistili, jak vytvořit cluster Azure Managed Instance for Apache Cassandra pomocí Azure CLI. Teď můžete začít pracovat s clusterem: