Quickstart: Een hybride cluster configureren met Azure Managed Instance voor Apache Cassandra
Azure Managed Instance voor Apache Cassandra biedt geautomatiseerde implementatie- en schaalbewerkingen voor beheerde opensource Apache Cassandra-datacenters. Deze service helpt u bij het versnellen van hybride scenario's en het verminderen van doorlopend onderhoud.
In deze quickstart wordt gedemonstreerd hoe u de Azure CLI-opdrachten gebruikt om een hybride cluster te configureren. Als u bestaande datacenters hebt in een on-premises of zelf-hostende omgeving, kunt u Azure Managed Instance voor Apache Cassandra gebruiken om andere datacenters toe te voegen aan dat cluster en deze te onderhouden.
Vereisten
Gebruik de bash-omgeving in Azure Cloud shell.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht AZ login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij de Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
Voor dit artikel is azure CLI versie 2.30.0 of hoger vereist. Als u een Azure Cloud Shell, is de meest recente versie al geïnstalleerd.
Azure Virtual Network connectiviteit met uw zelf-hostende of on-premises omgeving. Zie het artikel over het verbinden van on-premises omgevingen Verbinding maken een on-premises netwerk met Azure voor meer informatie over het verbinden van on-premises omgevingen met Azure.
Een hybride cluster configureren
Meld u aan bij de Azure Portal navigeer naar uw Virtual Network resource.
Open het tabblad Subnetten en maak een nieuw subnet. Zie het volgende artikel voor meer informatie over de velden in het Virtual Network subnet toevoegen:
Notitie
Voor de implementatie van een azure managed instance voor Apache Cassandra is internettoegang vereist. De implementatie mislukt in omgevingen waarin internettoegang is beperkt. Zorg ervoor dat u de toegang binnen uw VNet niet blokkeert tot de volgende essentiële Azure-services die nodig zijn om beheerde Cassandra goed te laten werken. U vindt hier ook een uitgebreide lijst met IP-adres- en poortafhankelijkheden.
- Azure Storage
- Azure KeyVault
- Microsoft Azure Virtual Machine Scale Sets
- Azure Monitoring
- Azure Active Directory
- Azure-beveiliging
Nu gaan we een aantal speciale machtigingen toepassen op het VNet en subnet dat door Cassandra beheerd exemplaar is vereist, met behulp van Azure CLI. Gebruik de opdracht , en te
az role assignment createvervangen door de juiste<subscriptionID><resourceGroupName><vnetName>waarden: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>Notitie
De
assigneewaarden en in de vorige opdracht zijn respectievelijk vasteroleservice-principe en rol-id's.Vervolgens configureren we resources voor ons hybride cluster. Omdat u al een cluster hebt, is de clusternaam hier alleen een logische resource om de naam van uw bestaande cluster te identificeren. Zorg ervoor dat u de naam van uw bestaande cluster gebruikt bij het definiëren van
clusterNamevariabelen en in het volgendeclusterNameOverridescript.U hebt ook minimaal de seed-knooppunten van uw bestaande datacenter en de certificaatcertificaten nodig voor versleuteling van knooppunt-naar-knooppunt. Azure Managed Instance voor Apache Cassandra vereist knooppunt-naar-knooppuntversleuteling voor communicatie tussen datacenters. Als u geen knooppunt-naar-knooppuntversleuteling hebt geïmplementeerd in uw bestaande cluster, moet u dit implementeren. Zie de documentatie hier. U moet het pad naar de locatie van de certificaten leveren. Elk certificaat moet de PEM-indeling hebben, bijvoorbeeld
-----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE-----. Over het algemeen zijn er twee manieren om certificaten te implementeren:Zelf-ondertekende certificaten. Dit betekent een persoonlijk en openbaar (geen CA)-certificaat voor elk knooppunt. In dit geval hebben we alle openbare certificaten nodig.
Certificaten die zijn ondertekend door een CA. Dit kan een zelf-ondertekende CA of zelfs een openbare ca zijn. In dit geval hebben we het basis-CA-certificaat nodig (raadpleeg de instructies voor het voorbereiden van SSL-certificatenvoor productie) en alle intermediairs (indien van toepassing).
Als u ook client-naar-knooppuntcertificaten hebt geïmplementeerd (zie hier ),moet u deze ook in dezelfde indeling leveren bij het maken van het hybride cluster. Zie het voorbeeld hieronder.
Notitie
De waarde van de variabele die u hieronder oplevert, is precies hetzelfde als de waarde van die u hebt opgegeven
delegatedManagementSubnetId--scopein de bovenstaande opdracht: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_signedNotitie
Als uw cluster al versleuteling van knooppunt-naar-knooppunt en client-naar-knooppunt heeft, moet u weten waar uw bestaande client- en/of SSL-certificaten worden bewaard. Als u twijfelt, moet u kunnen uitvoeren om
keytool -list -keystore <keystore-path> -rfc -storepass <password>de certificaten af te drukken.Nadat de clusterresource is gemaakt, moet u de volgende opdracht uitvoeren om de installatiedetails van het cluster op te halen:
resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' az managed-cassandra cluster show \ --cluster-name $clusterName \ --resource-group $resourceGroupName \De vorige opdracht retourneert informatie over de omgeving van het beheerde exemplaar. U hebt de certificaatcertificaten nodig, zodat u ze kunt installeren in het vertrouwensopslag voor knooppunten in uw bestaande datacenter. In de volgende schermopname ziet u de uitvoer van de vorige opdracht en de indeling van certificaten:
Notitie
De certificaten die worden geretourneerd met de bovenstaande opdracht bevatten regelafbreaks die worden weergegeven als tekst, bijvoorbeeld
\r\n. Kopieer elk certificaat naar een bestand en maak het op voordat u het in het vertrouwensopslag van uw bestaande datacenter importeert.Tip
Kopieer de matrixwaarde die wordt weergegeven in de bovenstaande schermafbeelding naar een bestand en gebruik het volgende bash-script (u moet jq downloaden en installeren voor uw platform) om de certificaten op te maken en afzonderlijke PEM-bestanden voor elk certificaat te
gossipCertificatesmaken.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 doneMaak vervolgens een nieuw datacenter in het hybride cluster. Zorg ervoor dat u de variabele waarden vervangt door uw clusterdetails:
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 falseNotitie
De waarde voor
--skukan worden gekozen uit de volgende beschikbare SKU's:- 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
Houd er ook rekening
--availability-zonemee dat is ingesteld opfalse. Als u beschikbaarheidszones wilt inschakelen, stelt u deze in optrue. Beschikbaarheidszones verhogen de SLA voor beschikbaarheid van de service. Bekijk hier de volledige SLA-details voor meer informatie.Waarschuwing
Beschikbaarheidszones worden niet in alle regio's ondersteund. Implementaties mislukken als u een regio selecteert waarin beschikbaarheidszones niet worden ondersteund. Kijk hier voor ondersteunde regio's. De geslaagde implementatie van beschikbaarheidszones is ook afhankelijk van de beschikbaarheid van rekenresources in alle zones in de opgegeven regio. Implementaties kunnen mislukken als de SKU die u hebt geselecteerd, of capaciteit, niet beschikbaar is in alle zones.
Nu het nieuwe datacenter is gemaakt, kunt u de opdracht datacenter weergeven uitvoeren om de details ervan weer te geven:
resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' dataCenterName='dc1' az managed-cassandra datacenter show \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterNameMet de vorige opdracht worden de seed-knooppunten van het nieuwe datacenter uitgevoerd:
Voeg nu de seed-knooppunten van het nieuwe datacenter toe aan de seed-knooppuntconfiguratie van uw bestaande datacenter in het cassandra.yaml-bestand. En installeer de certificaatcertificaten voor beheerde exemplaren die u eerder hebt verzameld in het vertrouwensopslag voor elk knooppunt in uw bestaande cluster, met behulp van de opdracht
keytoolvoor elk certificaat:keytool -importcert -keystore generic-server-truststore.jks -alias CassandraMI -file cert1.pem -noprompt -keypass myPass -storepass truststorePassNotitie
Als u meer datacenters wilt toevoegen, kunt u de bovenstaande stappen herhalen, maar hebt u alleen de seed-knooppunten nodig.
Gebruik ten slotte de volgende CQL-query om de replicatiestrategie in elke keyspace bij te werken om alle datacenters in het cluster op te nemen:
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3};U moet ook de wachtwoordtabellen bijwerken:
ALTER KEYSPACE "system_auth" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3}
Problemen oplossen
Als er een fout wordt weergegeven bij het toepassen van machtigingen op uw Virtual Network met behulp van Azure CLI, zoals Kan gebruiker of service-principal niet vinden in grafiekdatabase voor 'e5007d2c-4b13-4a74-9b6a-605d99f03501', kunt u dezelfde machtiging handmatig toepassen vanuit de Azure Portal. Meer informatie over hoe u dit doet, vindt u hier.
Notitie
De Azure Cosmos DB roltoewijzing wordt alleen gebruikt voor implementatiedoeleinden. Azure Managed Instanced voor Apache Cassandra heeft geen back-Azure Cosmos DB.
Resources opschonen
Als u dit beheerde exemplaarcluster niet meer gaat gebruiken, verwijdert u het met de volgende stappen:
- Selecteer resourcegroepen in Azure Portal menu aan de linkerkant.
- Selecteer de resourcegroep die u eerder voor deze quickstart hebt gemaakt uit de lijst.
- Selecteer resourcegroep verwijderen in het deelvenster Overzicht van de resourcegroep.
- Selecteer in het volgende venster de naam van de resourcegroep die u wilt verwijderen en selecteer vervolgens Verwijderen.
Volgende stappen
In deze quickstart hebt u geleerd hoe u een hybride cluster maakt met behulp van Azure CLI en Azure Managed Instance voor Apache Cassandra. U kunt nu aan de slag met het cluster.
